1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; fill-column: 100 -*-
2 dnl configure.ac serves as input for the GNU autoconf package
3 dnl in order to create a configure script.
5 # The version number in the second argument to AC_INIT should be four numbers separated by
6 # periods. Some parts of the code requires the first one to be less than 128 and the others to be less
7 # than 256. The four numbers can optionally be followed by a period and a free-form string containing
8 # no spaces or periods, like "frobozz-mumble-42" or "alpha0". If the free-form string ends with one or
9 # several non-alphanumeric characters, those are split off and used only for the
10 # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea.
12 AC_INIT([LibreOffice],[7.5.0.0.alpha0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19 [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22 AC_MSG_ERROR([You have sourced config_host.mk in this shell. This may lead to trouble, please run in a fresh (login) shell.])
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
46 # Return value: $filteredlibs
51 # let's start with Fedora's paths for now
52 -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
53 # ignore it: on UNIXoids it is searched by default anyway
54 # but if it's given explicitly then it may override other paths
55 # (on macOS it would be an error to use it instead of SDK)
58 filteredlibs="$filteredlibs $f"
66 # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
67 # function is called also on Unix.
69 # Return value: $formatted_path and $formatted_path_unix.
71 # $formatted_path is the argument in Windows format, but using forward slashes instead of
72 # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
73 # or shell metacharacters).
75 # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
76 # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
79 # Errors out if 8.3 names are needed but aren't present for some of the path components.
83 # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
85 # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
87 # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
89 # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
91 # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
93 # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
95 # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
97 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
98 printf "PathFormat $1 ==> "
102 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
103 if test "$build_os" = "wsl"; then
104 formatted_path=$(echo "$formatted_path" | tr -d '\r')
108 # spaces,parentheses,brackets,braces are problematic in pathname
110 case "$formatted_path" in
111 *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
115 if test "$pf_conv_to_dos" = "yes"; then
116 if test "$build_os" = "wsl"; then
117 case "$formatted_path" in
119 formatted_path=$(wslpath -w "$formatted_path")
122 formatted_path=$($WSL_LO_HELPER --8.3 "$formatted_path")
123 elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
124 formatted_path=`cygpath -sm "$formatted_path"`
126 formatted_path=`cygpath -d "$formatted_path"`
128 if test $? -ne 0; then
129 AC_MSG_ERROR([path conversion failed for "$1".])
132 fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
133 fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
134 if test "$fp_count_slash$fp_count_colon" != "00"; then
135 if test "$fp_count_colon" = "0"; then
136 new_formatted_path=`realpath "$formatted_path"`
137 if test $? -ne 0; then
138 AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
140 formatted_path="$new_formatted_path"
143 if test "$build_os" = "wsl"; then
144 if test "$fp_count_colon" != "0"; then
145 formatted_path=$(wslpath "$formatted_path")
147 case "$formatted_path" in
152 formatted_path=$(wslpath -m $formatted_path)
153 case "$formatted_path" in
157 formatted_path="$formatted_path"$final_slash
161 formatted_path=$(wslpath -m "$formatted_path")
164 formatted_path=`cygpath -m "$formatted_path"`
166 if test $? -ne 0; then
167 AC_MSG_ERROR([path conversion failed for "$1".])
170 fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
171 if test "$fp_count_space" != "0"; then
172 AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
175 if test "$build_os" = "wsl"; then
176 # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
177 formatted_path_unix=$(wslpath "$formatted_path")
180 formatted_path_unix="$formatted_path"
186 # There appears to be no simple and portable method to get an absolute and
187 # canonical path, so we try creating the directory if does not exist and
188 # utilizing the shell and pwd.
190 # Args: $1: A possibly relative pathname
191 # Return value: $absolute_path
193 # Convert to unix path, mkdir would treat c:/path as a relative path.
195 local rel="$formatted_path_unix"
197 test ! -e "$rel" && mkdir -p "$rel"
198 if test -d "$rel" ; then
199 cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
200 absolute_path="$(pwd)"
203 AC_MSG_ERROR([Failed to resolve absolute path. "$rel" does not exist or is not a directory.])
207 WARNINGS_FILE=config.warn
208 WARNINGS_FILE_FOR_BUILD=config.Build.warn
209 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
213 if test "$have_WARNINGS" = "no"; then
214 echo "*************************************" > "$WARNINGS_FILE"
216 if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
217 dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
218 COLORWARN='*
\e@<:@1;33;40m WARNING
\e@<:@0m:'
220 COLORWARN="* WARNING :"
223 echo "$COLORWARN $@" >> "$WARNINGS_FILE"
226 dnl Some Mac User have the bad habit of letting a lot of crap
227 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
228 dnl that confuse the build.
229 dnl For the ones that use LODE, let's be nice and protect them
234 mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
235 dnl a common but nevertheless necessary thing that may be in a fancy
236 dnl path location is git, so make sure we have it
237 mac_git_path=`which git 2>/dev/null`
238 if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
239 mac_path="$mac_path:`dirname $mac_git_path`"
241 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
242 dnl path location is gpg, so make sure we find it
243 mac_gpg_path=`which gpg 2>/dev/null`
244 if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
245 mac_path="$mac_path:`dirname $mac_gpg_path`"
253 dnl semantically test a three digits version
254 dnl $1 - $3 = minimal version
255 dnl $4 - $6 = current version
257 check_semantic_version_three()
260 -o \( "$4" -eq "$1" -a "$5" -gt "$2" \) \
261 -o \( "$4" -eq "$1" -a "$5" -eq "$2" -a "$6" -ge "$3" \)
265 dnl calls check_semantic_version_three with digits in named variables $1_MAJOR, $1_MINOR, $1_TINY
266 dnl $1 = current version prefix, e.g. EMSCRIPTEN => EMSCRIPTEN_
267 dnl $2 = postfix to $1, e.g. MIN => EMSCRIPTEN_MIN_
269 check_semantic_version_three_prefixed()
271 eval local MIN_MAJOR="\$${1}_${2}_MAJOR"
272 eval local MIN_MINOR="\$${1}_${2}_MINOR"
273 eval local MIN_TINY="\$${1}_${2}_TINY"
274 eval local CUR_MAJOR="\$${1}_MAJOR"
275 eval local CUR_MINOR="\$${1}_MINOR"
276 eval local CUR_TINY="\$${1}_TINY"
277 check_semantic_version_three $MIN_MAJOR $MIN_MINOR $MIN_TINY $CUR_MAJOR $CUR_MINOR $CUR_TINY
281 echo "********************************************************************"
283 echo "* Running ${PACKAGE_NAME} build configuration."
285 echo "********************************************************************"
288 dnl ===================================================================
289 dnl checks build and host OSes
290 dnl do this before argument processing to allow for platform dependent defaults
291 dnl ===================================================================
293 # Check for WSL. But if --host is explicitly specified (to really do build for
294 # Linux on WSL) trust that.
295 if test -z "$host" -a -z "$build" -a "$(uname -r | grep -i Microsoft 2>/dev/null)" != ""; then
296 ac_cv_host="x86_64-pc-wsl"
297 ac_cv_host_cpu="x86_64"
299 ac_cv_build="$ac_cv_host"
300 ac_cv_build_cpu="$ac_cv_host_cpu"
301 ac_cv_build_os="$ac_cv_host_os"
303 # Emulation of Cygwin's cygpath command for WSL.
306 if test -n "$UNITTEST_WSL_CYGPATH"; then
307 echo -n cygpath "$@" "==> "
310 # Cygwin's real cygpath has a plethora of options but we use only a few here.
313 local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
316 while getopts dmuwlsp opt; do
319 AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
329 if test $# -ne 1; then
330 AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
337 if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
338 # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
340 if test -n "$opt_u"; then
341 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
346 # A Windows file in WSL format
347 input=$(wslpath -w "$input")
349 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
350 # Already in Windows format
353 input=$(wslpath -w "$input")
356 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
359 if test -n "$opt_d" -o -n "$opt_s"; then
360 input=$($WSL_LO_HELPER --8.3 "$input")
362 if test -n "$opt_m"; then
363 input="${input//\\//}"
370 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
377 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
383 if test -n "$UNITTEST_WSL_CYGPATH"; then
386 # Nothing special with these file names, just arbitrary ones picked to test with
387 cygpath -d /usr/lib64/ld-linux-x86-64.so.2
388 cygpath -w /usr/lib64/ld-linux-x86-64.so.2
389 cygpath -m /usr/lib64/ld-linux-x86-64.so.2
390 cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
391 # At least on my machine for instance this file does have an 8.3 name
392 cygpath -d /mnt/c/windows/WindowsUpdate.log
393 # But for instance this one doesn't
394 cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
395 cygpath -ws /mnt/c/windows/WindowsUpdate.log
396 cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
397 cygpath -ms /mnt/c/windows/WindowsUpdate.log
399 cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
400 cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
405 if test -z "$WSL_LO_HELPER"; then
406 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/wsl-lo-helper" ; then
407 WSL_LO_HELPER="$LODE_HOME/opt/bin/wsl-lo-helper"
408 elif test -x "/opt/lo/bin/wsl-lo-helper"; then
409 WSL_LO_HELPER="/opt/lo/bin/wsl-lo-helper"
412 if test -z "$WSL_LO_HELPER"; then
413 AC_MSG_ERROR([wsl-lo-helper not found. See solenv/wsl/README.])
420 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
424 # Use of PathFormat must be after AC_CANONICAL_BUILD above
426 printf "$formatted_path , $formatted_path_unix\n"
429 printf "$formatted_path , $formatted_path_unix\n"
431 PathFormat "$PROGRAMFILESX86"
432 printf "$formatted_path , $formatted_path_unix\n"
437 AC_MSG_CHECKING([for product name])
438 PRODUCTNAME="AC_PACKAGE_NAME"
439 if test -n "$with_product_name" -a "$with_product_name" != no; then
440 PRODUCTNAME="$with_product_name"
442 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
443 PRODUCTNAME="${PRODUCTNAME}Dev"
445 AC_MSG_RESULT([$PRODUCTNAME])
446 AC_SUBST(PRODUCTNAME)
447 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
448 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
450 dnl ===================================================================
451 dnl Our version is defined by the AC_INIT() at the top of this script.
452 dnl ===================================================================
454 AC_MSG_CHECKING([for package version])
455 if test -n "$with_package_version" -a "$with_package_version" != no; then
456 PACKAGE_VERSION="$with_package_version"
458 AC_MSG_RESULT([$PACKAGE_VERSION])
460 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
462 LIBO_VERSION_MAJOR=$1
463 LIBO_VERSION_MINOR=$2
464 LIBO_VERSION_MICRO=$3
465 LIBO_VERSION_PATCH=$4
467 LIBO_VERSION_SUFFIX=$5
469 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
470 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
471 # they get undoubled before actually passed to sed.
472 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
473 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
474 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
475 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
477 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
478 # three non-negative integers. Please find more information about CFBundleVersion at
479 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
481 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
482 # of at most three non-negative integers. Please find more information about
483 # CFBundleShortVersionString at
484 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
486 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
488 if test "$enable_macosx_sandbox" = yes; then
489 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
490 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
492 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
493 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
496 AC_SUBST(LIBO_VERSION_MAJOR)
497 AC_SUBST(LIBO_VERSION_MINOR)
498 AC_SUBST(LIBO_VERSION_MICRO)
499 AC_SUBST(LIBO_VERSION_PATCH)
500 AC_SUBST(LIBO_VERSION_SUFFIX)
501 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
502 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
503 AC_SUBST(MACOSX_BUNDLE_VERSION)
505 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
506 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
507 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
508 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
510 LIBO_THIS_YEAR=`date +%Y`
511 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
513 dnl ===================================================================
515 dnl ===================================================================
516 AC_MSG_CHECKING([for product version])
517 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
518 AC_MSG_RESULT([$PRODUCTVERSION])
519 AC_SUBST(PRODUCTVERSION)
522 # AC_PROG_EGREP doesn't set GREP on all systems as well
523 AC_PATH_PROG(GREP, grep)
531 dnl ======================================
532 dnl Required GObject introspection version
533 dnl ======================================
534 INTROSPECTION_REQUIRED_VERSION=1.32.0
536 dnl ===================================================================
537 dnl Search all the common names for GNU Make
538 dnl ===================================================================
539 AC_MSG_CHECKING([for GNU Make])
541 # try to use our own make if it is available and GNUMAKE was not already defined
542 if test -z "$GNUMAKE"; then
543 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
544 GNUMAKE="$LODE_HOME/opt/bin/make"
545 elif test -x "/opt/lo/bin/make"; then
546 GNUMAKE="/opt/lo/bin/make"
551 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
552 if test -n "$a"; then
553 $a --version 2> /dev/null | grep GNU 2>&1 > /dev/null
554 if test $? -eq 0; then
555 if test "$build_os" = "cygwin"; then
556 if test -n "$($a -v | grep 'Built for Windows')" ; then
557 GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
558 GNUMAKE_WIN_NATIVE="TRUE"
569 AC_MSG_RESULT($GNUMAKE)
570 if test -z "$GNUMAKE"; then
571 AC_MSG_ERROR([not found. install GNU Make.])
573 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
574 AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
578 win_short_path_for_make()
580 local short_path="$1"
581 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
582 cygpath -sm "$short_path"
584 cygpath -u "$(cygpath -d "$short_path")"
589 if test "$build_os" = "cygwin"; then
590 PathFormat "$SRC_ROOT"
591 SRC_ROOT="$formatted_path"
592 PathFormat "$BUILDDIR"
593 BUILDDIR="$formatted_path"
595 AC_MSG_CHECKING(for explicit COMSPEC)
596 if test -z "$COMSPEC"; then
597 AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
599 AC_MSG_RESULT([found: $COMSPEC])
606 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
607 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
608 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
610 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
611 AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
614 # need sed in os checks...
615 AC_PATH_PROGS(SED, sed)
616 if test -z "$SED"; then
617 AC_MSG_ERROR([install sed to run this script])
620 # Set the ENABLE_LTO variable
621 # ===================================================================
622 AC_MSG_CHECKING([whether to use link-time optimization])
623 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
632 AC_ARG_ENABLE(fuzz-options,
633 AS_HELP_STRING([--enable-fuzz-options],
634 [Randomly enable or disable each of those configurable options
635 that are supposed to be freely selectable without interdependencies,
636 or where bad interaction from interdependencies is automatically avoided.])
639 dnl ===================================================================
640 dnl When building for Android, --with-android-ndk,
641 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
643 dnl ===================================================================
645 AC_ARG_WITH(android-ndk,
646 AS_HELP_STRING([--with-android-ndk],
647 [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
650 AC_ARG_WITH(android-ndk-toolchain-version,
651 AS_HELP_STRING([--with-android-ndk-toolchain-version],
652 [Specify which toolchain version to use, of those present in the
653 Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
654 with_android_ndk_toolchain_version=clang5.0)
656 AC_ARG_WITH(android-sdk,
657 AS_HELP_STRING([--with-android-sdk],
658 [Specify location of the Android SDK. Mandatory when building for Android.]),
661 AC_ARG_WITH(android-api-level,
662 AS_HELP_STRING([--with-android-api-level],
663 [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
667 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
668 with_android_ndk="$SRC_ROOT/external/android-ndk"
670 if test -n "$with_android_ndk"; then
671 eval ANDROID_NDK_DIR=$with_android_ndk
673 # Set up a lot of pre-canned defaults
675 if test ! -f $ANDROID_NDK_DIR/RELEASE.TXT; then
676 if test ! -f $ANDROID_NDK_DIR/source.properties; then
677 AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_DIR.])
679 ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_DIR/source.properties`
681 ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_DIR/RELEASE.TXT`
683 if test -z "$ANDROID_NDK_VERSION"; then
684 AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
686 case $ANDROID_NDK_VERSION in
688 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
690 11.1.*|12.1.*|13.1.*|14.1.*)
691 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
693 16.*|17.*|18.*|19.*|20.*)
696 AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
697 add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
702 if test -n "$with_android_api_level" ; then
703 ANDROID_API_LEVEL="$with_android_api_level"
706 android_cpu=$host_cpu
707 if test $host_cpu = arm; then
708 android_platform_prefix=arm-linux-androideabi
709 android_gnu_prefix=$android_platform_prefix
710 LLVM_TRIPLE=armv7a-linux-androideabi
711 ANDROID_APP_ABI=armeabi-v7a
712 ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
713 elif test $host_cpu = aarch64; then
714 android_platform_prefix=aarch64-linux-android
715 android_gnu_prefix=$android_platform_prefix
716 LLVM_TRIPLE=$android_platform_prefix
717 # minimum android version that supports aarch64
718 if test "$ANDROID_API_LEVEL" -lt "21" ; then
721 ANDROID_APP_ABI=arm64-v8a
722 elif test $host_cpu = x86_64; then
723 android_platform_prefix=x86_64-linux-android
724 android_gnu_prefix=$android_platform_prefix
725 LLVM_TRIPLE=$android_platform_prefix
726 # minimum android version that supports x86_64
728 ANDROID_APP_ABI=x86_64
730 # host_cpu is something like "i386" or "i686" I guess, NDK uses
731 # "x86" in some contexts
733 android_platform_prefix=$android_cpu
734 android_gnu_prefix=i686-linux-android
735 LLVM_TRIPLE=$android_gnu_prefix
739 case "$with_android_ndk_toolchain_version" in
741 ANDROID_GCC_TOOLCHAIN_VERSION=4.9
744 AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
747 AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
749 # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
750 # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
751 # manage to link the (app-specific) single huge .so that is built for the app in
752 # android/source/ if there is debug information in a significant part of the object files.
753 # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
754 # all objects have been built with debug information.)
757 android_HOST_TAG=linux-x86_64
760 android_HOST_TAG=darwin-x86_64
763 AC_MSG_ERROR([We only support building for Android from Linux or macOS])
764 # ndk would also support windows and windows-x86_64
767 android_TOOLCHAIN=$ANDROID_NDK_DIR/toolchains/llvm/prebuilt/$android_HOST_TAG
768 ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
769 dnl TODO: NSS build uses it...
770 ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_DIR/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
771 AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
773 test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
774 test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
775 test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
776 test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
777 test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
779 ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
780 ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
781 if test "$ENABLE_LTO" = TRUE; then
782 # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
783 # $CC and $CXX when building external libraries
784 ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
787 ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
789 if test -z "$CC"; then
790 CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
793 if test -z "$CXX"; then
794 CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
798 AC_SUBST(ANDROID_NDK_DIR)
799 AC_SUBST(ANDROID_APP_ABI)
800 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
802 dnl ===================================================================
803 dnl --with-android-sdk
804 dnl ===================================================================
806 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
807 with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
809 if test -n "$with_android_sdk"; then
810 eval ANDROID_SDK_DIR=$with_android_sdk
811 PATH="$ANDROID_SDK_DIR/platform-tools:$ANDROID_SDK_DIR/tools:$PATH"
813 AC_SUBST(ANDROID_SDK_DIR)
815 AC_ARG_ENABLE([android-lok],
816 AS_HELP_STRING([--enable-android-lok],
817 [The Android app from the android/ subdir needs several tweaks all
818 over the place that break the LOK when used in the Online-based
819 Android app. This switch indicates that the intent of this build is
820 actually the Online-based, non-modified LOK.])
823 if test -n "$ANDROID_NDK_DIR" ; then
824 if test "$enable_android_lok" = yes; then
825 ENABLE_ANDROID_LOK=TRUE
826 AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
827 AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
829 AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
832 AC_SUBST([ENABLE_ANDROID_LOK])
834 libo_FUZZ_ARG_ENABLE([android-editing],
835 AS_HELP_STRING([--enable-android-editing],
836 [Enable the experimental editing feature on Android.])
838 ENABLE_ANDROID_EDITING=
839 if test "$enable_android_editing" = yes; then
840 ENABLE_ANDROID_EDITING=TRUE
842 AC_SUBST([ENABLE_ANDROID_EDITING])
844 disable_database_connectivity_dependencies()
847 enable_firebird_sdbc=no
848 enable_mariadb_sdbc=no
849 enable_postgresql_sdbc=no
850 enable_report_builder=no
853 # ===================================================================
855 # Start initial platform setup
857 # The using_* variables reflect platform support and should not be
858 # changed after the "End initial platform setup" block.
859 # This is also true for most test_* variables.
860 # ===================================================================
869 # There is currently just iOS not using salplug, so this explicitly enables it.
870 # must: using_freetype_fontconfig
871 # may: using_headless_plugin defaults to $using_freetype_fontconfig
874 # Default values, as such probably valid just for Linux, set
875 # differently below just for Mac OSX, but at least better than
876 # hardcoding these as we used to do. Much of this is duplicated also
877 # in solenv for old build system and for gbuild, ideally we should
878 # perhaps define stuff like this only here in configure.ac?
880 LINKFLAGSSHL="-shared"
884 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
887 INSTROOTCONTENTSUFFIX=
890 HOST_PLATFORM="$host"
892 host_cpu_for_clang="$host_cpu"
897 using_freetype_fontconfig=yes
902 dnl ===========================================================
903 dnl Check whether we're using Solaris 10 - SPARC or Intel.
904 dnl ===========================================================
905 AC_MSG_CHECKING([the Solaris operating system release])
906 _os_release=`echo $host_os | $SED -e s/solaris2\.//`
907 if test "$_os_release" -lt "10"; then
908 AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
910 AC_MSG_RESULT([ok ($_os_release)])
913 dnl Check whether we're using a SPARC or i386 processor
914 AC_MSG_CHECKING([the processor type])
915 if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
916 AC_MSG_RESULT([ok ($host_cpu)])
918 AC_MSG_ERROR([only SPARC and i386 processors are supported])
922 linux-gnu*|k*bsd*-gnu*|linux-musl*)
923 using_freetype_fontconfig=yes
928 if test "$enable_fuzzers" = yes; then
929 test_system_freetype=no
935 using_freetype_fontconfig=yes
941 # When building on Windows normally with MSVC under Cygwin,
942 # configure thinks that the host platform (the platform the
943 # built code will run on) is Cygwin, even if it obviously is
944 # Windows, which in Autoconf terminology is called
945 # "mingw32". (Which is misleading as MinGW is the name of the
946 # tool-chain, not an operating system.)
948 # Somewhat confusing, yes. But this configure script doesn't
949 # look at $host etc that much, it mostly uses its own $_os
950 # variable, set here in this case statement.
952 using_freetype_fontconfig=no
963 if test "$host_cpu" = "aarch64"; then
967 enable_firebird_sdbc=no
972 using_freetype_fontconfig=no
976 if test -n "$LODE_HOME" ; then
978 AC_MSG_NOTICE([sanitized the PATH to $PATH])
981 INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
982 INSTROOTCONTENTSUFFIX=/Contents
983 SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
984 # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
985 LINKFLAGSSHL="-dynamiclib -single_module"
992 # -undefined error is the default
996 # Apple's Clang uses "arm64"
997 host_cpu_for_clang=arm64
1002 using_freetype_fontconfig=no
1008 if test -n "$LODE_HOME" ; then
1010 AC_MSG_NOTICE([sanitized the PATH to $PATH])
1014 enable_mpl_subset=yes
1015 enable_lotuswordpro=no
1016 disable_database_connectivity_dependencies
1019 enable_extension_integration=no
1022 if test "$enable_ios_simulator" = "yes"; then
1023 host=x86_64-apple-darwin
1025 # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1026 LINKFLAGSSHL="-dynamiclib -single_module"
1033 # -undefined error is the default
1034 LINKFLAGSNOUNDEFS=""
1036 # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1037 # part, so use aarch64-apple-darwin for now.
1038 HOST_PLATFORM=aarch64-apple-darwin
1040 # Apple's Clang uses "arm64"
1041 host_cpu_for_clang=arm64
1045 using_freetype_fontconfig=yes
1048 AC_MSG_CHECKING([the FreeBSD operating system release])
1049 if test -n "$with_os_version"; then
1050 OSVERSION="$with_os_version"
1052 OSVERSION=`/sbin/sysctl -n kern.osreldate`
1054 AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1055 AC_MSG_CHECKING([which thread library to use])
1056 if test "$OSVERSION" -lt "500016"; then
1057 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1058 PTHREAD_LIBS="-pthread"
1059 elif test "$OSVERSION" -lt "502102"; then
1060 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1061 PTHREAD_LIBS="-lc_r"
1064 PTHREAD_LIBS="-pthread"
1066 AC_MSG_RESULT([$PTHREAD_LIBS])
1071 using_freetype_fontconfig=yes
1075 PTHREAD_LIBS="-pthread -lpthread"
1080 using_freetype_fontconfig=yes
1083 test_gstreamer_1_0=no
1084 PTHREAD_LIBS=-pthread
1089 using_freetype_fontconfig=yes
1091 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1092 PTHREAD_LIBS="-pthread"
1097 using_freetype_fontconfig=yes
1100 PTHREAD_LIBS="-pthread"
1105 # API exists, but seems not really usable since Android 7 AFAIK
1107 using_freetype_fontconfig=yes
1108 using_headless_plugin=no
1112 test_system_freetype=no
1114 disable_database_connectivity_dependencies
1115 enable_lotuswordpro=no
1116 enable_mpl_subset=yes
1117 enable_cairo_canvas=no
1127 using_freetype_fontconfig=yes
1136 enable_postgresql_sdbc=no
1137 enable_firebird_sdbc=no
1142 # API currently just exists in headers, not code
1144 using_freetype_fontconfig=yes
1148 test_split_debug=yes
1149 test_system_freetype=no
1150 enable_compiler_plugins=no
1151 enable_customtarget_components=yes
1154 enable_split_debug=yes
1155 enable_wasm_strip=yes
1157 with_theme="colibre"
1162 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1166 AC_SUBST(HOST_PLATFORM)
1168 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1169 AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1172 # Set defaults, if not set by platform
1173 test "${test_cups+set}" = set || test_cups="$using_x11"
1174 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1175 test "${test_gen+set}" = set || test_gen="$using_x11"
1176 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1177 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1178 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1179 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1180 # don't handle test_qt5, so it can disable test_kf5 later
1181 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1182 test "${test_randr+set}" = set || test_randr="$using_x11"
1183 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1184 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1186 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1187 # Make sure fontconfig and freetype test both either system or not
1188 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1189 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1191 # convenience / platform overriding "fixes"
1193 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1194 test "$test_kf5" = yes && test_qt5=yes
1195 test "$test_gtk3" != yes && enable_gtk3=no
1196 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1197 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1198 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1200 # Keep in sync with the above $using_x11 depending test default list
1206 test_gstreamer_1_0=no
1217 test "$using_x11" = yes && USING_X11=TRUE
1219 if test "$using_freetype_fontconfig" = yes; then
1220 USE_HEADLESS_CODE=TRUE
1221 if test "$using_headless_plugin" = yes; then
1222 AC_DEFINE(ENABLE_HEADLESS)
1223 ENABLE_HEADLESS=TRUE
1230 AC_SUBST(ENABLE_HEADLESS)
1231 AC_SUBST(USE_HEADLESS_CODE)
1233 AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
1234 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1235 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1236 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1238 # ===================================================================
1240 # End initial platform setup
1242 # ===================================================================
1244 if test "$_os" = "Android" ; then
1245 # Verify that the NDK and SDK options are proper
1246 if test -z "$with_android_ndk"; then
1247 AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1248 elif test ! -f "$ANDROID_NDK_DIR/meta/abis.json"; then
1249 AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1252 if test -z "$ANDROID_SDK_DIR"; then
1253 AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1254 elif test ! -d "$ANDROID_SDK_DIR/platforms"; then
1255 AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1259 if test "$_os" = "AIX"; then
1260 AC_PATH_PROG(GAWK, gawk)
1261 if test -z "$GAWK"; then
1262 AC_MSG_ERROR([gawk not found in \$PATH])
1266 AC_SUBST(SDKDIRNAME)
1268 AC_SUBST(PTHREAD_CFLAGS)
1269 AC_SUBST(PTHREAD_LIBS)
1271 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1272 # By default use the ones specified by our build system,
1273 # but explicit override is possible.
1274 AC_MSG_CHECKING(for explicit AFLAGS)
1275 if test -n "$AFLAGS"; then
1276 AC_MSG_RESULT([$AFLAGS])
1282 AC_MSG_CHECKING(for explicit CFLAGS)
1283 if test -n "$CFLAGS"; then
1284 AC_MSG_RESULT([$CFLAGS])
1290 AC_MSG_CHECKING(for explicit CXXFLAGS)
1291 if test -n "$CXXFLAGS"; then
1292 AC_MSG_RESULT([$CXXFLAGS])
1298 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1299 if test -n "$OBJCFLAGS"; then
1300 AC_MSG_RESULT([$OBJCFLAGS])
1306 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1307 if test -n "$OBJCXXFLAGS"; then
1308 AC_MSG_RESULT([$OBJCXXFLAGS])
1314 AC_MSG_CHECKING(for explicit LDFLAGS)
1315 if test -n "$LDFLAGS"; then
1316 AC_MSG_RESULT([$LDFLAGS])
1326 AC_SUBST(OBJCXXFLAGS)
1330 AC_SUBST(x_CXXFLAGS)
1331 AC_SUBST(x_OBJCFLAGS)
1332 AC_SUBST(x_OBJCXXFLAGS)
1335 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1336 my_original_CFLAGS=$CFLAGS
1337 my_original_CXXFLAGS=$CXXFLAGS
1338 my_original_CPPFLAGS=$CPPFLAGS
1340 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1341 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1342 dnl AC_PROG_CC internally.
1343 if test "$_os" != "WINNT"; then
1344 # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1348 if test -z "$CC_BASE"; then
1349 CC_BASE=`first_arg_basename "$CC"`
1353 if test "$_os" != "WINNT"; then
1354 AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1358 AC_SUBST(ENDIANNESS)
1360 if test "$usable_dlapi" != no; then
1361 AC_DEFINE([HAVE_DLAPI])
1362 if test "$test_unix_dlapi" != no; then
1364 AC_SEARCH_LIBS([dlsym], [dl],
1365 [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
1366 [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1368 AC_DEFINE([HAVE_UNIX_DLAPI])
1371 AC_SUBST(UNIX_DLAPI_LIBS)
1373 # Check for a (GNU) backtrace implementation
1374 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1375 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1376 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1378 AC_SEARCH_LIBS([backtrace], [libexecinfo],
1379 [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1380 [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1383 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1384 AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1387 dnl ===================================================================
1388 dnl Sanity checks for Emscripten SDK setup
1389 dnl ===================================================================
1391 EMSCRIPTEN_MIN_MAJOR=2
1392 EMSCRIPTEN_MIN_MINOR=0
1393 EMSCRIPTEN_MIN_TINY=31
1394 EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"
1396 if test "$_os" = "Emscripten"; then
1397 AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
1398 EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1399 EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1400 EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1401 EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1402 EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1404 check_semantic_version_three_prefixed EMSCRIPTEN MIN
1405 if test $? -eq 0; then
1406 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1408 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1412 if ! which emconfigure >/dev/null 2>&1; then
1413 AC_MSG_WARN([emconfigure must be in your \$PATH])
1416 if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1417 AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1420 EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1421 if ! test -x "$EMSDK_FILE_PACKAGER"; then
1422 AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1425 if test $EMSCRIPTEN_ERROR -ne 0; then
1426 AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1429 AC_SUBST(EMSDK_FILE_PACKAGER)
1431 ###############################################################################
1432 # Extensions switches --enable/--disable
1433 ###############################################################################
1434 # By default these should be enabled unless having extra dependencies.
1435 # If there is extra dependency over configure options then the enable should
1436 # be automagic based on whether the requiring feature is enabled or not.
1437 # All this options change anything only with --enable-extension-integration.
1439 # The name of this option and its help string makes it sound as if
1440 # extensions are built anyway, just not integrated in the installer,
1441 # if you use --disable-extension-integration. Is that really the
1444 AC_ARG_ENABLE(ios-simulator,
1445 AS_HELP_STRING([--enable-ios-simulator],
1446 [build for iOS simulator])
1449 libo_FUZZ_ARG_ENABLE(extension-integration,
1450 AS_HELP_STRING([--disable-extension-integration],
1451 [Disable integration of the built extensions in the installer of the
1452 product. Use this switch to disable the integration.])
1455 AC_ARG_ENABLE(avmedia,
1456 AS_HELP_STRING([--disable-avmedia],
1457 [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1458 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1460 AC_ARG_ENABLE(database-connectivity,
1461 AS_HELP_STRING([--disable-database-connectivity],
1462 [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1465 # This doesn't mean not building (or "integrating") extensions
1466 # (although it probably should; i.e. it should imply
1467 # --disable-extension-integration I guess), it means not supporting
1468 # any extension mechanism at all
1469 libo_FUZZ_ARG_ENABLE(extensions,
1470 AS_HELP_STRING([--disable-extensions],
1471 [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1474 AC_ARG_ENABLE(scripting,
1475 AS_HELP_STRING([--disable-scripting],
1476 [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1477 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1479 # This is mainly for Android and iOS, but could potentially be used in some
1480 # special case otherwise, too, so factored out as a separate setting
1482 AC_ARG_ENABLE(dynamic-loading,
1483 AS_HELP_STRING([--disable-dynamic-loading],
1484 [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1487 libo_FUZZ_ARG_ENABLE(report-builder,
1488 AS_HELP_STRING([--disable-report-builder],
1489 [Disable the Report Builder.])
1492 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1493 AS_HELP_STRING([--enable-ext-wiki-publisher],
1494 [Enable the Wiki Publisher extension.])
1497 libo_FUZZ_ARG_ENABLE(lpsolve,
1498 AS_HELP_STRING([--disable-lpsolve],
1499 [Disable compilation of the lp solve solver ])
1501 libo_FUZZ_ARG_ENABLE(coinmp,
1502 AS_HELP_STRING([--disable-coinmp],
1503 [Disable compilation of the CoinMP solver ])
1506 libo_FUZZ_ARG_ENABLE(pdfimport,
1507 AS_HELP_STRING([--disable-pdfimport],
1508 [Disable building the PDF import feature.])
1511 libo_FUZZ_ARG_ENABLE(pdfium,
1512 AS_HELP_STRING([--disable-pdfium],
1513 [Disable building PDFium. Results in unsecure PDF signature verification.])
1516 libo_FUZZ_ARG_ENABLE(skia,
1517 AS_HELP_STRING([--disable-skia],
1518 [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1521 ###############################################################################
1523 dnl ---------- *** ----------
1525 libo_FUZZ_ARG_ENABLE(mergelibs,
1526 AS_HELP_STRING([--enable-mergelibs],
1527 [Merge several of the smaller libraries into one big, "merged", one.])
1530 libo_FUZZ_ARG_ENABLE(breakpad,
1531 AS_HELP_STRING([--enable-breakpad],
1532 [Enables breakpad for crash reporting.])
1535 libo_FUZZ_ARG_ENABLE(crashdump,
1536 AS_HELP_STRING([--disable-crashdump],
1537 [Disable dump.ini and dump-file, when --enable-breakpad])
1540 AC_ARG_ENABLE(fetch-external,
1541 AS_HELP_STRING([--disable-fetch-external],
1542 [Disables fetching external tarballs from web sources.])
1545 AC_ARG_ENABLE(fuzzers,
1546 AS_HELP_STRING([--enable-fuzzers],
1547 [Enables building libfuzzer targets for fuzz testing.])
1550 libo_FUZZ_ARG_ENABLE(pch,
1551 AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1552 [Enables precompiled header support for C++. Forced default on Windows/VC build.
1553 Using 'system' will include only external headers, 'base' will add also headers
1554 from base modules, 'normal' will also add all headers except from the module built,
1555 'full' will use all suitable headers even from a module itself.])
1558 libo_FUZZ_ARG_ENABLE(epm,
1559 AS_HELP_STRING([--enable-epm],
1560 [LibreOffice includes self-packaging code, that requires epm, however epm is
1561 useless for large scale package building.])
1564 libo_FUZZ_ARG_ENABLE(odk,
1565 AS_HELP_STRING([--enable-odk],
1566 [Enable building the Office Development Kit, the part that extensions need to build against])
1569 AC_ARG_ENABLE(mpl-subset,
1570 AS_HELP_STRING([--enable-mpl-subset],
1571 [Don't compile any pieces which are not MPL or more liberally licensed])
1574 libo_FUZZ_ARG_ENABLE(evolution2,
1575 AS_HELP_STRING([--enable-evolution2],
1576 [Allows the built-in evolution 2 addressbook connectivity build to be
1580 AC_ARG_ENABLE(avahi,
1581 AS_HELP_STRING([--enable-avahi],
1582 [Determines whether to use Avahi to advertise Impress to remote controls.])
1585 libo_FUZZ_ARG_ENABLE(werror,
1586 AS_HELP_STRING([--enable-werror],
1587 [Turn warnings to errors. (Has no effect in modules where the treating
1588 of warnings as errors is disabled explicitly.)]),
1591 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1592 AS_HELP_STRING([--enable-assert-always-abort],
1593 [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1596 libo_FUZZ_ARG_ENABLE(dbgutil,
1597 AS_HELP_STRING([--enable-dbgutil],
1598 [Provide debugging support from --enable-debug and include additional debugging
1599 utilities such as object counting or more expensive checks.
1600 This is the recommended option for developers.
1601 Note that this makes the build ABI incompatible, it is not possible to mix object
1602 files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1604 libo_FUZZ_ARG_ENABLE(debug,
1605 AS_HELP_STRING([--enable-debug],
1606 [Include debugging information, disable compiler optimization and inlining plus
1607 extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1609 libo_FUZZ_ARG_ENABLE(split-debug,
1610 AS_HELP_STRING([--disable-split-debug],
1611 [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1612 saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1614 libo_FUZZ_ARG_ENABLE(gdb-index,
1615 AS_HELP_STRING([--disable-gdb-index],
1616 [Disables creating debug information in the gdb index format, which makes gdb start faster.
1617 The feature requires a linker that supports the --gdb-index option.]))
1619 libo_FUZZ_ARG_ENABLE(sal-log,
1620 AS_HELP_STRING([--enable-sal-log],
1621 [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1623 libo_FUZZ_ARG_ENABLE(symbols,
1624 AS_HELP_STRING([--enable-symbols],
1625 [Generate debug information.
1626 By default, enabled for --enable-debug and --enable-dbgutil, disabled
1627 otherwise. It is possible to explicitly specify gbuild build targets
1628 (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1629 everything in the directory; there is no ordering, more specific overrides
1630 more general, and disabling takes precedence).
1631 Example: --enable-symbols="all -sw/ -Library_sc".]))
1633 libo_FUZZ_ARG_ENABLE(optimized,
1634 AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1635 [Whether to compile with optimization flags.
1636 By default, disabled for --enable-debug and --enable-dbgutil, enabled
1637 otherwise. Using 'debug' will try to use only optimizations that should
1638 not interfere with debugging. For Emscripten we default to optimized (-O1)
1639 debug build, as otherwise binaries become too large.]))
1641 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1642 AS_HELP_STRING([--disable-runtime-optimizations],
1643 [Statically disable certain runtime optimizations (like rtl/alloc.h or
1644 JVM JIT) that are known to interact badly with certain dynamic analysis
1645 tools (like -fsanitize=address or Valgrind). By default, disabled iff
1646 CC contains "-fsanitize=*". (For Valgrind, those runtime optimizations
1647 are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1649 AC_ARG_WITH(valgrind,
1650 AS_HELP_STRING([--with-valgrind],
1651 [Make availability of Valgrind headers a hard requirement.]))
1653 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1654 AS_HELP_STRING([--enable-compiler-plugins],
1655 [Enable compiler plugins that will perform additional checks during
1656 building. Enabled automatically by --enable-dbgutil.
1657 Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1658 COMPILER_PLUGINS_DEBUG=
1659 if test "$enable_compiler_plugins" = debug; then
1660 enable_compiler_plugins=yes
1661 COMPILER_PLUGINS_DEBUG=TRUE
1664 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1665 AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1666 [Disable use of precompiled headers when running the Clang compiler plugin analyzer. Not
1667 relevant in the --disable-compiler-plugins case.]))
1669 libo_FUZZ_ARG_ENABLE(ooenv,
1670 AS_HELP_STRING([--enable-ooenv],
1671 [Enable ooenv for the instdir installation.]))
1674 AS_HELP_STRING([--enable-lto],
1675 [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1676 longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1679 AC_ARG_ENABLE(python,
1680 AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1681 [Enables or disables Python support at run-time.
1682 Also specifies what Python to use at build-time.
1683 'fully-internal' even forces the internal version for uses of Python
1685 On macOS the only choices are
1686 'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1689 libo_FUZZ_ARG_ENABLE(gtk3,
1690 AS_HELP_STRING([--disable-gtk3],
1691 [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1692 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1695 AS_HELP_STRING([--enable-gtk4],
1696 [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1698 AC_ARG_ENABLE(introspection,
1699 AS_HELP_STRING([--enable-introspection],
1700 [Generate files for GObject introspection. Requires --enable-gtk3. (Typically used by
1701 Linux distributions.)]))
1703 AC_ARG_ENABLE(split-app-modules,
1704 AS_HELP_STRING([--enable-split-app-modules],
1705 [Split file lists for app modules, e.g. base, calc.
1706 Has effect only with make distro-pack-install]),
1709 AC_ARG_ENABLE(split-opt-features,
1710 AS_HELP_STRING([--enable-split-opt-features],
1711 [Split file lists for some optional features, e.g. pyuno, testtool.
1712 Has effect only with make distro-pack-install]),
1715 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1716 AS_HELP_STRING([--disable-cairo-canvas],
1717 [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1720 libo_FUZZ_ARG_ENABLE(dbus,
1721 AS_HELP_STRING([--disable-dbus],
1722 [Determines whether to enable features that depend on dbus.
1723 e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1724 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1726 libo_FUZZ_ARG_ENABLE(sdremote,
1727 AS_HELP_STRING([--disable-sdremote],
1728 [Determines whether to enable Impress remote control (i.e. the server component).]),
1729 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1731 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1732 AS_HELP_STRING([--disable-sdremote-bluetooth],
1733 [Determines whether to build sdremote with bluetooth support.
1734 Requires dbus on Linux.]))
1736 libo_FUZZ_ARG_ENABLE(gio,
1737 AS_HELP_STRING([--disable-gio],
1738 [Determines whether to use the GIO support.]),
1739 ,test "${enable_gio+set}" = set || enable_gio=yes)
1742 AS_HELP_STRING([--enable-qt5],
1743 [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1748 AS_HELP_STRING([--enable-qt6],
1749 [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1754 AS_HELP_STRING([--enable-kf5],
1755 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1756 KF5 are available.]),
1759 AC_ARG_ENABLE(gtk3_kde5,
1760 AS_HELP_STRING([--enable-gtk3-kde5],
1761 [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1762 platforms where Gtk3, Qt5 and Plasma is available.]),
1766 AS_HELP_STRING([--enable-gen],
1767 [To select the gen backend in case of --disable-dynamic-loading.
1768 Per default auto-enabled when X11 is used.]),
1769 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1772 AS_HELP_STRING([--disable-gui],
1773 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1776 libo_FUZZ_ARG_ENABLE(randr,
1777 AS_HELP_STRING([--disable-randr],
1778 [Disable RandR support in the vcl project.]),
1779 ,test "${enable_randr+set}" = set || enable_randr=yes)
1781 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1782 AS_HELP_STRING([--disable-gstreamer-1-0],
1783 [Disable building with the gstreamer 1.0 avmedia backend.]),
1784 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1786 libo_FUZZ_ARG_ENABLE([eot],
1787 [AS_HELP_STRING([--enable-eot],
1788 [Enable support for Embedded OpenType fonts.])],
1789 ,test "${enable_eot+set}" = set || enable_eot=no)
1791 libo_FUZZ_ARG_ENABLE(cve-tests,
1792 AS_HELP_STRING([--disable-cve-tests],
1793 [Prevent CVE tests to be executed]),
1796 AC_ARG_ENABLE(build-opensymbol,
1797 AS_HELP_STRING([--enable-build-opensymbol],
1798 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1799 fontforge installed.]),
1802 AC_ARG_ENABLE(dependency-tracking,
1803 AS_HELP_STRING([--enable-dependency-tracking],
1804 [Do not reject slow dependency extractors.])[
1805 --disable-dependency-tracking
1806 Disables generation of dependency information.
1807 Speed up one-time builds.],
1810 AC_ARG_ENABLE(icecream,
1811 AS_HELP_STRING([--enable-icecream],
1812 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1813 It defaults to /opt/icecream for the location of the icecream gcc/g++
1814 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1818 AS_HELP_STRING([--enable-ld=<linker>],
1819 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1820 By default tries to use the best linker possible, use --disable-ld to use the default linker.
1821 If <linker> contains any ':', the part before the first ':' is used as the value of
1822 -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1823 needed for Clang 12).]),
1826 libo_FUZZ_ARG_ENABLE(cups,
1827 AS_HELP_STRING([--disable-cups],
1828 [Do not build cups support.])
1831 AC_ARG_ENABLE(ccache,
1832 AS_HELP_STRING([--disable-ccache],
1833 [Do not try to use ccache automatically.
1834 By default we will try to detect if ccache is available; in that case if
1835 CC/CXX are not yet set, and --enable-icecream is not given, we
1836 attempt to use ccache. --disable-ccache disables ccache completely.
1837 Additionally ccache's depend mode is enabled if possible,
1838 use --enable-ccache=nodepend to enable ccache without depend mode.
1842 AC_ARG_ENABLE(z7-debug,
1843 AS_HELP_STRING([--enable-z7-debug],
1844 [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1845 more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1846 Enabled by default if ccache is detected.]))
1848 libo_FUZZ_ARG_ENABLE(online-update,
1849 AS_HELP_STRING([--enable-online-update],
1850 [Enable the online update service that will check for new versions of
1851 LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1852 If the value is "mar", the experimental Mozilla-like update will be
1853 enabled instead of the traditional update mechanism.]),
1856 AC_ARG_WITH(update-config,
1857 AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1858 [Path to the update config ini file]))
1860 libo_FUZZ_ARG_ENABLE(extension-update,
1861 AS_HELP_STRING([--disable-extension-update],
1862 [Disable possibility to update installed extensions.]),
1865 libo_FUZZ_ARG_ENABLE(release-build,
1866 AS_HELP_STRING([--enable-release-build],
1867 [Enable release build. Note that the "release build" choice is orthogonal to
1868 whether symbols are present, debug info is generated, or optimization
1870 See http://wiki.documentfoundation.org/Development/DevBuild]),
1873 AC_ARG_ENABLE(windows-build-signing,
1874 AS_HELP_STRING([--enable-windows-build-signing],
1875 [Enable signing of windows binaries (*.exe, *.dll)]),
1878 AC_ARG_ENABLE(silent-msi,
1879 AS_HELP_STRING([--enable-silent-msi],
1880 [Enable MSI with LIMITUI=1 (silent install).]),
1883 AC_ARG_ENABLE(macosx-code-signing,
1884 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1885 [Sign executables, dylibs, frameworks and the app bundle. If you
1886 don't provide an identity the first suitable certificate
1887 in your keychain is used.]),
1890 AC_ARG_ENABLE(macosx-package-signing,
1891 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1892 [Create a .pkg suitable for uploading to the Mac App Store and sign
1893 it. If you don't provide an identity the first suitable certificate
1894 in your keychain is used.]),
1897 AC_ARG_ENABLE(macosx-sandbox,
1898 AS_HELP_STRING([--enable-macosx-sandbox],
1899 [Make the app bundle run in a sandbox. Requires code signing.
1900 Is required by apps distributed in the Mac App Store, and implies
1901 adherence to App Store rules.]),
1904 AC_ARG_WITH(macosx-bundle-identifier,
1905 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1906 [Define the macOS bundle identifier. Default is the somewhat weird
1907 org.libreoffice.script ("script", huh?).]),
1908 ,with_macosx_bundle_identifier=org.libreoffice.script)
1910 AC_ARG_WITH(macosx-provisioning-profile,
1911 AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1912 [Specify the path to a provisioning profile to use]),
1915 AC_ARG_WITH(product-name,
1916 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1917 [Define the product name. Default is AC_PACKAGE_NAME.]),
1918 ,with_product_name=$PRODUCTNAME)
1920 libo_FUZZ_ARG_ENABLE(community-flavor,
1921 AS_HELP_STRING([--disable-community-flavor],
1922 [Disable the Community branding.]),
1925 AC_ARG_WITH(package-version,
1926 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1927 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1930 libo_FUZZ_ARG_ENABLE(readonly-installset,
1931 AS_HELP_STRING([--enable-readonly-installset],
1932 [Prevents any attempts by LibreOffice to write into its installation. That means
1933 at least that no "system-wide" extensions can be added. Partly experimental work in
1934 progress, probably not fully implemented. Always enabled for macOS.]),
1937 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1938 AS_HELP_STRING([--disable-mariadb-sdbc],
1939 [Disable the build of the MariaDB/MySQL-SDBC driver.])
1942 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1943 AS_HELP_STRING([--disable-postgresql-sdbc],
1944 [Disable the build of the PostgreSQL-SDBC driver.])
1947 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1948 AS_HELP_STRING([--disable-lotuswordpro],
1949 [Disable the build of the Lotus Word Pro filter.]),
1950 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1952 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1953 AS_HELP_STRING([--disable-firebird-sdbc],
1954 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1955 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1957 AC_ARG_ENABLE(bogus-pkg-config,
1958 AS_HELP_STRING([--enable-bogus-pkg-config],
1959 [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.]),
1962 AC_ARG_ENABLE(openssl,
1963 AS_HELP_STRING([--disable-openssl],
1964 [Disable using libssl/libcrypto from OpenSSL. If disabled,
1965 components will use NSS. Work in progress,
1966 use only if you are hacking on it.]),
1967 ,enable_openssl=yes)
1969 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1970 AS_HELP_STRING([--enable-cipher-openssl-backend],
1971 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1972 Requires --enable-openssl.]))
1975 AS_HELP_STRING([--disable-nss],
1976 [Disable using NSS. If disabled,
1977 components will use openssl. Work in progress,
1978 use only if you are hacking on it.]),
1981 AC_ARG_ENABLE(library-bin-tar,
1982 AS_HELP_STRING([--enable-library-bin-tar],
1983 [Enable the building and reused of tarball of binary build for some 'external' libraries.
1984 Some libraries can save their build result in a tarball
1985 stored in TARFILE_LOCATION. That binary tarball is
1986 uniquely identified by the source tarball,
1987 the content of the config_host.mk file and the content
1988 of the top-level directory in core for that library
1989 If this option is enabled, then if such a tarfile exist, it will be untarred
1990 instead of the source tarfile, and the build step will be skipped for that
1992 If a proper tarfile does not exist, then the normal source-based
1993 build is done for that library and a proper binary tarfile is created
1994 for the next time.]),
1997 AC_ARG_ENABLE(dconf,
1998 AS_HELP_STRING([--disable-dconf],
1999 [Disable the dconf configuration backend (enabled by default where
2002 libo_FUZZ_ARG_ENABLE(formula-logger,
2004 [--enable-formula-logger],
2005 [Enable formula logger for logging formula calculation flow in Calc.]
2010 AS_HELP_STRING([--disable-ldap],
2011 [Disable LDAP support.]),
2014 AC_ARG_ENABLE(opencl,
2015 AS_HELP_STRING([--disable-opencl],
2016 [Disable OpenCL support.]),
2019 libo_FUZZ_ARG_ENABLE(librelogo,
2020 AS_HELP_STRING([--disable-librelogo],
2021 [Do not build LibreLogo.]),
2022 ,enable_librelogo=yes)
2024 AC_ARG_ENABLE(wasm-strip,
2025 AS_HELP_STRING([--enable-wasm-strip],
2026 [Strip the static build like for WASM/emscripten platform.]),
2029 AC_ARG_WITH(main-module,
2030 AS_HELP_STRING([--with-main-module=<writer/calc>],
2031 [Specify which main module to build for wasm.
2032 Default value is 'writer'.]),
2035 AC_ARG_ENABLE(wasm-exceptions,
2036 AS_HELP_STRING([--enable-wasm-exceptions],
2037 [Build with native WASM exceptions (AKA -fwasm-exceptions),
2038 matter of fact, this is currently not finished by any implementation)
2039 (see https://webassembly.org/roadmap/ for the current state]),
2042 AC_ARG_ENABLE(xmlhelp,
2043 AS_HELP_STRING([--disable-xmlhelp],
2044 [Disable XML help support]),
2045 ,enable_xmlhelp=yes)
2047 AC_ARG_ENABLE(customtarget-components,
2048 AS_HELP_STRING([--enable-customtarget-components],
2049 [Generates the static UNO object constructor mapping from the build.]))
2051 AC_ARG_ENABLE(float_device_pixel,
2052 AS_HELP_STRING([--enable-float-device-pixel],
2053 [Uses doubles for VCL device coordinates instead of 32-bit integers.]),
2056 dnl ===================================================================
2057 dnl Optional Packages (--with/without-)
2058 dnl ===================================================================
2060 AC_ARG_WITH(gcc-home,
2061 AS_HELP_STRING([--with-gcc-home],
2062 [Specify the location of gcc/g++ manually. This can be used in conjunction
2063 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2064 non-default path.]),
2067 AC_ARG_WITH(gnu-patch,
2068 AS_HELP_STRING([--with-gnu-patch],
2069 [Specify location of GNU patch on Solaris or FreeBSD.]),
2072 AC_ARG_WITH(build-platform-configure-options,
2073 AS_HELP_STRING([--with-build-platform-configure-options],
2074 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2078 AS_HELP_STRING([--with-gnu-cp],
2079 [Specify location of GNU cp on Solaris or FreeBSD.]),
2082 AC_ARG_WITH(external-tar,
2083 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2084 [Specify an absolute path of where to find (and store) tarfiles.]),
2085 TARFILE_LOCATION=$withval ,
2088 AC_ARG_WITH(referenced-git,
2089 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2090 [Specify another checkout directory to reference. This makes use of
2091 git submodule update --reference, and saves a lot of diskspace
2092 when having multiple trees side-by-side.]),
2093 GIT_REFERENCE_SRC=$withval ,
2096 AC_ARG_WITH(linked-git,
2097 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2098 [Specify a directory where the repositories of submodules are located.
2099 This uses a method similar to git-new-workdir to get submodules.]),
2100 GIT_LINK_SRC=$withval ,
2103 AC_ARG_WITH(galleries,
2104 AS_HELP_STRING([--with-galleries],
2105 [Specify how galleries should be built. It is possible either to
2106 build these internally from source ("build"),
2107 or to disable them ("no")]),
2111 AS_HELP_STRING([--with-theme="theme1 theme2..."],
2112 [Choose which themes to include. By default those themes with an '*' are included.
2113 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2114 *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2115 *elementary, *elementary_svg,
2116 *karasa_jaga, *karasa_jaga_svg,
2117 *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2118 *sukapura, *sukapura_svg.]),
2121 libo_FUZZ_ARG_WITH(helppack-integration,
2122 AS_HELP_STRING([--without-helppack-integration],
2123 [It will not integrate the helppacks to the installer
2124 of the product. Please use this switch to use the online help
2125 or separate help packages.]),
2128 libo_FUZZ_ARG_WITH(fonts,
2129 AS_HELP_STRING([--without-fonts],
2130 [LibreOffice includes some third-party fonts to provide a reliable basis for
2131 help content, templates, samples, etc. When these fonts are already
2132 known to be available on the system then you should use this option.]),
2136 AS_HELP_STRING([--with-epm],
2137 [Decides which epm to use. Default is to use the one from the system if
2138 one is built. When either this is not there or you say =internal epm
2142 AC_ARG_WITH(package-format,
2143 AS_HELP_STRING([--with-package-format],
2144 [Specify package format(s) for LibreOffice installation sets. The
2145 implicit --without-package-format leads to no installation sets being
2146 generated. Possible values: aix, archive, bsd, deb, dmg,
2147 installed, msi, pkg, and rpm.
2148 Example: --with-package-format='deb rpm']),
2152 AS_HELP_STRING([--with-tls],
2153 [Decides which TLS/SSL and cryptographic implementations to use for
2154 LibreOffice's code. Notice that this doesn't apply for depending
2155 libraries like "curl", for example. Default is to use NSS
2156 although OpenSSL is also possible. Notice that selecting NSS restricts
2157 the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
2158 restrict by now the usage of NSS in LO's code. Possible values:
2159 openssl, nss. Example: --with-tls="nss"]),
2162 AC_ARG_WITH(system-libs,
2163 AS_HELP_STRING([--with-system-libs],
2164 [Use libraries already on system -- enables all --with-system-* flags.]),
2167 AC_ARG_WITH(system-bzip2,
2168 AS_HELP_STRING([--with-system-bzip2],
2169 [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2170 [with_system_bzip2="$with_system_libs"])
2172 AC_ARG_WITH(system-headers,
2173 AS_HELP_STRING([--with-system-headers],
2174 [Use headers already on system -- enables all --with-system-* flags for
2175 external packages whose headers are the only entities used i.e.
2176 boost/odbc/sane-header(s).]),,
2177 [with_system_headers="$with_system_libs"])
2179 AC_ARG_WITH(system-jars,
2180 AS_HELP_STRING([--without-system-jars],
2181 [When building with --with-system-libs, also the needed jars are expected
2182 on the system. Use this to disable that]),,
2183 [with_system_jars="$with_system_libs"])
2185 AC_ARG_WITH(system-cairo,
2186 AS_HELP_STRING([--with-system-cairo],
2187 [Use cairo libraries already on system. Happens automatically for
2188 (implicit) --enable-gtk3.]))
2190 AC_ARG_WITH(system-epoxy,
2191 AS_HELP_STRING([--with-system-epoxy],
2192 [Use epoxy libraries already on system. Happens automatically for
2193 (implicit) --enable-gtk3.]),,
2194 [with_system_epoxy="$with_system_libs"])
2196 AC_ARG_WITH(myspell-dicts,
2197 AS_HELP_STRING([--with-myspell-dicts],
2198 [Adds myspell dictionaries to the LibreOffice installation set]),
2201 AC_ARG_WITH(system-dicts,
2202 AS_HELP_STRING([--without-system-dicts],
2203 [Do not use dictionaries from system paths.]),
2206 AC_ARG_WITH(external-dict-dir,
2207 AS_HELP_STRING([--with-external-dict-dir],
2208 [Specify external dictionary dir.]),
2211 AC_ARG_WITH(external-hyph-dir,
2212 AS_HELP_STRING([--with-external-hyph-dir],
2213 [Specify external hyphenation pattern dir.]),
2216 AC_ARG_WITH(external-thes-dir,
2217 AS_HELP_STRING([--with-external-thes-dir],
2218 [Specify external thesaurus dir.]),
2221 AC_ARG_WITH(system-zlib,
2222 AS_HELP_STRING([--with-system-zlib],
2223 [Use zlib already on system.]),,
2224 [with_system_zlib=auto])
2226 AC_ARG_WITH(system-jpeg,
2227 AS_HELP_STRING([--with-system-jpeg],
2228 [Use jpeg already on system.]),,
2229 [with_system_jpeg="$with_system_libs"])
2231 AC_ARG_WITH(system-expat,
2232 AS_HELP_STRING([--with-system-expat],
2233 [Use expat already on system.]),,
2234 [with_system_expat="$with_system_libs"])
2236 AC_ARG_WITH(system-libxml,
2237 AS_HELP_STRING([--with-system-libxml],
2238 [Use libxml/libxslt already on system.]),,
2239 [with_system_libxml=auto])
2241 AC_ARG_WITH(system-openldap,
2242 AS_HELP_STRING([--with-system-openldap],
2243 [Use the OpenLDAP LDAP SDK already on system.]),,
2244 [with_system_openldap="$with_system_libs"])
2246 libo_FUZZ_ARG_ENABLE(poppler,
2247 AS_HELP_STRING([--disable-poppler],
2248 [Disable building Poppler.])
2251 AC_ARG_WITH(system-poppler,
2252 AS_HELP_STRING([--with-system-poppler],
2253 [Use system poppler (only needed for PDF import).]),,
2254 [with_system_poppler="$with_system_libs"])
2256 AC_ARG_WITH(system-abseil,
2257 AS_HELP_STRING([--with-system-abseil],
2258 [Use the abseil libraries already on system.]),,
2259 [with_system_abseil="$with_system_libs"])
2261 AC_ARG_WITH(system-openjpeg,
2262 AS_HELP_STRING([--with-system-openjpeg],
2263 [Use the OpenJPEG library already on system.]),,
2264 [with_system_openjpeg="$with_system_libs"])
2266 libo_FUZZ_ARG_ENABLE(gpgmepp,
2267 AS_HELP_STRING([--disable-gpgmepp],
2268 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2271 AC_ARG_WITH(system-gpgmepp,
2272 AS_HELP_STRING([--with-system-gpgmepp],
2273 [Use gpgmepp already on system]),,
2274 [with_system_gpgmepp="$with_system_libs"])
2276 AC_ARG_WITH(system-mariadb,
2277 AS_HELP_STRING([--with-system-mariadb],
2278 [Use MariaDB/MySQL libraries already on system.]),,
2279 [with_system_mariadb="$with_system_libs"])
2281 AC_ARG_ENABLE(bundle-mariadb,
2282 AS_HELP_STRING([--enable-bundle-mariadb],
2283 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2286 AC_ARG_WITH(system-postgresql,
2287 AS_HELP_STRING([--with-system-postgresql],
2288 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2289 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2290 [with_system_postgresql="$with_system_libs"])
2292 AC_ARG_WITH(libpq-path,
2293 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2294 [Use this PostgreSQL C interface (libpq) installation for building
2295 the PostgreSQL-SDBC extension.]),
2298 AC_ARG_WITH(system-firebird,
2299 AS_HELP_STRING([--with-system-firebird],
2300 [Use Firebird libraries already on system, for building the Firebird-SDBC
2301 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2302 [with_system_firebird="$with_system_libs"])
2304 AC_ARG_WITH(system-libtommath,
2305 AS_HELP_STRING([--with-system-libtommath],
2306 [Use libtommath already on system]),,
2307 [with_system_libtommath="$with_system_libs"])
2309 AC_ARG_WITH(system-hsqldb,
2310 AS_HELP_STRING([--with-system-hsqldb],
2311 [Use hsqldb already on system.]))
2313 AC_ARG_WITH(hsqldb-jar,
2314 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2315 [Specify path to jarfile manually.]),
2316 HSQLDB_JAR=$withval)
2318 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2319 AS_HELP_STRING([--disable-scripting-beanshell],
2320 [Disable support for scripts in BeanShell.]),
2324 AC_ARG_WITH(system-beanshell,
2325 AS_HELP_STRING([--with-system-beanshell],
2326 [Use beanshell already on system.]),,
2327 [with_system_beanshell="$with_system_jars"])
2329 AC_ARG_WITH(beanshell-jar,
2330 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2331 [Specify path to jarfile manually.]),
2334 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2335 AS_HELP_STRING([--disable-scripting-javascript],
2336 [Disable support for scripts in JavaScript.]),
2340 AC_ARG_WITH(system-rhino,
2341 AS_HELP_STRING([--with-system-rhino],
2342 [Use rhino already on system.]),,)
2343 # [with_system_rhino="$with_system_jars"])
2344 # Above is not used as we have different debug interface
2345 # patched into internal rhino. This code needs to be fixed
2346 # before we can enable it by default.
2348 AC_ARG_WITH(rhino-jar,
2349 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2350 [Specify path to jarfile manually.]),
2353 AC_ARG_WITH(system-jfreereport,
2354 AS_HELP_STRING([--with-system-jfreereport],
2355 [Use JFreeReport already on system.]),,
2356 [with_system_jfreereport="$with_system_jars"])
2358 AC_ARG_WITH(sac-jar,
2359 AS_HELP_STRING([--with-sac-jar=JARFILE],
2360 [Specify path to jarfile manually.]),
2363 AC_ARG_WITH(libxml-jar,
2364 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2365 [Specify path to jarfile manually.]),
2366 LIBXML_JAR=$withval)
2368 AC_ARG_WITH(flute-jar,
2369 AS_HELP_STRING([--with-flute-jar=JARFILE],
2370 [Specify path to jarfile manually.]),
2373 AC_ARG_WITH(jfreereport-jar,
2374 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2375 [Specify path to jarfile manually.]),
2376 JFREEREPORT_JAR=$withval)
2378 AC_ARG_WITH(liblayout-jar,
2379 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2380 [Specify path to jarfile manually.]),
2381 LIBLAYOUT_JAR=$withval)
2383 AC_ARG_WITH(libloader-jar,
2384 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2385 [Specify path to jarfile manually.]),
2386 LIBLOADER_JAR=$withval)
2388 AC_ARG_WITH(libformula-jar,
2389 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2390 [Specify path to jarfile manually.]),
2391 LIBFORMULA_JAR=$withval)
2393 AC_ARG_WITH(librepository-jar,
2394 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2395 [Specify path to jarfile manually.]),
2396 LIBREPOSITORY_JAR=$withval)
2398 AC_ARG_WITH(libfonts-jar,
2399 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2400 [Specify path to jarfile manually.]),
2401 LIBFONTS_JAR=$withval)
2403 AC_ARG_WITH(libserializer-jar,
2404 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2405 [Specify path to jarfile manually.]),
2406 LIBSERIALIZER_JAR=$withval)
2408 AC_ARG_WITH(libbase-jar,
2409 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2410 [Specify path to jarfile manually.]),
2411 LIBBASE_JAR=$withval)
2413 AC_ARG_WITH(system-odbc,
2414 AS_HELP_STRING([--with-system-odbc],
2415 [Use the odbc headers already on system.]),,
2416 [with_system_odbc="auto"])
2418 AC_ARG_WITH(system-sane,
2419 AS_HELP_STRING([--with-system-sane],
2420 [Use sane.h already on system.]),,
2421 [with_system_sane="$with_system_headers"])
2423 AC_ARG_WITH(system-bluez,
2424 AS_HELP_STRING([--with-system-bluez],
2425 [Use bluetooth.h already on system.]),,
2426 [with_system_bluez="$with_system_headers"])
2428 AC_ARG_WITH(system-boost,
2429 AS_HELP_STRING([--with-system-boost],
2430 [Use boost already on system.]),,
2431 [with_system_boost="$with_system_headers"])
2433 AC_ARG_WITH(system-dragonbox,
2434 AS_HELP_STRING([--with-system-dragonbox],
2435 [Use dragonbox already on system.]),,
2436 [with_system_dragonbox="$with_system_headers"])
2438 AC_ARG_WITH(system-libfixmath,
2439 AS_HELP_STRING([--with-system-libfixmath],
2440 [Use libfixmath already on system.]),,
2441 [with_system_libfixmath="$with_system_libs"])
2443 AC_ARG_WITH(system-glm,
2444 AS_HELP_STRING([--with-system-glm],
2445 [Use glm already on system.]),,
2446 [with_system_glm="$with_system_headers"])
2448 AC_ARG_WITH(system-hunspell,
2449 AS_HELP_STRING([--with-system-hunspell],
2450 [Use libhunspell already on system.]),,
2451 [with_system_hunspell="$with_system_libs"])
2453 libo_FUZZ_ARG_ENABLE(zxing,
2454 AS_HELP_STRING([--disable-zxing],
2455 [Disable use of zxing external library.]))
2457 AC_ARG_WITH(system-zxing,
2458 AS_HELP_STRING([--with-system-zxing],
2459 [Use libzxing already on system.]),,
2460 [with_system_zxing="$with_system_libs"])
2462 AC_ARG_WITH(system-box2d,
2463 AS_HELP_STRING([--with-system-box2d],
2464 [Use box2d already on system.]),,
2465 [with_system_box2d="$with_system_libs"])
2467 AC_ARG_WITH(system-mythes,
2468 AS_HELP_STRING([--with-system-mythes],
2469 [Use mythes already on system.]),,
2470 [with_system_mythes="$with_system_libs"])
2472 AC_ARG_WITH(system-altlinuxhyph,
2473 AS_HELP_STRING([--with-system-altlinuxhyph],
2474 [Use ALTLinuxhyph already on system.]),,
2475 [with_system_altlinuxhyph="$with_system_libs"])
2477 AC_ARG_WITH(system-lpsolve,
2478 AS_HELP_STRING([--with-system-lpsolve],
2479 [Use lpsolve already on system.]),,
2480 [with_system_lpsolve="$with_system_libs"])
2482 AC_ARG_WITH(system-coinmp,
2483 AS_HELP_STRING([--with-system-coinmp],
2484 [Use CoinMP already on system.]),,
2485 [with_system_coinmp="$with_system_libs"])
2487 AC_ARG_WITH(system-liblangtag,
2488 AS_HELP_STRING([--with-system-liblangtag],
2489 [Use liblangtag library already on system.]),,
2490 [with_system_liblangtag="$with_system_libs"])
2492 AC_ARG_WITH(system-lockfile,
2493 AS_HELP_STRING([--with-system-lockfile[=file]],
2494 [Detect a system lockfile program or use the \$file argument.]))
2497 AS_HELP_STRING([--without-webdav],
2498 [Disable WebDAV support in the UCB.]))
2500 AC_ARG_WITH(linker-hash-style,
2501 AS_HELP_STRING([--with-linker-hash-style],
2502 [Use linker with --hash-style=<style> when linking shared objects.
2503 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2504 if supported on the build system, and "sysv" otherwise.]))
2506 AC_ARG_WITH(jdk-home,
2507 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2508 [If you have installed JDK 9 or later on your system please supply the
2509 path here. Note that this is not the location of the java command but the
2510 location of the entire distribution. In case of cross-compiling, this
2511 is the JDK of the host os. Use --with-build-platform-configure-options
2512 to point to a different build platform JDK.]),
2516 AS_HELP_STRING([--with-help],
2517 [Enable the build of help. There is a special parameter "common" that
2518 can be used to bundle only the common part, .e.g help-specific icons.
2519 This is useful when you build the helpcontent separately.])
2521 Usage: --with-help build the old local help
2522 --without-help no local help (default)
2523 --with-help=html build the new HTML local help
2524 --with-help=online build the new HTML online help
2528 AC_ARG_WITH(omindex,
2529 AS_HELP_STRING([--with-omindex],
2530 [Enable the support of xapian-omega index for online help.])
2532 Usage: --with-omindex=server prepare the pages for omindex
2533 but let xapian-omega be built in server.
2534 --with-omindex=noxap do not prepare online pages
2539 libo_FUZZ_ARG_WITH(java,
2540 AS_HELP_STRING([--with-java=<java command>],
2541 [Specify the name of the Java interpreter command. Typically "java"
2542 which is the default.
2544 To build without support for Java components, applets, accessibility
2545 or the XML filters written in Java, use --without-java or --with-java=no.]),
2546 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2547 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2550 AC_ARG_WITH(jvm-path,
2551 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2552 [Use a specific JVM search path at runtime.
2553 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2556 AC_ARG_WITH(ant-home,
2557 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2558 [If you have installed Apache Ant on your system, please supply the path here.
2559 Note that this is not the location of the Ant binary but the location
2560 of the entire distribution.]),
2563 AC_ARG_WITH(symbol-config,
2564 AS_HELP_STRING([--with-symbol-config],
2565 [Configuration for the crashreport symbol upload]),
2567 [with_symbol_config=no])
2569 AC_ARG_WITH(export-validation,
2570 AS_HELP_STRING([--without-export-validation],
2571 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2572 ,with_export_validation=auto)
2574 AC_ARG_WITH(bffvalidator,
2575 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2576 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2577 Requires installed Microsoft Office Binary File Format Validator.
2578 Note: export-validation (--with-export-validation) is required to be turned on.
2579 See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2580 ,with_bffvalidator=no)
2582 libo_FUZZ_ARG_WITH(junit,
2583 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2584 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2585 --without-junit disables those tests. Not relevant in the --without-java case.]),
2588 AC_ARG_WITH(hamcrest,
2589 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2590 [Specifies the hamcrest jar file to use for JUnit-based tests.
2591 --without-junit disables those tests. Not relevant in the --without-java case.]),
2594 AC_ARG_WITH(perl-home,
2595 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2596 [If you have installed Perl 5 Distribution, on your system, please
2597 supply the path here. Note that this is not the location of the Perl
2598 binary but the location of the entire distribution.]),
2601 libo_FUZZ_ARG_WITH(doxygen,
2603 [--with-doxygen=<absolute path to doxygen executable>],
2604 [Specifies the doxygen executable to use when generating ODK C/C++
2605 documentation. --without-doxygen disables generation of ODK C/C++
2606 documentation. Not relevant in the --disable-odk case.]),
2609 AC_ARG_WITH(visual-studio,
2610 AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2611 [Specify which Visual Studio version to use in case several are
2612 installed. Currently 2019 (default) and 2022 are supported.]),
2615 AC_ARG_WITH(windows-sdk,
2616 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2617 [Specify which Windows SDK, or "Windows Kit", version to use
2618 in case the one that came with the selected Visual Studio
2619 is not what you want for some reason. Note that not all compiler/SDK
2620 combinations are supported. The intent is that this option should not
2625 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2626 [Use this option to build LibreOffice with additional UI language support.
2627 English (US) is always included by default.
2628 Separate multiple languages with space.
2629 For all languages, use --with-lang=ALL.]),
2632 AC_ARG_WITH(locales,
2633 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2634 [Use this option to limit the locale information built in.
2635 Separate multiple locales with space.
2636 Very experimental and might well break stuff.
2637 Just a desperate measure to shrink code and data size.
2638 By default all the locales available is included.
2639 Just works with --disable-dynloading. Defaults to "ALL".
2640 This option is completely unrelated to --with-lang.])
2642 Affects also our character encoding conversion
2643 tables for encodings mainly targeted for a
2644 particular locale, like EUC-CN and EUC-TW for
2645 zh, ISO-2022-JP for ja.
2647 Affects also our add-on break iterator data for
2650 For the default, all locales, don't use this switch at all.
2651 Specifying just the language part of a locale means all matching
2652 locales will be included.
2656 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2657 libo_FUZZ_ARG_WITH(krb5,
2658 AS_HELP_STRING([--with-krb5],
2659 [Enable MIT Kerberos 5 support in modules that support it.
2660 By default automatically enabled on platforms
2661 where a good system Kerberos 5 is available.]),
2664 libo_FUZZ_ARG_WITH(gssapi,
2665 AS_HELP_STRING([--with-gssapi],
2666 [Enable GSSAPI support in modules that support it.
2667 By default automatically enabled on platforms
2668 where a good system GSSAPI is available.]),
2671 libo_FUZZ_ARG_WITH(lxml,
2672 AS_HELP_STRING([--without-lxml],
2673 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2674 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2675 report widget classes and ids.]),
2678 libo_FUZZ_ARG_WITH(latest-c++,
2679 AS_HELP_STRING([--with-latest-c++],
2680 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2681 published standard.]),,
2682 [with_latest_c__=no])
2684 dnl ===================================================================
2686 dnl ===================================================================
2688 AC_ARG_WITH(branding,
2689 AS_HELP_STRING([--with-branding=/path/to/images],
2690 [Use given path to retrieve branding images set.])
2692 Search for intro.png about.svg and logo.svg.
2693 If any is missing, default ones will be used instead.
2695 Search also progress.conf for progress
2696 settings on intro screen :
2698 PROGRESSBARCOLOR="255,255,255" Set color of
2699 progress bar. Comma separated RGB decimal values.
2700 PROGRESSSIZE="407,6" Set size of progress bar.
2701 Comma separated decimal values (width, height).
2702 PROGRESSPOSITION="61,317" Set position of progress
2703 bar from left,top. Comma separated decimal values.
2704 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2705 bar frame. Comma separated RGB decimal values.
2706 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2707 bar text. Comma separated RGB decimal values.
2708 PROGRESSTEXTBASELINE="287" Set vertical position of
2709 progress bar text from top. Decimal value.
2711 Default values will be used if not found.
2716 AC_ARG_WITH(extra-buildid,
2717 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2718 [Show addition build identification in about dialog.]),
2723 AS_HELP_STRING([--with-vendor="John the Builder"],
2724 [Set vendor of the build.]),
2727 AC_ARG_WITH(privacy-policy-url,
2728 AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2729 [The URL to your privacy policy (needed when
2730 enabling online-update or crashreporting via breakpad)]),
2731 [if test "x$with_privacy_policy_url" = "xyes"; then
2732 AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2733 elif test "x$with_privacy_policy_url" = "xno"; then
2734 with_privacy_policy_url="undefined"
2736 ,[with_privacy_policy_url="undefined"])
2738 AC_ARG_WITH(android-package-name,
2739 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2740 [Set Android package name of the build.]),
2743 AC_ARG_WITH(compat-oowrappers,
2744 AS_HELP_STRING([--with-compat-oowrappers],
2745 [Install oo* wrappers in parallel with
2746 lo* ones to keep backward compatibility.
2747 Has effect only with make distro-pack-install]),
2750 AC_ARG_WITH(os-version,
2751 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2752 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2755 AC_ARG_WITH(parallelism,
2756 AS_HELP_STRING([--with-parallelism],
2757 [Number of jobs to run simultaneously during build. Parallel builds can
2758 save a lot of time on multi-cpu machines. Defaults to the number of
2759 CPUs on the machine, unless you configure --enable-icecream - then to
2763 AC_ARG_WITH(all-tarballs,
2764 AS_HELP_STRING([--with-all-tarballs],
2765 [Download all external tarballs unconditionally]))
2767 AC_ARG_WITH(gdrive-client-id,
2768 AS_HELP_STRING([--with-gdrive-client-id],
2769 [Provides the client id of the application for OAuth2 authentication
2770 on Google Drive. If either this or --with-gdrive-client-secret is
2771 empty, the feature will be disabled]),
2774 AC_ARG_WITH(gdrive-client-secret,
2775 AS_HELP_STRING([--with-gdrive-client-secret],
2776 [Provides the client secret of the application for OAuth2
2777 authentication on Google Drive. If either this or
2778 --with-gdrive-client-id is empty, the feature will be disabled]),
2781 AC_ARG_WITH(alfresco-cloud-client-id,
2782 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2783 [Provides the client id of the application for OAuth2 authentication
2784 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2785 empty, the feature will be disabled]),
2788 AC_ARG_WITH(alfresco-cloud-client-secret,
2789 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2790 [Provides the client secret of the application for OAuth2
2791 authentication on Alfresco Cloud. If either this or
2792 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2795 AC_ARG_WITH(onedrive-client-id,
2796 AS_HELP_STRING([--with-onedrive-client-id],
2797 [Provides the client id of the application for OAuth2 authentication
2798 on OneDrive. If either this or --with-onedrive-client-secret is
2799 empty, the feature will be disabled]),
2802 AC_ARG_WITH(onedrive-client-secret,
2803 AS_HELP_STRING([--with-onedrive-client-secret],
2804 [Provides the client secret of the application for OAuth2
2805 authentication on OneDrive. If either this or
2806 --with-onedrive-client-id is empty, the feature will be disabled]),
2808 dnl ===================================================================
2809 dnl Do we want to use pre-build binary tarball for recompile
2810 dnl ===================================================================
2812 if test "$enable_library_bin_tar" = "yes" ; then
2813 USE_LIBRARY_BIN_TAR=TRUE
2815 USE_LIBRARY_BIN_TAR=
2817 AC_SUBST(USE_LIBRARY_BIN_TAR)
2819 dnl ===================================================================
2820 dnl Test whether build target is Release Build
2821 dnl ===================================================================
2822 AC_MSG_CHECKING([whether build target is Release Build])
2823 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2825 ENABLE_RELEASE_BUILD=
2826 GET_TASK_ALLOW_ENTITLEMENT='
2827 <!-- We want to be able to debug a hardened process when not building for release -->
2828 <key>com.apple.security.get-task-allow</key>
2831 AC_MSG_RESULT([yes])
2832 ENABLE_RELEASE_BUILD=TRUE
2833 GET_TASK_ALLOW_ENTITLEMENT=''
2835 AC_SUBST(ENABLE_RELEASE_BUILD)
2836 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2838 AC_MSG_CHECKING([whether to build a Community flavor])
2839 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2840 AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2841 AC_MSG_RESULT([yes])
2846 dnl ===================================================================
2847 dnl Test whether to sign Windows Build
2848 dnl ===================================================================
2849 AC_MSG_CHECKING([whether to sign windows build])
2850 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2851 AC_MSG_RESULT([yes])
2852 WINDOWS_BUILD_SIGNING="TRUE"
2855 WINDOWS_BUILD_SIGNING="FALSE"
2857 AC_SUBST(WINDOWS_BUILD_SIGNING)
2859 dnl ===================================================================
2860 dnl MacOSX build and runtime environment options
2861 dnl ===================================================================
2863 AC_ARG_WITH(macosx-version-min-required,
2864 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2865 [set the minimum OS version needed to run the built LibreOffice])
2867 e. g.: --with-macosx-version-min-required=10.14
2871 dnl ===================================================================
2872 dnl Check for incompatible options set by fuzzing, and reset those
2873 dnl automatically to working combinations
2874 dnl ===================================================================
2876 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2877 "$enable_dbus" != "$enable_avahi"; then
2878 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2879 enable_avahi=$enable_dbus
2884 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2885 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2889 add_lopath_before ()
2894 for dir in $LO_PATH ; do
2895 if test "$dir" != "$1" ; then
2896 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2899 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2902 dnl ===================================================================
2903 dnl check for required programs (grep, awk, sed, bash)
2904 dnl ===================================================================
2909 if test -n "$1"; then
2910 if test "$build_os" = "cygwin"; then
2911 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2913 new_path=`cygpath -sm "$formatted_path"`
2916 new_path=`cygpath -u "$formatted_path"`
2921 if test "$2" = "after"; then
2922 add_lopath_after "$new_path"
2924 add_lopath_before "$new_path"
2930 AC_PATH_PROG( AWK, $AWK)
2931 if test -z "$AWK"; then
2932 AC_MSG_ERROR([install awk to run this script])
2935 AC_PATH_PROG(BASH, bash)
2936 if test -z "$BASH"; then
2937 AC_MSG_ERROR([bash not found in \$PATH])
2941 # prefer parallel compression tools, if available
2942 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
2943 if test -z "$COMPRESSIONTOOL"; then
2944 AC_PATH_PROG(COMPRESSIONTOOL, gzip)
2945 if test -z "$COMPRESSIONTOOL"; then
2946 AC_MSG_ERROR([gzip not found in \$PATH])
2949 AC_SUBST(COMPRESSIONTOOL)
2951 # use GNU parallel for packaging, if available
2952 AC_PATH_PROG(GNUPARALLEL, parallel)
2953 AC_SUBST(GNUPARALLEL)
2955 AC_MSG_CHECKING([for GNU or BSD tar])
2956 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
2957 $a --version 2> /dev/null | grep -E "GNU|bsdtar" 2>&1 > /dev/null
2958 if test $? -eq 0; then
2963 AC_MSG_RESULT($GNUTAR)
2964 if test -z "$GNUTAR"; then
2965 AC_MSG_ERROR([not found. install GNU or BSD tar.])
2969 AC_MSG_CHECKING([for tar's option to strip components])
2970 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
2971 if test $? -eq 0; then
2972 STRIP_COMPONENTS="--strip-components"
2974 $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
2975 if test $? -eq 0; then
2976 STRIP_COMPONENTS="--strip-path"
2978 STRIP_COMPONENTS="unsupported"
2981 AC_MSG_RESULT($STRIP_COMPONENTS)
2982 if test x$STRIP_COMPONENTS = xunsupported; then
2983 AC_MSG_ERROR([you need a tar that is able to strip components.])
2985 AC_SUBST(STRIP_COMPONENTS)
2987 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2988 dnl desktop OSes from "mobile" ones.
2990 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2991 dnl In other words, that when building for an OS that is not a
2992 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2994 dnl Note the direction of the implication; there is no assumption that
2995 dnl cross-compiling would imply a non-desktop OS.
2997 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
2998 BUILD_TYPE="$BUILD_TYPE DESKTOP"
2999 AC_DEFINE(HAVE_FEATURE_DESKTOP)
3000 if test "$_os" != Emscripten; then
3001 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3005 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3006 # also work with the default gtk3 plugin.
3007 if test "$enable_wasm_strip" = "yes"; then
3012 test "$_os" = Emscripten && enable_curl=no
3013 enable_database_connectivity=no
3016 test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3017 enable_extension_integration=no
3018 enable_extensions=no
3019 enable_extension_update=no
3023 enable_lotuswordpro=no
3027 enable_online_update=no
3031 enable_report_builder=no
3033 enable_sdremote_bluetooth=no
3043 test_libpagemaker=no
3052 test "${with_fonts+set}" = set || with_fonts=yes
3053 test "${with_locales+set}" = set || with_locales=en
3055 AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3056 AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3057 AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3058 AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3059 # AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3060 AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3061 AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3062 AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3063 AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3064 # AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3065 AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3066 AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3067 AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3068 AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3069 AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3070 AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3071 AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3074 EMSCRIPTEN_NEH_MAJOR=3
3075 EMSCRIPTEN_NEH_MINOR=1
3076 EMSCRIPTEN_NEH_TINY=3
3077 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3079 if test "$enable_wasm_exceptions" = yes; then
3080 AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3081 check_semantic_version_three_prefixed EMSCRIPTEN NEH
3082 if test $? -ne 0; then
3083 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3085 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3087 ENABLE_WASM_EXCEPTIONS=TRUE
3089 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3091 # Whether to build "avmedia" functionality or not.
3093 if test "$enable_avmedia" = yes; then
3094 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3095 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3097 test_gstreamer_1_0=no
3100 # Decide whether to build database connectivity stuff (including Base) or not.
3101 if test "$enable_database_connectivity" != no; then
3102 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3103 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3105 if test "$_os" = iOS; then
3106 AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3108 disable_database_connectivity_dependencies
3111 if test -z "$enable_extensions"; then
3112 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3113 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3114 enable_extensions=yes
3118 DISABLE_SCRIPTING=''
3119 if test "$enable_scripting" = yes; then
3120 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3121 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3123 DISABLE_SCRIPTING='TRUE'
3124 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3127 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3128 # Disable dynamic_loading always for iOS and Android
3129 enable_dynamic_loading=no
3130 elif test -z "$enable_dynamic_loading"; then
3131 # Otherwise enable it unless specifically disabled
3132 enable_dynamic_loading=yes
3135 DISABLE_DYNLOADING=''
3136 if test "$enable_dynamic_loading" = yes; then
3137 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3139 DISABLE_DYNLOADING='TRUE'
3140 if test $_os != iOS -a $_os != Android; then
3141 enable_database_connectivity=no
3149 AC_SUBST(DISABLE_DYNLOADING)
3151 ENABLE_CUSTOMTARGET_COMPONENTS=
3152 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3153 ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3154 if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3155 AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3158 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3160 if test "$enable_extensions" = yes; then
3161 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3162 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3164 enable_extension_integration=no
3165 enable_extension_update=no
3168 # remember SYSBASE value
3171 dnl ===================================================================
3172 dnl Sort out various gallery compilation options
3173 dnl ===================================================================
3174 WITH_GALLERY_BUILD=TRUE
3175 AC_MSG_CHECKING([how to build and package galleries])
3176 if test -n "${with_galleries}"; then
3177 if test "$with_galleries" = "build"; then
3178 if test "$enable_database_connectivity" = no; then
3179 AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3181 AC_MSG_RESULT([build from source images internally])
3182 elif test "$with_galleries" = "no"; then
3184 AC_MSG_RESULT([disable non-internal gallery build])
3186 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3189 if test $_os != iOS -a $_os != Android; then
3190 AC_MSG_RESULT([internal src images for desktop])
3193 AC_MSG_RESULT([disable src image build])
3196 AC_SUBST(WITH_GALLERY_BUILD)
3198 dnl ===================================================================
3199 dnl Checks if ccache is available
3200 dnl ===================================================================
3202 if test "$enable_ccache" = "no"; then
3204 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3205 case "%$CC%$CXX%" in
3206 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3207 # assume that's good then
3208 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3209 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3210 CCACHE_DEPEND_MODE=1
3213 # try to use our own ccache if it is available and CCACHE was not already defined
3214 if test -z "$CCACHE"; then
3215 if test "$_os" = "WINNT"; then
3216 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3218 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3219 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3220 elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3221 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3224 AC_PATH_PROG([CCACHE],[ccache],[not found])
3225 if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3226 CCACHE=`win_short_path_for_make "$CCACHE"`
3227 # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3229 AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3230 CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3231 if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3239 if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3240 # on windows/VC perhaps sccache is around?
3241 case "%$CC%$CXX%" in
3242 # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3243 # assume that's good then
3244 *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3245 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3246 CCACHE_DEPEND_MODE=1
3250 # for sharing code below, reuse CCACHE env var
3251 AC_PATH_PROG([CCACHE],[sccache],[not found])
3252 if test "$CCACHE" != "not found"; then
3253 CCACHE=`win_short_path_for_make "$CCACHE"`
3255 CCACHE_DEPEND_MODE=1
3260 if test "$CCACHE" = "not found"; then
3263 if test -n "$CCACHE" -a -z "$SCCACHE"; then
3264 CCACHE_DEPEND_MODE=1
3265 # Need to check for ccache version: otherwise prevents
3266 # caching of the results (like "-x objective-c++" for Mac)
3267 if test $_os = Darwin -o $_os = iOS; then
3268 # Check ccache version
3269 AC_MSG_CHECKING([whether version of ccache is suitable])
3270 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3271 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3272 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3273 AC_MSG_RESULT([yes, $CCACHE_VERSION])
3275 AC_MSG_RESULT([no, $CCACHE_VERSION])
3286 if test "$enable_ccache" = "nodepend"; then
3287 CCACHE_DEPEND_MODE=""
3289 AC_SUBST(CCACHE_DEPEND_MODE)
3291 # sccache defaults are good enough
3292 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3293 # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3294 # -p works with both 4.2 and 4.4
3295 ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 }' | sed -e 's/\.[0-9]*//'])
3296 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3297 if test "$ccache_size" = ""; then
3298 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3299 if test "$ccache_size" = ""; then
3302 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3303 if test $ccache_size -lt 1024; then
3305 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3306 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3308 # warn that ccache may be too small for debug build
3309 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3310 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3313 if test $ccache_size -lt 5; then
3314 #warn that ccache may be too small for debug build
3315 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3316 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3322 if test "$enable_z7_debug" != no; then
3323 if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3324 ENABLE_Z7_DEBUG=TRUE
3327 AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3328 add_warning "ccache will not work with --disable-z7-debug"
3330 AC_SUBST(ENABLE_Z7_DEBUG)
3332 dnl ===================================================================
3333 dnl Checks for C compiler,
3334 dnl The check for the C++ compiler is later on.
3335 dnl ===================================================================
3336 if test "$_os" != "WINNT"; then
3338 AC_MSG_CHECKING([gcc home])
3339 if test -z "$with_gcc_home"; then
3340 if test "$enable_icecream" = "yes"; then
3341 if test -d "/usr/lib/icecc/bin"; then
3342 GCC_HOME="/usr/lib/icecc/"
3343 elif test -d "/usr/libexec/icecc/bin"; then
3344 GCC_HOME="/usr/libexec/icecc/"
3345 elif test -d "/opt/icecream/bin"; then
3346 GCC_HOME="/opt/icecream/"
3348 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3352 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3353 GCC_HOME_SET="false"
3356 GCC_HOME="$with_gcc_home"
3358 AC_MSG_RESULT($GCC_HOME)
3361 if test "$GCC_HOME_SET" = "true"; then
3362 if test -z "$CC"; then
3363 CC="$GCC_HOME/bin/gcc"
3366 if test -z "$CXX"; then
3367 CXX="$GCC_HOME/bin/g++"
3373 COMPATH=`dirname "$CC"`
3374 if test "$COMPATH" = "."; then
3375 AC_PATH_PROGS(COMPATH, $CC)
3376 dnl double square bracket to get single because of M4 quote...
3377 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3379 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3381 dnl ===================================================================
3383 dnl ===================================================================
3384 AC_MSG_CHECKING([whether to build with Java support])
3385 if test "$with_java" != "no"; then
3386 if test "$DISABLE_SCRIPTING" = TRUE; then
3387 AC_MSG_RESULT([no, overridden by --disable-scripting])
3391 AC_MSG_RESULT([yes])
3393 AC_DEFINE(HAVE_FEATURE_JAVA)
3400 AC_SUBST(ENABLE_JAVA)
3402 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3404 dnl ENABLE_JAVA="" indicate no Java support at all
3406 dnl ===================================================================
3407 dnl Check macOS SDK and compiler
3408 dnl ===================================================================
3410 if test $_os = Darwin; then
3412 # The SDK in the currently selected Xcode should be found.
3414 AC_MSG_CHECKING([what macOS SDK to use])
3415 for macosx_sdk in 12.3 12.1 12.0 11.3 11.1 11.0 10.15 10.14 10.13; do
3416 MACOSX_SDK_PATH=`xcrun --sdk macosx${macosx_sdk} --show-sdk-path 2> /dev/null`
3417 if test -d "$MACOSX_SDK_PATH"; then
3420 MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${macosx_sdk}.sdk"
3421 if test -d "$MACOSX_SDK_PATH"; then
3426 if test ! -d "$MACOSX_SDK_PATH"; then
3427 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3430 AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3431 MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3434 MACOSX_SDK_VERSION=101300
3437 MACOSX_SDK_VERSION=101400
3440 MACOSX_SDK_VERSION=101500
3443 MACOSX_SDK_VERSION=110000
3446 MACOSX_SDK_VERSION=110100
3449 MACOSX_SDK_VERSION=110300
3452 MACOSX_SDK_VERSION=120000
3455 MACOSX_SDK_VERSION=120100
3458 MACOSX_SDK_VERSION=120300
3461 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported])
3465 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3466 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon])
3469 if test "$with_macosx_version_min_required" = "" ; then
3470 if test "$host_cpu" = x86_64; then
3471 with_macosx_version_min_required="10.14";
3473 with_macosx_version_min_required="11.0";
3477 # export this so that "xcrun" invocations later return matching values
3478 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3479 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3480 export DEVELOPER_DIR
3481 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3482 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3484 AC_MSG_CHECKING([whether Xcode is new enough])
3485 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3486 my_xcode_ver2=${my_xcode_ver1#Xcode }
3487 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3488 if test "$my_xcode_ver3" -ge 1205; then
3489 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3491 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3494 my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3495 MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3497 case "$with_macosx_version_min_required" in
3499 MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3502 MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3505 MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3508 MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3511 MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3514 MAC_OS_X_VERSION_MIN_REQUIRED="110300"
3517 MAC_OS_X_VERSION_MIN_REQUIRED="120000"
3520 MAC_OS_X_VERSION_MIN_REQUIRED="120100"
3523 MAC_OS_X_VERSION_MIN_REQUIRED="120300"
3526 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.14--12.3])
3530 LIBTOOL=/usr/bin/libtool
3531 INSTALL_NAME_TOOL=install_name_tool
3532 if test -z "$save_CC"; then
3533 stdlib=-stdlib=libc++
3535 AC_MSG_CHECKING([what C compiler to use])
3536 CC="`xcrun -find clang`"
3537 CC_BASE=`first_arg_basename "$CC"`
3538 if test "$host_cpu" = x86_64; then
3539 CC+=" -target x86_64-apple-macos"
3541 CC+=" -target arm64-apple-macos"
3543 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3544 AC_MSG_RESULT([$CC])
3546 AC_MSG_CHECKING([what C++ compiler to use])
3547 CXX="`xcrun -find clang++`"
3548 CXX_BASE=`first_arg_basename "$CXX"`
3549 if test "$host_cpu" = x86_64; then
3550 CXX+=" -target x86_64-apple-macos"
3552 CXX+=" -target arm64-apple-macos"
3554 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3555 AC_MSG_RESULT([$CXX])
3557 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3560 STRIP=`xcrun -find strip`
3561 LIBTOOL=`xcrun -find libtool`
3562 RANLIB=`xcrun -find ranlib`
3565 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3566 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3567 AC_MSG_ERROR([the version minimum required cannot be greater than the sdk level])
3571 AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3573 AC_MSG_CHECKING([whether to do code signing])
3575 if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3578 if test "$enable_macosx_code_signing" = yes; then
3579 # By default use the first suitable certificate (?).
3581 # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3582 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3583 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3584 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3585 # "Developer ID Application" one.
3586 identity="Developer ID Application:"
3588 identity=$enable_macosx_code_signing
3590 identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3591 if test -n "$identity"; then
3592 MACOSX_CODESIGNING_IDENTITY=$identity
3593 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3594 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3596 AC_MSG_ERROR([cannot determine identity to use])
3600 AC_MSG_CHECKING([whether to create a Mac App Store package])
3602 if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3604 elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3605 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3607 if test "$enable_macosx_package_signing" = yes; then
3608 # By default use the first suitable certificate.
3609 # It should be a "3rd Party Mac Developer Installer" one
3610 identity="3rd Party Mac Developer Installer:"
3612 identity=$enable_macosx_package_signing
3614 identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3615 if test -n "$identity"; then
3616 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3617 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3618 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3620 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3624 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3625 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3628 AC_MSG_CHECKING([whether to sandbox the application])
3630 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3631 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3632 elif test "$enable_macosx_sandbox" = yes; then
3633 ENABLE_MACOSX_SANDBOX=TRUE
3634 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3635 AC_MSG_RESULT([yes])
3640 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3641 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3642 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3644 if test -n "$with_macosx_provisioning_profile" ; then
3645 if test ! -f "$with_macosx_provisioning_profile"; then
3646 AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3648 MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3649 MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3650 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3651 | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3652 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3656 AC_SUBST(MACOSX_SDK_PATH)
3657 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3658 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3659 AC_SUBST(INSTALL_NAME_TOOL)
3660 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3661 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3662 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3663 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3664 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3665 AC_SUBST(MACOSX_PROVISIONING_INFO)
3666 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3667 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3668 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3670 dnl ===================================================================
3671 dnl Check iOS SDK and compiler
3672 dnl ===================================================================
3674 if test $_os = iOS; then
3675 AC_MSG_CHECKING([what iOS SDK to use])
3676 current_sdk_ver=16.0
3677 older_sdk_vers="15.6"
3678 if test "$enable_ios_simulator" = "yes"; then
3679 platform=iPhoneSimulator
3680 versionmin=-mios-simulator-version-min=14.5
3683 versionmin=-miphoneos-version-min=14.5
3685 xcode_developer=`xcode-select -print-path`
3687 for sdkver in $current_sdk_ver $older_sdk_vers; do
3688 t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3695 if test -z "$sysroot"; then
3696 AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3699 AC_MSG_RESULT($sysroot)
3701 stdlib="-stdlib=libc++"
3703 AC_MSG_CHECKING([what C compiler to use])
3704 CC="`xcrun -find clang`"
3705 CC_BASE=`first_arg_basename "$CC"`
3706 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3707 AC_MSG_RESULT([$CC])
3709 AC_MSG_CHECKING([what C++ compiler to use])
3710 CXX="`xcrun -find clang++`"
3711 CXX_BASE=`first_arg_basename "$CXX"`
3712 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3713 AC_MSG_RESULT([$CXX])
3715 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3718 STRIP=`xcrun -find strip`
3719 LIBTOOL=`xcrun -find libtool`
3720 RANLIB=`xcrun -find ranlib`
3723 AC_MSG_CHECKING([whether to treat the installation as read-only])
3725 if test $_os = Darwin; then
3726 enable_readonly_installset=yes
3727 elif test "$enable_extensions" != yes; then
3728 enable_readonly_installset=yes
3730 if test "$enable_readonly_installset" = yes; then
3731 AC_MSG_RESULT([yes])
3732 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3737 dnl ===================================================================
3738 dnl Structure of install set
3739 dnl ===================================================================
3741 if test $_os = Darwin; then
3742 LIBO_BIN_FOLDER=MacOS
3743 LIBO_ETC_FOLDER=Resources
3744 LIBO_LIBEXEC_FOLDER=MacOS
3745 LIBO_LIB_FOLDER=Frameworks
3746 LIBO_LIB_PYUNO_FOLDER=Resources
3747 LIBO_SHARE_FOLDER=Resources
3748 LIBO_SHARE_HELP_FOLDER=Resources/help
3749 LIBO_SHARE_JAVA_FOLDER=Resources/java
3750 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3751 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3752 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3753 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3754 LIBO_URE_BIN_FOLDER=MacOS
3755 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3756 LIBO_URE_LIB_FOLDER=Frameworks
3757 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3758 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3759 elif test $_os = WINNT; then
3760 LIBO_BIN_FOLDER=program
3761 LIBO_ETC_FOLDER=program
3762 LIBO_LIBEXEC_FOLDER=program
3763 LIBO_LIB_FOLDER=program
3764 LIBO_LIB_PYUNO_FOLDER=program
3765 LIBO_SHARE_FOLDER=share
3766 LIBO_SHARE_HELP_FOLDER=help
3767 LIBO_SHARE_JAVA_FOLDER=program/classes
3768 LIBO_SHARE_PRESETS_FOLDER=presets
3769 LIBO_SHARE_READMES_FOLDER=readmes
3770 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3771 LIBO_SHARE_SHELL_FOLDER=program/shell
3772 LIBO_URE_BIN_FOLDER=program
3773 LIBO_URE_ETC_FOLDER=program
3774 LIBO_URE_LIB_FOLDER=program
3775 LIBO_URE_MISC_FOLDER=program
3776 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3778 LIBO_BIN_FOLDER=program
3779 LIBO_ETC_FOLDER=program
3780 LIBO_LIBEXEC_FOLDER=program
3781 LIBO_LIB_FOLDER=program
3782 LIBO_LIB_PYUNO_FOLDER=program
3783 LIBO_SHARE_FOLDER=share
3784 LIBO_SHARE_HELP_FOLDER=help
3785 LIBO_SHARE_JAVA_FOLDER=program/classes
3786 LIBO_SHARE_PRESETS_FOLDER=presets
3787 LIBO_SHARE_READMES_FOLDER=readmes
3788 if test "$enable_fuzzers" != yes; then
3789 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3791 LIBO_SHARE_RESOURCE_FOLDER=resource
3793 LIBO_SHARE_SHELL_FOLDER=program/shell
3794 LIBO_URE_BIN_FOLDER=program
3795 LIBO_URE_ETC_FOLDER=program
3796 LIBO_URE_LIB_FOLDER=program
3797 LIBO_URE_MISC_FOLDER=program
3798 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3800 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3801 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3802 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3803 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3804 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3805 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3806 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3807 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3808 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3809 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3810 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3811 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3812 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3813 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3814 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3815 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3817 # Not all of them needed in config_host.mk, add more if need arises
3818 AC_SUBST(LIBO_BIN_FOLDER)
3819 AC_SUBST(LIBO_ETC_FOLDER)
3820 AC_SUBST(LIBO_LIB_FOLDER)
3821 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3822 AC_SUBST(LIBO_SHARE_FOLDER)
3823 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3824 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3825 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3826 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3827 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3828 AC_SUBST(LIBO_URE_BIN_FOLDER)
3829 AC_SUBST(LIBO_URE_ETC_FOLDER)
3830 AC_SUBST(LIBO_URE_LIB_FOLDER)
3831 AC_SUBST(LIBO_URE_MISC_FOLDER)
3832 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3834 dnl ===================================================================
3835 dnl Windows specific tests and stuff
3836 dnl ===================================================================
3840 # Return value: $regvalue
3843 if test "$build_os" = "wsl"; then
3844 regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3848 local _regentry="/proc/registry${1}/${2}"
3849 if test -f "$_regentry"; then
3850 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3851 # Registry keys read via /proc/registry* are always \0 terminated!
3852 local _regvalue=$(tr -d '\0' < "$_regentry")
3853 if test $? -eq 0; then
3859 # Get a value from the 32-bit side of the Registry
3862 reg_get_value "32" "$1"
3865 # Get a value from the 64-bit side of the Registry
3868 reg_get_value "64" "$1"
3873 # Return value: $reglist
3876 if test "$build_os" = "wsl"; then
3877 reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3881 reglist=$(ls "/proc/registry${1}/${2}")
3884 # List values from the 32-bit side of the Registry
3885 reg_list_values_32()
3887 reg_list_values "32" "$1"
3890 # List values from the 64-bit side of the Registry
3891 reg_list_values_64()
3893 reg_list_values "64" "$1"
3901 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3910 PLATFORMID=windows_x86_64
3912 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3914 WIN_MULTI_ARCH="x86"
3920 PLATFORMID=windows_x86
3923 WIN_OTHER_ARCH="x64"
3928 PLATFORMID=windows_aarch64
3930 SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3931 WIN_HOST_ARCH="arm64"
3936 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3940 case "$build_cpu" in
3941 x86_64) WIN_BUILD_ARCH="x64" ;;
3942 i*86) WIN_BUILD_ARCH="x86" ;;
3943 aarch64) WIN_BUILD_ARCH="arm64" ;;
3945 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3949 SCPDEFS="$SCPDEFS -D_MSC_VER"
3953 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3954 # other-arch won't, but wouldn't break the build (x64 on x86).
3955 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3956 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3960 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
3961 # To allow building Windows multi-arch releases without cross-tooling
3962 if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
3963 cross_compiling="yes"
3967 if test "$cross_compiling" = "yes"; then
3968 export CROSS_COMPILING=TRUE
3969 if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3970 ENABLE_WASM_STRIP=TRUE
3972 if test "$_os" = "Emscripten"; then
3973 if test "$with_main_module" = "calc"; then
3974 ENABLE_WASM_STRIP_WRITER=TRUE
3976 ENABLE_WASM_STRIP_CALC=TRUE
3981 BUILD_TYPE="$BUILD_TYPE NATIVE"
3983 AC_SUBST(CROSS_COMPILING)
3984 AC_SUBST(ENABLE_WASM_STRIP)
3985 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
3986 AC_SUBST(ENABLE_WASM_STRIP_CALC)
3988 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3989 # NOTE: must _not_ be used for bundled external libraries!
3991 if test "$GCC" = "yes"; then
3992 AC_MSG_CHECKING( for -isystem )
3994 CFLAGS="$CFLAGS -isystem /usr/include -Werror"
3995 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3997 if test -n "$ISYSTEM"; then
4003 if test -z "$ISYSTEM"; then
4004 # fall back to using -I
4009 dnl ===================================================================
4010 dnl Check which Visual Studio compiler is used
4011 dnl ===================================================================
4013 map_vs_year_to_version()
4015 # Return value: $vsversion
4027 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
4031 vs_versions_to_check()
4033 # Args: $1 (optional) : versions to check, in the order of preference
4034 # Return value: $vsversions
4038 if test -n "$1"; then
4039 map_vs_year_to_version "$1"
4040 vsversions=$vsversion
4042 # Default version is 2019
4047 win_get_env_from_vsvars32bat()
4049 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4050 # Also seems to be located in another directory under the same name: vsvars32.bat
4051 # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
4052 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
4053 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4054 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4056 if test "$build_os" = "wsl"; then
4057 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4059 chmod +x $WRAPPERBATCHFILEPATH
4060 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4062 rm -f $WRAPPERBATCHFILEPATH
4063 printf '%s' "$result"
4068 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4069 if test -n "$regvalue"; then
4070 PathFormat "$regvalue"
4071 UCRTSDKDIR=$formatted_path_unix
4072 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4073 UCRTVERSION=$regvalue
4075 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4079 if test -z "$UCRTSDKDIR"; then
4080 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4081 ide_env_file="${ide_env_dir}VsDevCmd.bat"
4082 if test -f "$ide_env_file"; then
4083 PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
4084 UCRTSDKDIR=$formatted_path
4085 UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
4086 dnl Hack needed at least by tml:
4087 if test "$UCRTVERSION" = 10.0.15063.0 \
4088 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4089 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4091 UCRTVERSION=10.0.14393.0
4094 AC_MSG_ERROR([No UCRT found])
4102 # Args: $1 (optional) : The VS version year
4103 # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4105 unset vctest vctoolset vcnumwithdot vcbuildnumber
4107 vs_versions_to_check "$1"
4108 if test "$build_os" = wsl; then
4109 vswhere="$PROGRAMFILESX86"
4110 if test -z "$vswhere"; then
4111 vswhere="c:\\Program Files (x86)"
4114 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4116 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4117 PathFormat "$vswhere"
4118 vswhere=$formatted_path_unix
4119 for ver in $vsversions; do
4120 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4121 if test -z "$vswhereoutput"; then
4122 vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4124 # Fall back to all MS products (this includes VC++ Build Tools)
4125 if ! test -n "$vswhereoutput"; then
4126 AC_MSG_CHECKING([VC++ Build Tools and similar])
4127 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4129 if test -n "$vswhereoutput"; then
4130 PathFormat "$vswhereoutput"
4131 vctest=$formatted_path_unix
4136 if test -n "$vctest"; then
4138 if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4139 vcnumwithdot=$vcnumwithdot.0
4141 case "$vcnumwithdot" in
4151 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4158 AC_MSG_CHECKING([$1 compiler])
4160 CL_EXE_PATH="$2/cl.exe"
4162 if test ! -f "$CL_EXE_PATH"; then
4163 if test "$1" = "multi-arch"; then
4164 AC_MSG_WARN([no compiler (cl.exe) in $2])
4167 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4171 dnl ===========================================================
4172 dnl Check for the corresponding mspdb*.dll
4173 dnl ===========================================================
4175 # MSVC 15.0 has libraries from 14.0?
4178 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4179 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4182 # The compiles has to find its shared libraries
4184 TEMP_PATH=`cygpath -d "$2"`
4185 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4187 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4188 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4193 AC_MSG_RESULT([$CL_EXE_PATH])
4199 if test "$_os" = "WINNT"; then
4200 AC_MSG_CHECKING([Visual C++])
4201 find_msvc "$with_visual_studio"
4202 if test -z "$vctest"; then
4203 if test -n "$with_visual_studio"; then
4204 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4206 AC_MSG_ERROR([no Visual Studio installation found])
4211 VC_PRODUCT_DIR="$vctest/VC"
4212 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4214 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4215 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4216 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4217 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4218 if test $? -ne 0; then
4224 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4225 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4226 test_cl_exe "build" "$MSVC_BUILD_PATH"
4229 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4230 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4231 test_cl_exe "host" "$MSVC_HOST_PATH"
4233 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4236 AC_MSG_CHECKING([for short pathname of VC product directory])
4237 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4238 AC_MSG_RESULT([$VC_PRODUCT_DIR])
4243 AC_MSG_CHECKING([for UCRT location])
4245 # find_ucrt errors out if it doesn't find it
4246 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4247 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4248 ucrtincpath_formatted=$formatted_path
4249 # SOLARINC is used for external modules and must be set too.
4250 # And no, it's not sufficient to set SOLARINC only, as configure
4251 # itself doesn't honour it.
4252 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4253 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4254 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4255 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4257 AC_SUBST(UCRTSDKDIR)
4258 AC_SUBST(UCRTVERSION)
4260 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4261 # Find the proper version of MSBuild.exe to use based on the VS version
4262 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4263 if test -z "$regvalue" ; then
4264 if test "$WIN_BUILD_ARCH" != "x64"; then
4265 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4267 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4270 if test -d "$regvalue" ; then
4271 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4272 AC_MSG_RESULT([$regvalue])
4274 AC_MSG_ERROR([MSBuild.exe location not found])
4277 # Find the version of devenv.exe
4278 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4279 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4280 DEVENV_unix=$(cygpath -u "$DEVENV")
4281 if test ! -e "$DEVENV_unix"; then
4282 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4285 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4286 dnl needed when building CLR code:
4287 if test -z "$MSVC_CXX"; then
4288 # This gives us a posix path with 8.3 filename restrictions
4289 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4292 if test -z "$CC"; then
4294 CC_BASE=`first_arg_basename "$CC"`
4296 if test -z "$CXX"; then
4298 CXX_BASE=`first_arg_basename "$CXX"`
4301 if test -n "$CC"; then
4302 # Remove /cl.exe from CC case insensitive
4303 AC_MSG_NOTICE([found Visual C++ $vcyear])
4305 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4306 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4308 PathFormat "$COMPATH"
4309 COMPATH=`win_short_path_for_make "$formatted_path"`
4312 VCTOOLSET=$vctoolset
4314 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
4315 # are always "better", we list them in reverse chronological order.
4317 case "$vcnumwithdot" in
4319 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4323 # The expectation is that --with-windows-sdk should not need to be used
4324 if test -n "$with_windows_sdk"; then
4325 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4326 *" "$with_windows_sdk" "*)
4327 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4330 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4335 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4340 AC_MSG_ERROR([Visual C++ not found after all, huh])
4343 # ERROR if VS version < 16.5
4344 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4345 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4346 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4347 // between Visual Studio versions and _MSC_VER:
4351 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4353 # WARN if VS version < 16.10
4354 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4355 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4359 ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4361 if test $vs2019_recommended_version = yes; then
4362 AC_MSG_RESULT([yes])
4365 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."
4368 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4369 # version of the Explorer extension (and maybe other small
4370 # bits, too) needed when installing a 32-bit LibreOffice on a
4371 # 64-bit OS. The 64-bit Explorer extension is a feature that
4372 # has been present since long in OOo. Don't confuse it with
4373 # building LibreOffice itself as 64-bit code.
4378 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4379 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4380 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4381 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4384 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4385 AC_MSG_RESULT([found])
4387 AC_MSG_RESULT([not found])
4388 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4390 elif test "$WIN_HOST_ARCH" = "x64"; then
4395 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4396 AC_SUBST(CXX_X64_BINARY)
4398 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4399 # needed to support TWAIN scan on both 32- and 64-bit systems
4401 case "$WIN_HOST_ARCH" in
4403 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4404 if test -n "$CXX_X86_BINARY"; then
4406 AC_MSG_RESULT([preset])
4407 elif test -n "$WIN_MULTI_ARCH"; then
4409 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4410 AC_MSG_RESULT([found])
4412 AC_MSG_RESULT([not found])
4413 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4418 CXX_X86_BINARY=$MSVC_CXX
4422 AC_SUBST(CXX_X86_BINARY)
4430 AC_MSG_CHECKING([whether the compiler is actually Clang])
4431 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4437 [AC_MSG_RESULT([yes])
4439 [AC_MSG_RESULT([no])])
4440 AC_SUBST(COM_IS_CLANG)
4443 if test "$COM_IS_CLANG" = TRUE; then
4444 AC_MSG_CHECKING([whether Clang is new enough])
4445 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4446 #if !defined __apple_build_version__
4450 [my_apple_clang=yes],[my_apple_clang=])
4451 if test "$my_apple_clang" = yes; then
4452 AC_MSG_RESULT([assumed yes (Apple Clang)])
4453 elif test "$_os" = Emscripten; then
4454 AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4456 if test "$_os" = WINNT; then
4457 dnl In which case, assume clang-cl:
4462 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4463 CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4464 CLANGVER=`echo $clang_version \
4465 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4466 if test "$CLANGVER" -ge 80001; then
4467 AC_MSG_RESULT([yes ($clang_version)])
4469 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 8.0.1])
4471 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4472 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4476 SHOWINCLUDES_PREFIX=
4477 if test "$_os" = WINNT; then
4478 dnl We need to guess the prefix of the -showIncludes output, it can be
4480 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4481 echo "#include <stdlib.h>" > conftest.c
4482 SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4483 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4484 rm -f conftest.c conftest.obj
4485 if test -z "$SHOWINCLUDES_PREFIX"; then
4486 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4488 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4491 AC_SUBST(SHOWINCLUDES_PREFIX)
4494 # prefix C with ccache if needed
4496 if test "$CCACHE" != ""; then
4497 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4501 CFLAGS="$CFLAGS --ccache-skip -O2"
4502 # msvc does not fail on unknown options, check stdout
4503 if test "$COM" = MSC; then
4504 CFLAGS="$CFLAGS -nologo"
4506 save_ac_c_werror_flag=$ac_c_werror_flag
4507 ac_c_werror_flag=yes
4508 dnl an empty program will do, we're checking the compiler flags
4509 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4510 [use_ccache=yes], [use_ccache=no])
4512 ac_c_werror_flag=$save_ac_c_werror_flag
4513 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4514 AC_MSG_RESULT([yes])
4517 CC_BASE="ccache $CC_BASE"
4523 # ===================================================================
4524 # check various GCC options that Clang does not support now but maybe
4525 # will somewhen in the future, check them even for GCC, so that the
4527 # ===================================================================
4530 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4531 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4533 CFLAGS="$CFLAGS -Werror -ggdb2"
4534 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4536 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4537 AC_MSG_RESULT([yes])
4542 if test "$host_cpu" = "m68k"; then
4543 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4545 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4546 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4548 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4549 AC_MSG_RESULT([yes])
4555 AC_SUBST(HAVE_GCC_GGDB2)
4557 dnl ===================================================================
4558 dnl Test the gcc version
4559 dnl ===================================================================
4560 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4561 AC_MSG_CHECKING([the GCC version])
4562 _gcc_version=`$CC -dumpfullversion`
4563 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4564 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4565 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4567 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4569 if test "$gcc_full_version" -lt 70000; then
4570 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4573 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4574 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4575 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4576 # (which reports itself as GCC 4.2.1).
4579 AC_SUBST(GCC_VERSION)
4581 dnl Set the ENABLE_DBGUTIL variable
4582 dnl ===================================================================
4583 AC_MSG_CHECKING([whether to build with additional debug utilities])
4584 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4585 ENABLE_DBGUTIL="TRUE"
4586 # this is an extra var so it can have different default on different MSVC
4587 # versions (in case there are version specific problems with it)
4588 MSVC_USE_DEBUG_RUNTIME="TRUE"
4590 AC_MSG_RESULT([yes])
4591 # cppunit and graphite expose STL in public headers
4592 if test "$with_system_cppunit" = "yes"; then
4593 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4595 with_system_cppunit=no
4597 if test "$with_system_graphite" = "yes"; then
4598 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4600 with_system_graphite=no
4602 if test "$with_system_orcus" = "yes"; then
4603 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4605 with_system_orcus=no
4607 if test "$with_system_libcmis" = "yes"; then
4608 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4610 with_system_libcmis=no
4612 if test "$with_system_hunspell" = "yes"; then
4613 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4615 with_system_hunspell=no
4617 if test "$with_system_gpgmepp" = "yes"; then
4618 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4620 with_system_gpgmepp=no
4622 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4623 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4624 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4625 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4626 # of those two is using the system variant:
4627 if test "$with_system_libnumbertext" = "yes"; then
4628 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4630 with_system_libnumbertext=no
4632 if test "$with_system_libwps" = "yes"; then
4633 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4635 with_system_libwps=no
4639 MSVC_USE_DEBUG_RUNTIME=""
4642 AC_SUBST(ENABLE_DBGUTIL)
4643 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4645 dnl Set the ENABLE_DEBUG variable.
4646 dnl ===================================================================
4647 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4648 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4650 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4651 if test -z "$libo_fuzzed_enable_debug"; then
4652 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4654 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4659 AC_MSG_CHECKING([whether to do a debug build])
4660 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4662 if test -n "$ENABLE_DBGUTIL" ; then
4663 AC_MSG_RESULT([yes (dbgutil)])
4665 AC_MSG_RESULT([yes])
4671 AC_SUBST(ENABLE_DEBUG)
4673 dnl ===================================================================
4674 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4675 dnl This is done only after compiler checks (need to know if Clang is
4676 dnl used, for different defaults) and after checking if a debug build
4677 dnl is wanted (non-debug builds get the default linker if not explicitly
4678 dnl specified otherwise).
4679 dnl All checks for linker features/options should come after this.
4680 dnl ===================================================================
4683 use_ld=-fuse-ld=${1%%:*}
4685 if test "$use_ld_path" != "$1"; then
4686 if test "$COM_IS_CLANG" = TRUE; then
4687 if test "$CLANGVER" -ge 120000; then
4688 use_ld="${use_ld} --ld-path=${use_ld_path}"
4690 use_ld="-fuse-ld=${use_ld_path}"
4693 # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4694 # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4695 # pickup the alternative linker, when called by libtool for linking.
4696 # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4697 AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4700 use_ld_fail_if_error=$2
4702 AC_MSG_CHECKING([for $use_ld linker support])
4703 use_ld_ldflags_save="$LDFLAGS"
4704 LDFLAGS="$LDFLAGS $use_ld"
4705 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4708 printf ("hello world\n");
4709 ])], USE_LD=$use_ld, [])
4710 if test -n "$USE_LD"; then
4711 AC_MSG_RESULT( yes )
4714 if test -n "$use_ld_fail_if_error"; then
4720 if test -n "$use_ld_ok"; then
4721 dnl keep the value of LDFLAGS
4724 LDFLAGS="$use_ld_ldflags_save"
4728 if test "$enable_ld" != "no"; then
4729 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4730 if test -n "$enable_ld"; then
4731 check_use_ld "$enable_ld" fail_if_error
4732 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4733 dnl non-debug builds default to the default linker
4735 elif test -n "$COM_IS_CLANG"; then
4737 if test $? -ne 0; then
4739 if test $? -ne 0; then
4744 # For gcc first try gold, new versions also support lld/mold.
4746 if test $? -ne 0; then
4748 if test $? -ne 0; then
4753 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4755 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4756 if test -z "$ld_used"; then
4759 AC_MSG_CHECKING([for linker that is used])
4760 AC_MSG_RESULT([$ld_used])
4761 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4762 if echo "$ld_used" | grep -q "^GNU ld"; then
4763 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4764 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4768 if test "$enable_ld" = "yes"; then
4769 AC_MSG_ERROR([--enable-ld not supported])
4776 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4777 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4778 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4779 bsymbolic_functions_ldflags_save=$LDFLAGS
4780 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4781 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4784 printf ("hello world\n");
4785 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4786 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4787 AC_MSG_RESULT( found )
4789 AC_MSG_RESULT( not found )
4791 LDFLAGS=$bsymbolic_functions_ldflags_save
4793 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4796 if test "$GCC" = "yes"; then
4797 for flag in "--gc-sections" "-dead_strip"; do
4798 AC_MSG_CHECKING([for $flag linker support])
4799 ldflags_save=$LDFLAGS
4800 LDFLAGS="$LDFLAGS -Wl,$flag"
4801 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4804 printf ("hello world\n");
4806 LD_GC_SECTIONS="-Wl,$flag"
4807 AC_MSG_RESULT( found )
4809 AC_MSG_RESULT( not found )
4811 LDFLAGS=$ldflags_save
4812 if test -n "$LD_GC_SECTIONS"; then
4817 AC_SUBST(LD_GC_SECTIONS)
4819 HAVE_EXTERNAL_DWARF=
4820 if test "$enable_split_debug" != no; then
4822 if test -n "$ENABLE_LTO"; then
4823 : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4824 elif test "$enable_split_debug" = yes; then
4826 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4827 elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4830 if test -n "$use_split_debug"; then
4831 if test "$_os" = "Emscripten"; then
4832 TEST_CC_FLAG=-gseparate-dwarf
4834 TEST_CC_FLAG=-gsplit-dwarf
4836 AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4838 CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4839 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4841 if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4842 AC_MSG_RESULT([yes])
4844 if test "$enable_split_debug" = yes; then
4851 if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4852 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4853 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4856 AC_SUBST(HAVE_EXTERNAL_DWARF)
4858 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4859 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4861 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4862 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4864 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4865 AC_MSG_RESULT([yes])
4869 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4872 if test "$enable_gdb_index" != "no"; then
4873 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4874 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4875 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4877 CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4879 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4880 if test "$have_ggnu_pubnames" != "TRUE"; then
4881 if test "$enable_gdb_index" = "yes"; then
4882 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4887 AC_MSG_RESULT( yes )
4888 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4889 ldflags_save=$LDFLAGS
4890 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4891 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4894 printf ("hello world\n");
4895 ])], ENABLE_GDB_INDEX=TRUE, [])
4896 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4897 AC_MSG_RESULT( yes )
4899 if test "$enable_gdb_index" = "yes"; then
4905 LDFLAGS=$ldflags_save
4909 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4910 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4911 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4914 AC_SUBST(ENABLE_GDB_INDEX)
4916 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4919 if test "$enable_sal_log" = yes; then
4922 AC_SUBST(ENABLE_SAL_LOG)
4924 dnl Check for enable symbols option
4925 dnl ===================================================================
4926 AC_MSG_CHECKING([whether to generate debug information])
4927 if test -z "$enable_symbols"; then
4928 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4934 if test "$enable_symbols" = yes; then
4935 ENABLE_SYMBOLS_FOR=all
4936 AC_MSG_RESULT([yes])
4937 elif test "$enable_symbols" = no; then
4941 # Selective debuginfo.
4942 ENABLE_SYMBOLS_FOR="$enable_symbols"
4943 AC_MSG_RESULT([for "$enable_symbols"])
4945 AC_SUBST(ENABLE_SYMBOLS_FOR)
4947 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4948 # Building on Android with full symbols: without enough memory the linker never finishes currently.
4949 AC_MSG_CHECKING([whether enough memory is available for linking])
4950 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4951 # Check for 15GB, as Linux reports a bit less than the physical memory size.
4952 if test -n "$mem_size" -a $mem_size -lt 15728640; then
4953 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4955 AC_MSG_RESULT([yes])
4960 ENABLE_OPTIMIZED_DEBUG=
4961 AC_MSG_CHECKING([whether to compile with optimization flags])
4962 if test -z "$enable_optimized"; then
4963 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4966 enable_optimized=yes
4969 if test "$enable_optimized" = yes; then
4970 ENABLE_OPTIMIZED=TRUE
4971 AC_MSG_RESULT([yes])
4972 elif test "$enable_optimized" = debug; then
4973 ENABLE_OPTIMIZED_DEBUG=TRUE
4974 AC_MSG_RESULT([yes (debug)])
4976 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4977 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4979 CFLAGS="$CFLAGS -Werror -Og"
4980 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4982 if test "$HAVE_GCC_OG" = "TRUE"; then
4983 AC_MSG_RESULT([yes])
4988 if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4989 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4994 AC_SUBST(ENABLE_OPTIMIZED)
4995 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4998 # determine CPUNAME, OS, ...
5008 PLATFORMID=aix_powerpc
5024 if test "$enable_ios_simulator" = "yes"; then
5029 PLATFORMID=macosx_aarch64
5033 if test "$enable_ios_simulator" = "yes"; then
5038 PLATFORMID=macosx_x86_64
5041 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5054 if test "$enable_ios_simulator" = "yes"; then
5055 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5059 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5064 PLATFORMID=ios_arm64
5077 PLATFORMID=dragonfly_x86
5082 PLATFORMID=dragonfly_x86_64
5085 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5099 PLATFORMID=freebsd_aarch64
5105 PLATFORMID=freebsd_x86
5110 PLATFORMID=freebsd_x86_64
5115 PLATFORMID=freebsd_powerpc64
5120 PLATFORMID=freebsd_powerpc
5123 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5139 PLATFORMID=haiku_x86
5144 PLATFORMID=haiku_x86_64
5147 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5163 PLATFORMID=kfreebsd_x86
5168 PLATFORMID=kfreebsd_x86_64
5171 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5176 linux-gnu*|linux-musl*)
5186 PLATFORMID=linux_aarch64
5188 EPM_FLAGS="-a arm64"
5193 PLATFORMID=linux_alpha
5199 PLATFORMID=linux_arm_eabi
5203 PLATFORMID=linux_arm_oabi
5211 PLATFORMID=linux_hppa
5216 PLATFORMID=linux_x86
5221 PLATFORMID=linux_ia64
5227 PLATFORMID=linux_mips_eb
5232 EPM_FLAGS="-a mips64"
5233 PLATFORMID=linux_mips64_eb
5238 EPM_FLAGS="-a mips64el"
5239 PLATFORMID=linux_mips64_el
5244 EPM_FLAGS="-a mipsel"
5245 PLATFORMID=linux_mips_el
5250 PLATFORMID=linux_m68k
5255 PLATFORMID=linux_powerpc
5260 PLATFORMID=linux_powerpc64
5264 RTL_ARCH=PowerPC_64_LE
5265 PLATFORMID=linux_powerpc64_le
5270 PLATFORMID=linux_sparc
5275 PLATFORMID=linux_sparc64
5280 PLATFORMID=linux_s390
5285 PLATFORMID=linux_s390x
5290 PLATFORMID=linux_x86_64
5294 RTL_ARCH=LOONGARCH64
5295 PLATFORMID=linux_loongarch64
5298 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5314 PLATFORMID=android_arm_eabi
5319 PLATFORMID=android_aarch64
5324 PLATFORMID=android_x86
5329 PLATFORMID=android_x86_64
5332 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5347 PLATFORMID=netbsd_x86
5352 PLATFORMID=netbsd_powerpc
5357 PLATFORMID=netbsd_sparc
5362 PLATFORMID=netbsd_x86_64
5365 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5380 PLATFORMID=openbsd_x86
5385 PLATFORMID=openbsd_x86_64
5388 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5391 SOLARINC="$SOLARINC -I/usr/local/include"
5404 PLATFORMID=solaris_x86
5409 PLATFORMID=solaris_sparc
5414 PLATFORMID=solaris_sparc64
5417 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5420 SOLARINC="$SOLARINC -I/usr/local/include"
5433 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5438 PLATFORMID=linux_x86
5442 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5447 if test "$enable_gui" = "no"; then
5448 if test "$using_x11" != yes; then
5449 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5455 AC_DEFINE(HAVE_FEATURE_UI)
5457 AC_SUBST(DISABLE_GUI)
5459 if test "$with_x" = "no"; then
5463 if test -z "$USING_X11" -a "$DISABLE_DYNLOADING" = TRUE -a "$enable_gen" = "yes"; then
5464 AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5467 if test "$using_x11" = yes; then
5468 if test "$USING_X11" = TRUE; then
5469 AC_DEFINE(USING_X11)
5472 if test "$DISABLE_DYNLOADING" = TRUE; then
5477 if test "$USING_X11" = TRUE; then
5478 AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5482 WORKDIR="${BUILDDIR}/workdir"
5483 INSTDIR="${BUILDDIR}/instdir"
5484 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5485 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5493 AC_SUBST([INSTROOT])
5494 AC_SUBST([INSTROOTBASE])
5498 AC_SUBST(PLATFORMID)
5499 AC_SUBST(WINDOWS_X64)
5500 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5501 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5503 if test "$OS" = WNT -a "$COM" = MSC; then
5505 INTEL) CPPU_ENV=msci ;;
5506 X86_64) CPPU_ENV=mscx ;;
5507 AARCH64) CPPU_ENV=msca ;;
5509 AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5517 dnl ===================================================================
5518 dnl Test which package format to use
5519 dnl ===================================================================
5520 AC_MSG_CHECKING([which package format to use])
5521 if test -n "$with_package_format" -a "$with_package_format" != no; then
5522 for i in $with_package_format; do
5524 aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5527 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5528 aix - AIX software distribution
5529 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5530 deb - Debian software distribution
5531 pkg - Solaris software distribution
5532 rpm - RedHat software distribution
5534 LibreOffice additionally supports:
5535 archive - .tar.gz or .zip
5537 installed - installation tree
5543 # fakeroot is needed to ensure correct file ownerships/permissions
5544 # inside deb packages and tar archives created on Linux and Solaris.
5545 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5546 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5547 if test "$FAKEROOT" = "no"; then
5549 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5552 PKGFORMAT="$with_package_format"
5553 AC_MSG_RESULT([$PKGFORMAT])
5556 AC_MSG_RESULT([none])
5560 dnl ===================================================================
5561 dnl handle help related options
5563 dnl If you change help related options, please update README.help
5564 dnl ===================================================================
5571 AC_MSG_CHECKING([which help to build])
5572 if test -n "$with_help" -a "$with_help" != "no"; then
5573 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5574 BUILD_TYPE="$BUILD_TYPE HELP"
5575 case "$with_help" in
5577 ENABLE_HTMLHELP=TRUE
5579 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5580 AC_MSG_RESULT([HTML (local)])
5583 ENABLE_HTMLHELP=TRUE
5585 AC_MSG_RESULT([HTML (online)])
5589 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5590 AC_MSG_RESULT([XML (local)])
5593 AC_MSG_ERROR([Unknown --with-help=$with_help])
5600 AC_MSG_CHECKING([if we need to build the help index tooling])
5601 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5602 BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5604 AC_MSG_RESULT([yes])
5609 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5610 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5611 if test "$HELP_ONLINE" != TRUE; then
5612 AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5614 case "$with_omindex" in
5616 HELP_OMINDEX_PAGE=TRUE
5617 AC_MSG_RESULT([SERVER])
5620 AC_MSG_RESULT([NOXAP])
5623 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5630 AC_MSG_CHECKING([whether to include the XML-help support])
5631 if test "$enable_xmlhelp" = yes; then
5632 BUILD_TYPE="$BUILD_TYPE XMLHELP"
5634 AC_DEFINE(HAVE_FEATURE_XMLHELP)
5635 AC_MSG_RESULT([yes])
5637 if test "$with_help" = yes; then
5638 add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5643 dnl Test whether to integrate helppacks into the product's installer
5644 AC_MSG_CHECKING([for helppack integration])
5645 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5646 AC_MSG_RESULT([no integration])
5648 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5649 AC_MSG_RESULT([integration])
5652 AC_SUBST([ENABLE_HTMLHELP])
5653 AC_SUBST([HELP_OMINDEX_PAGE])
5654 AC_SUBST([HELP_ONLINE])
5655 # WITH_HELPPACKS is used only in configure
5657 dnl ===================================================================
5658 dnl Set up a different compiler to produce tools to run on the build
5659 dnl machine when doing cross-compilation
5660 dnl ===================================================================
5662 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5663 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5664 if test "$cross_compiling" = "yes"; then
5665 AC_MSG_CHECKING([for BUILD platform configuration])
5667 rm -rf CONF-FOR-BUILD config_build.mk
5668 mkdir CONF-FOR-BUILD
5669 # Here must be listed all files needed when running the configure script. In particular, also
5670 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5671 # keep them in the same order as there.
5672 (cd $SRC_ROOT && tar cf - \
5674 bin/get_config_variables \
5675 solenv/bin/getcompver.awk \
5676 solenv/inc/langlist.mk \
5679 config_host_lang.mk.in \
5682 bin/bffvalidator.sh.in \
5683 bin/odfvalidator.sh.in \
5684 bin/officeotron.sh.in \
5685 hardened_runtime.xcent.in \
5686 instsetoo_native/util/openoffice.lst.in \
5688 sysui/desktop/macosx/Info.plist.in \
5689 .vscode/vs-code-template.code-workspace.in \
5690 solenv/lockfile/autoconf.h.in \
5692 | (cd CONF-FOR-BUILD && tar xf -)
5693 cp configure CONF-FOR-BUILD
5694 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5696 unset COM USING_X11 OS CPUNAME
5697 unset CC CXX SYSBASE CFLAGS
5698 unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5699 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5700 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5701 unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5702 if test -n "$CC_FOR_BUILD"; then
5703 export CC="$CC_FOR_BUILD"
5704 CC_BASE=`first_arg_basename "$CC"`
5706 if test -n "$CXX_FOR_BUILD"; then
5707 export CXX="$CXX_FOR_BUILD"
5708 CXX_BASE=`first_arg_basename "$CXX"`
5710 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5713 # Handle host configuration, which affects the cross-toolset too
5715 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5716 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5717 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5718 # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5719 if test -n "$ENABLE_JAVA"; then
5722 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5723 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5726 if test -z "$with_jdk_home"; then
5727 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.])
5732 sub_conf_opts="$sub_conf_opts --without-java"
5734 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5735 test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5736 test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5737 test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5738 test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5739 test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5740 test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5741 test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5742 test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5743 if test "$_os" = "Emscripten"; then
5744 sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5745 if test "${with_main_module+set}" = set; then
5746 sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5748 sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5752 # Don't bother having configure look for stuff not needed for the build platform anyway
5753 # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5754 sub_conf_defaults=" \
5755 --build="$build_alias" \
5756 --disable-cairo-canvas \
5758 --disable-customtarget-components \
5759 --disable-firebird-sdbc \
5761 --disable-gstreamer-1-0 \
5765 --disable-mariadb-sdbc \
5767 --disable-online-update \
5769 --disable-pdfimport \
5770 --disable-postgresql-sdbc \
5773 --enable-dynamic-loading \
5774 --enable-icecream="$enable_icecream" \
5778 --with-tls=openssl \
5780 # single quotes added for better readability in case of spaces
5781 echo " Running CONF-FOR-BUILD/configure" \
5782 $sub_conf_defaults \
5783 --with-parallelism="'$with_parallelism'" \
5784 --with-theme="'$with_theme'" \
5785 --with-vendor="'$with_vendor'" \
5787 $with_build_platform_configure_options \
5791 $sub_conf_defaults \
5792 --with-parallelism="$with_parallelism" \
5793 --with-theme="$with_theme" \
5794 "--with-vendor=$with_vendor" \
5796 $with_build_platform_configure_options \
5798 2>&1 | sed -e 's/^/ /'
5799 if test [${PIPESTATUS[0]}] -ne 0; then
5800 AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5803 # filter permitted build targets
5804 PERMITTED_BUILD_TARGETS="
5839 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5840 # newlined lists, to use grep as a filter
5841 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5842 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5843 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5844 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5846 cp config_host.mk ../config_build.mk
5847 cp config_host_lang.mk ../config_build_lang.mk
5848 mv config.log ../config.Build.log
5849 mkdir -p ../config_build
5850 mv config_host/*.h ../config_build
5851 test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5853 # all these will get a _FOR_BUILD postfix
5854 DIRECT_FOR_BUILD_SETTINGS="
5862 JDK_SECURITYMANAGER_DISALLOWED
5866 LIBO_URE_MISC_FOLDER
5872 # these overwrite host config with build config
5873 OVERWRITING_SETTINGS="
5877 JAVA_CLASSPATH_NOT_SET
5889 # these need some special handling
5890 EXTRA_HANDLED_SETTINGS="
5897 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5901 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5902 echo "$line" >>build-config
5904 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5906 VV=`eval "echo $VV"`
5907 if test -n "$VV"; then
5908 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5909 echo "$line" >>build-config
5913 for V in $OVERWRITING_SETTINGS; do
5915 VV=`eval "echo $VV"`
5916 if test -n "$VV"; then
5917 line=${V}='${'${V}:-$VV'}'
5918 echo "$line" >>build-config
5922 for V in INSTDIR INSTROOT WORKDIR; do
5924 VV=`eval "echo $VV"`
5925 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5926 if test -n "$VV"; then
5927 line="${V}_FOR_BUILD='$VV'"
5928 echo "$line" >>build-config
5933 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5934 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])
5935 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5936 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5938 eval `cat CONF-FOR-BUILD/build-config`
5940 AC_MSG_RESULT([checking for BUILD platform configuration... done])
5942 rm -rf CONF-FOR-BUILD
5946 CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5947 CXX_FOR_BUILD="$CXX"
5948 INSTDIR_FOR_BUILD="$INSTDIR"
5949 INSTROOT_FOR_BUILD="$INSTROOT"
5950 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5951 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5952 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5953 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5954 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5955 WORKDIR_FOR_BUILD="$WORKDIR"
5957 AC_SUBST(OS_FOR_BUILD)
5958 AC_SUBST(INSTDIR_FOR_BUILD)
5959 AC_SUBST(INSTROOT_FOR_BUILD)
5960 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5961 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5962 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5963 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5964 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5965 AC_SUBST(WORKDIR_FOR_BUILD)
5966 AC_SUBST(CC_FOR_BUILD)
5967 AC_SUBST(CXX_FOR_BUILD)
5968 AC_SUBST(CPPU_ENV_FOR_BUILD)
5970 dnl ===================================================================
5971 dnl Check for lockfile deps
5972 dnl ===================================================================
5973 if test -z "$CROSS_COMPILING"; then
5974 test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
5975 test "${with_system_lockfile+set}" = set || with_system_lockfile=no
5976 AC_MSG_CHECKING([which lockfile binary to use])
5977 case "$with_system_lockfile" in
5979 AC_MSG_RESULT([external])
5980 AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
5983 AC_MSG_RESULT([internal])
5986 if test -x "$with_system_lockfile"; then
5987 LOCKFILE="$with_system_lockfile"
5989 AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
5991 AC_MSG_RESULT([$with_system_lockfile])
5996 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
5997 add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
6000 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
6001 AC_CHECK_FUNCS([utime utimes])
6004 dnl ===================================================================
6005 dnl Check for syslog header
6006 dnl ===================================================================
6007 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
6009 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
6010 dnl ===================================================================
6011 AC_MSG_CHECKING([whether to turn warnings to errors])
6012 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
6013 ENABLE_WERROR="TRUE"
6014 PYTHONWARNINGS="error"
6015 AC_MSG_RESULT([yes])
6017 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
6018 ENABLE_WERROR="TRUE"
6019 PYTHONWARNINGS="error"
6020 AC_MSG_RESULT([yes])
6025 AC_SUBST(ENABLE_WERROR)
6026 AC_SUBST(PYTHONWARNINGS)
6028 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
6029 dnl ===================================================================
6030 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
6031 if test -z "$enable_assert_always_abort"; then
6032 if test "$ENABLE_DEBUG" = TRUE; then
6033 enable_assert_always_abort=yes
6035 enable_assert_always_abort=no
6038 if test "$enable_assert_always_abort" = "yes"; then
6039 ASSERT_ALWAYS_ABORT="TRUE"
6040 AC_MSG_RESULT([yes])
6042 ASSERT_ALWAYS_ABORT="FALSE"
6045 AC_SUBST(ASSERT_ALWAYS_ABORT)
6047 # Determine whether to use ooenv for the instdir installation
6048 # ===================================================================
6049 if test $_os != "WINNT" -a $_os != "Darwin"; then
6050 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6051 if test -z "$enable_ooenv"; then
6052 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6058 if test "$enable_ooenv" = "no"; then
6062 AC_MSG_RESULT([yes])
6065 AC_SUBST(ENABLE_OOENV)
6067 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6068 if test "$enable_qt5" = "no"; then
6069 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6075 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6076 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6077 AC_MSG_RESULT([yes])
6079 AC_DEFINE(HAVE_FEATURE_PAGEIN)
6083 AC_SUBST(ENABLE_PAGEIN)
6085 dnl ===================================================================
6086 dnl check for cups support
6087 dnl ===================================================================
6089 AC_MSG_CHECKING([whether to enable CUPS support])
6090 if test "$test_cups" = yes -a "$enable_cups" != no; then
6092 AC_MSG_RESULT([yes])
6094 AC_MSG_CHECKING([whether cups support is present])
6095 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6096 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6097 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6098 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6104 AC_SUBST(ENABLE_CUPS)
6106 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.4.1],,system,TRUE)
6108 dnl whether to find & fetch external tarballs?
6109 dnl ===================================================================
6110 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6111 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6112 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6114 TARFILE_LOCATION="$LODE_HOME/ext_tar"
6117 if test -z "$TARFILE_LOCATION"; then
6118 if test -d "$SRC_ROOT/src" ; then
6119 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6120 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6122 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6124 AbsolutePath "$TARFILE_LOCATION"
6125 PathFormat "${absolute_path}"
6126 TARFILE_LOCATION="${formatted_path_unix}"
6128 AC_SUBST(TARFILE_LOCATION)
6130 AC_MSG_CHECKING([whether we want to fetch tarballs])
6131 if test "$enable_fetch_external" != "no"; then
6132 if test "$with_all_tarballs" = "yes"; then
6133 AC_MSG_RESULT([yes, all of them])
6134 DO_FETCH_TARBALLS="ALL"
6136 AC_MSG_RESULT([yes, if we use them])
6137 DO_FETCH_TARBALLS="TRUE"
6143 AC_SUBST(DO_FETCH_TARBALLS)
6145 dnl Test whether to include MySpell dictionaries
6146 dnl ===================================================================
6147 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6148 if test "$with_myspell_dicts" = "yes"; then
6149 AC_MSG_RESULT([yes])
6150 WITH_MYSPELL_DICTS=TRUE
6151 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6152 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6157 AC_SUBST(WITH_MYSPELL_DICTS)
6159 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6160 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6161 if test "$with_system_dicts" = yes; then
6162 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6164 with_system_dicts=no
6167 AC_MSG_CHECKING([whether to use dicts from external paths])
6168 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6169 AC_MSG_RESULT([yes])
6171 AC_MSG_CHECKING([for spelling dictionary directory])
6172 if test -n "$with_external_dict_dir"; then
6173 DICT_SYSTEM_DIR=file://$with_external_dict_dir
6175 DICT_SYSTEM_DIR=file:///usr/share/hunspell
6176 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6177 DICT_SYSTEM_DIR=file:///usr/share/myspell
6180 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6181 AC_MSG_CHECKING([for hyphenation patterns directory])
6182 if test -n "$with_external_hyph_dir"; then
6183 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6185 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6187 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6188 AC_MSG_CHECKING([for thesaurus directory])
6189 if test -n "$with_external_thes_dir"; then
6190 THES_SYSTEM_DIR=file://$with_external_thes_dir
6192 THES_SYSTEM_DIR=file:///usr/share/mythes
6194 AC_MSG_RESULT([$THES_SYSTEM_DIR])
6199 AC_SUBST(SYSTEM_DICTS)
6200 AC_SUBST(DICT_SYSTEM_DIR)
6201 AC_SUBST(HYPH_SYSTEM_DIR)
6202 AC_SUBST(THES_SYSTEM_DIR)
6204 dnl ===================================================================
6205 dnl Precompiled headers.
6207 AC_MSG_CHECKING([whether to enable pch feature])
6208 if test -z "$enable_pch"; then
6209 if test "$_os" = "WINNT"; then
6210 # Enabled by default on Windows.
6212 # never use sccache on auto-enabled PCH builds, except if requested explicitly
6213 if test -z "$enable_ccache" -a "$SCCACHE"; then
6220 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6221 AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6223 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6224 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6226 if test "$enable_pch" = "system"; then
6228 AC_MSG_RESULT([yes (system headers)])
6229 elif test "$enable_pch" = "base"; then
6231 AC_MSG_RESULT([yes (system and base headers)])
6232 elif test "$enable_pch" = "normal"; then
6234 AC_MSG_RESULT([yes (normal)])
6235 elif test "$enable_pch" = "full"; then
6237 AC_MSG_RESULT([yes (full)])
6238 elif test "$enable_pch" = "yes"; then
6239 # Pick a suitable default.
6240 if test "$GCC" = "yes"; then
6241 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6242 # while making the PCHs larger and rebuilds more likely.
6244 AC_MSG_RESULT([yes (system and base headers)])
6246 # With MSVC the highest level makes a significant difference,
6247 # and it was the default when there used to be no PCH levels.
6249 AC_MSG_RESULT([yes (full)])
6251 elif test "$enable_pch" = "no"; then
6254 AC_MSG_ERROR([Unknown value for --enable-pch])
6256 AC_SUBST(ENABLE_PCH)
6257 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6258 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6259 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6260 if test "$CCACHE_BIN" != "not found"; then
6261 AC_MSG_CHECKING([ccache version])
6262 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6263 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6264 AC_MSG_RESULT([$CCACHE_VERSION])
6265 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6266 if test "$CCACHE_NUMVER" -gt "030701"; then
6267 AC_MSG_RESULT([yes])
6269 AC_MSG_RESULT([no (not newer than 3.7.1)])
6275 PCH_INSTANTIATE_TEMPLATES=
6276 if test -n "$ENABLE_PCH"; then
6277 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6279 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6280 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6282 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6288 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6290 BUILDING_PCH_WITH_OBJ=
6291 if test -n "$ENABLE_PCH"; then
6292 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6294 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6295 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6297 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6303 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6308 if test "$COM" = MSC; then
6309 fpch_prefix="-Xclang "
6311 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6312 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6314 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6315 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6316 [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6318 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6319 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6320 [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6322 if test -n "$PCH_CODEGEN"; then
6328 AC_SUBST(PCH_CODEGEN)
6329 AC_SUBST(PCH_NO_CODEGEN)
6331 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6332 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6334 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6335 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6337 if test -n "$PCH_DEBUGINFO"; then
6343 AC_SUBST(PCH_DEBUGINFO)
6347 AC_MSG_CHECKING([the GNU Make version])
6348 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6349 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6350 if test "$_make_longver" -ge "038200"; then
6351 AC_MSG_RESULT([$GNUMAKE $_make_version])
6353 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
6356 # find if gnumake support file function
6357 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
6358 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
6359 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6360 TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
6362 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
6363 \$(file >test.txt,Success )
6370 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
6371 if test -f $TESTGMAKEFILEFUNC/test.txt; then
6372 HAVE_GNUMAKE_FILE_FUNC=TRUE
6373 AC_MSG_RESULT([yes])
6377 rm -rf $TESTGMAKEFILEFUNC
6378 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
6380 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6382 if test "$_make_ver_check" = ""; then
6386 HAVE_LD_HASH_STYLE=FALSE
6387 WITH_LINKER_HASH_STYLE=
6388 AC_MSG_CHECKING([for --hash-style gcc linker support])
6389 if test "$GCC" = "yes"; then
6390 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6391 hash_styles="gnu sysv"
6392 elif test "$with_linker_hash_style" = "no"; then
6395 hash_styles="$with_linker_hash_style"
6398 for hash_style in $hash_styles; do
6399 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6400 hash_style_ldflags_save=$LDFLAGS
6401 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6403 AC_RUN_IFELSE([AC_LANG_PROGRAM(
6410 HAVE_LD_HASH_STYLE=TRUE
6411 WITH_LINKER_HASH_STYLE=$hash_style
6413 [HAVE_LD_HASH_STYLE=FALSE],
6414 [HAVE_LD_HASH_STYLE=FALSE])
6415 LDFLAGS=$hash_style_ldflags_save
6418 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6419 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6423 LDFLAGS=$hash_style_ldflags_save
6427 AC_SUBST(HAVE_LD_HASH_STYLE)
6428 AC_SUBST(WITH_LINKER_HASH_STYLE)
6430 dnl ===================================================================
6431 dnl Check whether there's a Perl version available.
6432 dnl ===================================================================
6433 if test -z "$with_perl_home"; then
6434 AC_PATH_PROG(PERL, perl)
6436 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6437 _perl_path="$with_perl_home/bin/perl"
6438 if test -x "$_perl_path"; then
6441 AC_MSG_ERROR([$_perl_path not found])
6445 dnl ===================================================================
6446 dnl Testing for Perl version 5 or greater.
6447 dnl $] is the Perl version variable, it is returned as an integer
6448 dnl ===================================================================
6449 if test "$PERL"; then
6450 AC_MSG_CHECKING([the Perl version])
6451 ${PERL} -e "exit($]);"
6453 if test "$_perl_version" -lt 5; then
6454 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6456 AC_MSG_RESULT([Perl $_perl_version])
6458 AC_MSG_ERROR([Perl not found, install Perl 5])
6461 dnl ===================================================================
6462 dnl Testing for required Perl modules
6463 dnl ===================================================================
6465 AC_MSG_CHECKING([for required Perl modules])
6466 perl_use_string="use Cwd ; use Digest::MD5"
6467 if test "$_os" = "WINNT"; then
6468 if test -n "$PKGFORMAT"; then
6469 for i in $PKGFORMAT; do
6472 # for getting fonts versions to use in MSI
6473 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6479 if test "$with_system_hsqldb" = "yes"; then
6480 perl_use_string="$perl_use_string ; use Archive::Zip"
6482 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6483 # OpenSSL needs that to build
6484 perl_use_string="$perl_use_string ; use FindBin"
6486 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6487 AC_MSG_RESULT([all modules found])
6489 AC_MSG_RESULT([failed to find some modules])
6490 # Find out which modules are missing.
6491 for i in $perl_use_string; do
6492 if test "$i" != "use" -a "$i" != ";"; then
6493 if ! $PERL -e "use $i;">/dev/null 2>&1; then
6494 missing_perl_modules="$missing_perl_modules $i"
6499 The missing Perl modules are: $missing_perl_modules
6500 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6503 dnl ===================================================================
6504 dnl Check for pkg-config
6505 dnl ===================================================================
6506 if test "$_os" != "WINNT"; then
6509 AC_SUBST(PKG_CONFIG)
6510 AC_SUBST(PKG_CONFIG_PATH)
6511 AC_SUBST(PKG_CONFIG_LIBDIR)
6513 if test "$_os" != "WINNT"; then
6515 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6516 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6517 # explicitly. Or put /path/to/compiler in PATH yourself.
6520 if test "$COM_IS_CLANG" = "TRUE"; then
6523 AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6524 AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6525 AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6526 AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6527 AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6528 AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6537 dnl ===================================================================
6538 dnl pkg-config checks on macOS
6539 dnl ===================================================================
6541 if test $_os = Darwin; then
6542 AC_MSG_CHECKING([for bogus pkg-config])
6543 if test -n "$PKG_CONFIG"; then
6544 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6545 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6547 if test "$enable_bogus_pkg_config" = "yes"; then
6548 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6550 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.])
6554 AC_MSG_RESULT([no, good])
6560 # Return value: $csctest
6564 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6565 if test -n "$regvalue"; then
6573 # Return value: $altest
6577 # We need this check to detect 4.6.1 or above.
6578 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6579 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6580 PathFormat "$regvalue"
6581 if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6587 reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6588 for x in $reglist; do
6589 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6590 PathFormat "$regvalue"
6591 if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6602 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6603 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6604 if test -n "$regvalue"; then
6611 find_winsdk_version()
6613 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6614 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6616 unset winsdktest winsdkbinsubdir winsdklibsubdir
6620 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6621 if test -n "$regvalue"; then
6622 winsdktest=$regvalue
6623 winsdklibsubdir=win8
6628 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6629 if test -n "$regvalue"; then
6630 winsdktest=$regvalue
6631 winsdklibsubdir=winv6.3
6636 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6637 if test -n "$regvalue"; then
6638 winsdktest=$regvalue
6639 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6640 if test -n "$regvalue"; then
6641 winsdkbinsubdir="$regvalue".0
6642 winsdklibsubdir=$winsdkbinsubdir
6643 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6644 local tmppath_unix=$(cygpath -u "$tmppath")
6645 # test exist the SDK path
6646 if test -d "$tmppath_unix"; then
6647 # when path is convertible to a short path then path is okay
6648 cygpath -d "$tmppath" >/dev/null 2>&1
6649 if test $? -ne 0; then
6650 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6653 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6664 # Return value: From find_winsdk_version
6668 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6669 find_winsdk_version $ver
6670 if test -n "$winsdktest"; then
6678 # Return value: $msmdir
6680 AC_MSG_CHECKING([for MSVC merge modules directory])
6684 dnl Order my_msm_files in increasing order. Then check the directories returned
6685 dnl by ls in an inner loop; assuming they are also ordered in increasing order,
6686 dnl the result will be the highest MSM version found in the highest directory.
6690 my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm Microsoft_VC143_CRT_x86.msm ${my_msm_files}"
6693 for f in $my_msm_files; do
6694 echo "$as_me:$LINENO: searching for $f" >&5
6700 for f in ${my_msm_files}; do
6701 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6702 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6703 echo "$as_me:$LINENO: looking for $my_msm_dir${f}])" >&5
6704 if test -e "$my_msm_dir${f}"; then
6712 if test -n "$msmdir"; then
6713 msmdir=`cygpath -m "$msmdir"`
6714 AC_MSG_RESULT([$msmdir])
6716 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6717 AC_MSG_FAILURE([not found])
6719 AC_MSG_WARN([not found (check config.log)])
6720 add_warning "MSM none of ${my_msm_files} found"
6725 find_msvc_x64_dlls()
6727 # Return value: $msvcdllpath, $msvcdlls
6729 AC_MSG_CHECKING([for MSVC x64 DLL path])
6731 dnl Order crtver in increasing order. Then check the directories returned by
6732 dnl ls in an inner loop; assuming they are also ordered in increasing order,
6733 dnl the result will be the highest CRT version found in the highest directory.
6735 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6738 for crtver in 141 142 143; do
6739 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6740 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6741 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6742 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6748 AC_MSG_RESULT([$msvcdllpath])
6749 AC_MSG_CHECKING([for MSVC x64 DLLs])
6750 msvcdlls="msvcp140.dll vcruntime140.dll"
6751 for dll in $msvcdlls; do
6752 if ! test -f "$msvcdllpath/$dll"; then
6753 AC_MSG_FAILURE([missing $dll])
6756 AC_MSG_RESULT([found all ($msvcdlls)])
6759 dnl =========================================
6760 dnl Check for the Windows SDK.
6761 dnl =========================================
6762 if test "$_os" = "WINNT"; then
6763 AC_MSG_CHECKING([for Windows SDK])
6764 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6766 WINDOWS_SDK_HOME=$winsdktest
6768 # normalize if found
6769 if test -n "$WINDOWS_SDK_HOME"; then
6770 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6771 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6774 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6777 if test -n "$WINDOWS_SDK_HOME"; then
6778 # Remove a possible trailing backslash
6779 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6781 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6782 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6783 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6784 have_windows_sdk_headers=yes
6785 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6786 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6787 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6788 have_windows_sdk_headers=yes
6789 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6790 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6791 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6792 have_windows_sdk_headers=yes
6794 have_windows_sdk_headers=no
6797 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6798 have_windows_sdk_libs=yes
6799 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6800 have_windows_sdk_libs=yes
6802 have_windows_sdk_libs=no
6805 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6806 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6807 the Windows SDK are installed.])
6811 if test -z "$WINDOWS_SDK_HOME"; then
6812 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6813 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6814 WINDOWS_SDK_VERSION=80
6815 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6816 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6817 WINDOWS_SDK_VERSION=81
6818 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6819 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6820 WINDOWS_SDK_VERSION=10
6821 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6823 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6825 PathFormat "$WINDOWS_SDK_HOME"
6826 WINDOWS_SDK_HOME="$formatted_path"
6827 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6828 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6829 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6830 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6831 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6832 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6833 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6837 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6838 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6839 dnl but not in v8.0), so allow this to be overridden with a
6840 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6841 dnl and configuration error if no WiLangId.vbs is found would arguably be
6842 dnl better, but I do not know under which conditions exactly it is needed by
6844 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6845 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6846 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6847 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6848 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6849 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6851 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6852 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6853 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6855 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6856 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6857 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6860 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6861 if test -n "$with_package_format" -a "$with_package_format" != no; then
6862 for i in "$with_package_format"; do
6863 if test "$i" = "msi"; then
6864 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6865 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6872 AC_SUBST(WINDOWS_SDK_HOME)
6873 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6874 AC_SUBST(WINDOWS_SDK_VERSION)
6875 AC_SUBST(WINDOWS_SDK_WILANGID)
6877 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6878 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6879 dnl dir, it also determines that dir's path w/o an arch segment if any,
6880 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6881 AC_MSG_CHECKING([for midl.exe])
6884 PathFormat "$winsdktest"
6885 winsdktest_unix="$formatted_path_unix"
6887 if test -n "$winsdkbinsubdir" \
6888 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6890 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6891 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6892 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6893 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6894 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6895 elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6896 MIDL_PATH=$winsdktest/Bin
6897 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6899 PathFormat "$MIDL_PATH"
6900 if test ! -f "$formatted_path_unix/midl.exe"; then
6901 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6903 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6906 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6907 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6909 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6910 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6911 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6912 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6913 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6914 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6915 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6916 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6917 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6918 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6919 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6920 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6922 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6926 AC_MSG_CHECKING([for csc.exe])
6928 PathFormat "$csctest"
6929 csctest_unix="$formatted_path_unix"
6930 if test -f "$csctest_unix/csc.exe"; then
6933 if test ! -f "$csctest_unix/csc.exe"; then
6934 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6936 AC_MSG_RESULT([$CSC_PATH/csc.exe])
6939 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6942 AC_MSG_CHECKING([for al.exe])
6943 if test -n "$winsdkbinsubdir" \
6944 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6946 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6947 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
6948 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6949 elif test -f "$winsdktest_unix/Bin/al.exe"; then
6950 AL_PATH="$winsdktest/Bin"
6953 if test -z "$AL_PATH"; then
6955 PathFormat "$altest"
6956 altest_unix="$formatted_path_unix"
6957 if test -f "$altest_unix/bin/al.exe"; then
6958 AL_PATH="$altest/bin"
6959 elif test -f "$altest_unix/al.exe"; then
6963 PathFormat "$AL_PATH"
6964 if test ! -f "$formatted_path_unix/al.exe"; then
6965 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6967 AC_MSG_RESULT([$AL_PATH/al.exe])
6970 AL_PATH=`win_short_path_for_make "$AL_PATH"`
6972 dnl Check mscoree.lib / .NET Framework dir
6973 AC_MSG_CHECKING(.NET Framework)
6975 PathFormat "$frametest"
6976 frametest="$formatted_path_unix"
6977 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6978 DOTNET_FRAMEWORK_HOME="$frametest"
6980 if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6981 DOTNET_FRAMEWORK_HOME="$winsdktest"
6984 PathFormat "$DOTNET_FRAMEWORK_HOME"
6985 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
6986 AC_MSG_ERROR([mscoree.lib not found])
6988 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6990 PathFormat "$MIDL_PATH"
6991 MIDL_PATH="$formatted_path"
6993 PathFormat "$AL_PATH"
6994 AL_PATH="$formatted_path"
6996 PathFormat "$DOTNET_FRAMEWORK_HOME"
6997 DOTNET_FRAMEWORK_HOME="$formatted_path"
6999 PathFormat "$CSC_PATH"
7000 CSC_PATH="$formatted_path"
7003 dnl ===================================================================
7004 dnl Testing for C++ compiler and version...
7005 dnl ===================================================================
7007 if test "$_os" != "WINNT"; then
7008 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
7009 save_CXXFLAGS=$CXXFLAGS
7011 CXXFLAGS=$save_CXXFLAGS
7012 if test -z "$CXX_BASE"; then
7013 CXX_BASE=`first_arg_basename "$CXX"`
7017 dnl check for GNU C++ compiler version
7018 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
7019 AC_MSG_CHECKING([the GNU C++ compiler version])
7021 _gpp_version=`$CXX -dumpversion`
7022 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
7024 if test "$_gpp_majmin" -lt "700"; then
7025 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
7027 AC_MSG_RESULT([ok (g++ $_gpp_version)])
7030 dnl see https://code.google.com/p/android/issues/detail?id=41770
7034 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
7035 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
7036 #include <bits/c++config.h>]],[[
7037 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
7038 && !defined(_GLIBCXX__PTHREADS) \
7039 && !defined(_GLIBCXX_HAS_GTHREADS)
7042 ]])],[AC_MSG_RESULT([yes])
7043 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
7045 if test $glibcxx_threads = yes; then
7046 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
7049 AC_SUBST(BOOST_CXXFLAGS)
7052 # prefx CXX with ccache if needed
7054 if test "$CCACHE" != ""; then
7055 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
7057 save_CXXFLAGS=$CXXFLAGS
7058 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
7059 # msvc does not fail on unknown options, check stdout
7060 if test "$COM" = MSC; then
7061 CXXFLAGS="$CXXFLAGS -nologo"
7063 save_ac_cxx_werror_flag=$ac_cxx_werror_flag
7064 ac_cxx_werror_flag=yes
7065 dnl an empty program will do, we're checking the compiler flags
7066 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
7067 [use_ccache=yes], [use_ccache=no])
7068 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7069 AC_MSG_RESULT([yes])
7072 CXX_BASE="ccache $CXX_BASE"
7075 CXXFLAGS=$save_CXXFLAGS
7076 ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7080 dnl ===================================================================
7081 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7082 dnl ===================================================================
7084 if test "$_os" != "WINNT"; then
7087 dnl Check whether there's a C pre-processor.
7092 dnl ===================================================================
7093 dnl Find integral type sizes and alignments
7094 dnl ===================================================================
7096 if test "$_os" != "WINNT"; then
7098 AC_CHECK_SIZEOF(long)
7099 AC_CHECK_SIZEOF(short)
7100 AC_CHECK_SIZEOF(int)
7101 AC_CHECK_SIZEOF(long long)
7102 AC_CHECK_SIZEOF(double)
7103 AC_CHECK_SIZEOF(void*)
7104 AC_CHECK_SIZEOF(size_t)
7106 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7107 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7108 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7109 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7110 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7111 SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7113 dnl Allow build without AC_CHECK_ALIGNOF, grrr
7114 m4_pattern_allow([AC_CHECK_ALIGNOF])
7115 m4_ifdef([AC_CHECK_ALIGNOF],
7117 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7118 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7119 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7120 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7123 case "$_os-$host_cpu" in
7125 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7126 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7127 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7128 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7131 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7132 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7133 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7134 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7137 if test -z "$ac_cv_alignof_short" -o \
7138 -z "$ac_cv_alignof_int" -o \
7139 -z "$ac_cv_alignof_long" -o \
7140 -z "$ac_cv_alignof_double"; then
7141 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.])
7147 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7148 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7149 if test $ac_cv_sizeof_long -eq 8; then
7150 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7151 elif test $ac_cv_sizeof_double -eq 8; then
7152 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7154 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7157 dnl Check for large file support
7159 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7160 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7162 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7163 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7167 SAL_TYPES_SIZEOFSHORT=2
7168 SAL_TYPES_SIZEOFINT=4
7169 SAL_TYPES_SIZEOFLONG=4
7170 SAL_TYPES_SIZEOFLONGLONG=8
7171 if test $WIN_HOST_BITS -eq 32; then
7172 SAL_TYPES_SIZEOFPOINTER=4
7175 SAL_TYPES_SIZEOFPOINTER=8
7178 SAL_TYPES_ALIGNMENT2=2
7179 SAL_TYPES_ALIGNMENT4=4
7180 SAL_TYPES_ALIGNMENT8=8
7183 AC_SUBST(LFS_CFLAGS)
7184 AC_SUBST(SIZEOF_SIZE_T)
7186 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7187 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7188 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7189 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7190 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7191 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7192 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7193 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7195 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7196 AC_MSG_CHECKING([whether jumbo sheets are supported])
7197 if test "$_os" != "WINNT"; then
7198 if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7199 AC_MSG_RESULT([yes])
7200 ENABLE_JUMBO_SHEETS=TRUE
7201 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7206 if test $WIN_HOST_BITS -gt 32; then
7207 # 64bit windows is special-cased for tools::Long because long is 32bit
7208 AC_MSG_RESULT([yes])
7209 ENABLE_JUMBO_SHEETS=TRUE
7210 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7215 AC_SUBST(ENABLE_JUMBO_SHEETS)
7217 dnl ===================================================================
7218 dnl Check whether to enable runtime optimizations
7219 dnl ===================================================================
7220 ENABLE_RUNTIME_OPTIMIZATIONS=
7221 AC_MSG_CHECKING([whether to enable runtime optimizations])
7222 if test -z "$enable_runtime_optimizations"; then
7226 enable_runtime_optimizations=no
7232 if test "$enable_runtime_optimizations" != no; then
7233 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7234 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7235 AC_MSG_RESULT([yes])
7239 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7241 dnl ===================================================================
7242 dnl Check if valgrind headers are available
7243 dnl ===================================================================
7245 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7246 prev_cppflags=$CPPFLAGS
7247 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7248 # or where does it come from?
7249 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7250 AC_CHECK_HEADER([valgrind/valgrind.h],
7251 [ENABLE_VALGRIND=TRUE])
7252 CPPFLAGS=$prev_cppflags
7254 AC_SUBST([ENABLE_VALGRIND])
7255 if test -z "$ENABLE_VALGRIND"; then
7256 if test "$with_valgrind" = yes; then
7257 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7261 AC_SUBST([VALGRIND_CFLAGS])
7264 dnl ===================================================================
7265 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7266 dnl ===================================================================
7268 # We need at least the sys/sdt.h include header.
7269 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7270 if test "$SDT_H_FOUND" = "TRUE"; then
7271 # Found sys/sdt.h header, now make sure the c++ compiler works.
7272 # Old g++ versions had problems with probes in constructors/destructors.
7273 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7275 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7276 #include <sys/sdt.h>
7284 ProbeClass(int& v, const char *n) : ref(v), name(n)
7286 DTRACE_PROBE2(_test_, cons, name, ref);
7289 void method(int min)
7291 DTRACE_PROBE3(_test_, meth, name, ref, min);
7297 DTRACE_PROBE2(_test_, dest, name, ref);
7302 DTRACE_PROBE1(_test_, call, i);
7303 ProbeClass inst = ProbeClass(i, "call");
7305 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7306 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7309 AC_CONFIG_HEADERS([config_host/config_probes.h])
7311 dnl ===================================================================
7313 dnl ===================================================================
7314 HAVE_GCC_STACK_CLASH_PROTECTION=
7315 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7316 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7318 CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7320 [AC_LANG_PROGRAM(, [[return 0;]])],
7321 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7322 [AC_MSG_RESULT([no])])
7325 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7327 CFLAGS="$CFLAGS -Werror -mno-avx"
7328 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7330 if test "$HAVE_GCC_AVX" = "TRUE"; then
7331 AC_MSG_RESULT([yes])
7336 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7337 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7339 if (__sync_add_and_fetch(&v, 1) != 1 ||
7340 __sync_sub_and_fetch(&v, 1) != 0)
7342 __sync_synchronize();
7343 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7347 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7348 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7349 AC_MSG_RESULT([yes])
7350 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7355 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7357 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7360 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7362 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7363 AC_MSG_RESULT([yes])
7364 ], [AC_MSG_RESULT([no])])
7367 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7369 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7372 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7374 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7375 AC_MSG_RESULT([yes])
7376 ], [AC_MSG_RESULT([no])])
7379 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7381 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7383 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7385 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7386 AC_MSG_RESULT([yes])
7387 ], [AC_MSG_RESULT([no])])
7390 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7392 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7395 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7397 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7398 AC_MSG_RESULT([yes])
7399 ], [AC_MSG_RESULT([no])])
7402 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7404 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7407 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7409 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7410 AC_MSG_RESULT([yes])
7411 ], [AC_MSG_RESULT([no])])
7414 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7416 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7418 void * f() { return __cxxabiv1::__cxa_get_globals(); }
7420 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7421 AC_MSG_RESULT([yes])
7422 ], [AC_MSG_RESULT([no])])
7425 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7427 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7429 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7431 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7432 AC_MSG_RESULT([yes])
7433 ], [AC_MSG_RESULT([no])])
7436 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7438 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7440 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7442 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7443 AC_MSG_RESULT([yes])
7444 ], [AC_MSG_RESULT([no])])
7447 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7449 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7452 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7454 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7455 AC_MSG_RESULT([yes])
7456 ], [AC_MSG_RESULT([no])])
7459 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7461 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7464 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7466 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7467 AC_MSG_RESULT([yes])
7468 ], [AC_MSG_RESULT([no])])
7472 AC_SUBST(HAVE_GCC_AVX)
7473 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7474 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7476 dnl ===================================================================
7477 dnl Identify the C++ library
7478 dnl ===================================================================
7480 AC_MSG_CHECKING([what the C++ library is])
7484 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7490 [CPP_LIBRARY=GLIBCXX
7491 cpp_library_name="GNU libstdc++"
7494 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7496 #ifndef _LIBCPP_VERSION
7501 cpp_library_name="LLVM libc++"
7502 AC_DEFINE([HAVE_LIBCPP])
7505 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7512 cpp_library_name="Microsoft"
7514 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7515 AC_MSG_RESULT([$cpp_library_name])
7517 AC_SUBST([HAVE_LIBSTDCPP])
7518 AC_SUBST([HAVE_LIBCPP])
7520 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7522 # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7523 # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7524 # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7525 # although there will be backwards compatibility).
7526 # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7527 # and there would be undefined references to debug functions.
7528 # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7529 # So check if debug mode can be used and disable or downgrade it to assertions
7531 AC_MSG_CHECKING([if libc++ has a usable debug mode])
7534 AC_LINK_IFELSE([AC_LANG_SOURCE([[
7535 #define _LIBCPP_DEBUG 0 // only assertions
7543 ]])], [libcpp_debug_links=1])
7544 if test -n "$libcpp_debug_links"; then
7545 # we can use at least assertions, check if debug mode works
7546 AC_RUN_IFELSE([AC_LANG_SOURCE([[
7547 #define _LIBCPP_DEBUG 1 // debug mode
7550 int foo(const std::vector<int>& v) { return *v.begin(); }
7555 std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7556 return (foo(v) + s.size()) != 0 ? 0 : 1;
7560 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7562 [AC_MSG_RESULT(no, using only assertions)
7563 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7571 AC_SUBST([LIBCPP_DEBUG])
7573 dnl ===================================================================
7575 dnl ===================================================================
7576 AC_PATH_PROG(GPERF, gperf)
7577 if test -z "$GPERF"; then
7578 AC_MSG_ERROR([gperf not found but needed. Install it.])
7580 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7581 GPERF=`cygpath -m $GPERF`
7583 AC_MSG_CHECKING([whether gperf is new enough])
7584 my_gperf_ver1=$($GPERF --version | head -n 1)
7585 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7586 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7587 if test "$my_gperf_ver3" -ge 301; then
7588 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7590 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7594 dnl ===================================================================
7595 dnl Check for system libcmis
7596 dnl ===================================================================
7597 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2],enabled)
7599 dnl ===================================================================
7601 dnl ===================================================================
7603 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7605 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7606 if test "$with_latest_c__" = yes; then
7607 CXXFLAGS_CXX11=-std:c++latest
7609 CXXFLAGS_CXX11=-std:c++17
7611 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7612 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7613 my_flags='-std=c++17 -std=c++1z'
7614 if test "$with_latest_c__" = yes; then
7615 my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7617 for flag in $my_flags; do
7618 if test "$COM" = MSC; then
7619 flag="-Xclang $flag"
7621 save_CXXFLAGS=$CXXFLAGS
7622 CXXFLAGS="$CXXFLAGS $flag -Werror"
7623 if test "$SYSTEM_LIBCMIS" = TRUE; then
7624 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7627 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7628 #include <algorithm>
7629 #include <functional>
7632 #if defined SYSTEM_LIBCMIS
7633 // See ucb/source/ucp/cmis/auth_provider.hxx:
7634 #if !defined __clang__
7635 #pragma GCC diagnostic push
7636 #pragma GCC diagnostic ignored "-Wdeprecated"
7637 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7639 #include <libcmis/libcmis.hxx>
7640 #if !defined __clang__
7641 #pragma GCC diagnostic pop
7645 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7646 std::sort(v.begin(), v.end(), fn);
7648 ]])],[CXXFLAGS_CXX11=$flag])
7650 CXXFLAGS=$save_CXXFLAGS
7651 if test -n "$CXXFLAGS_CXX11"; then
7656 if test -n "$CXXFLAGS_CXX11"; then
7657 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7661 AC_SUBST(CXXFLAGS_CXX11)
7663 if test "$GCC" = "yes"; then
7664 save_CXXFLAGS=$CXXFLAGS
7665 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7667 CXXFLAGS=$save_CXXFLAGS
7668 AC_SUBST(ATOMIC_LIB)
7671 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7672 save_CXXFLAGS=$CXXFLAGS
7673 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7676 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7679 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7695 a thinga[]={{0,0}, {1,1}};
7696 b thingb[]={{0,0}, {1,1}};
7697 size_t i = sizeof(sal_n_array_size(thinga));
7698 size_t j = sizeof(sal_n_array_size(thingb));
7699 return !(i != 0 && j != 0);
7701 ], [ AC_MSG_RESULT(yes) ],
7702 [ AC_MSG_ERROR(no)])
7704 CXXFLAGS=$save_CXXFLAGS
7706 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7707 if test "$GCC" = yes; then
7708 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7710 save_CXXFLAGS=$CXXFLAGS
7711 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7712 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7713 CXXFLAGS=$save_CXXFLAGS
7715 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7716 AC_MSG_RESULT([yes])
7721 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7723 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7725 save_CXXFLAGS=$CXXFLAGS
7726 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7727 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7728 #include <algorithm>
7729 #include <initializer_list>
7731 template<typename T> class S {
7735 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7737 constinit S<int> s{3, 2, 1};
7739 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7740 AC_MSG_RESULT([yes])
7741 ], [AC_MSG_RESULT([no])])
7742 CXXFLAGS=$save_CXXFLAGS
7745 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7747 save_CXXFLAGS=$CXXFLAGS
7748 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7749 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7751 #include <type_traits>
7752 // Don't check size_type directly, as it was called index_type before P1872R0:
7753 void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7755 AC_DEFINE([HAVE_CPP_SPAN],[1])
7756 AC_MSG_RESULT([yes])
7757 ], [AC_MSG_RESULT([no])])
7758 CXXFLAGS=$save_CXXFLAGS
7761 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7763 save_CXXFLAGS=$CXXFLAGS
7764 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7765 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7766 struct S1 { S1(S1 &&); };
7768 S1 f(S2 s) { return s; }
7770 AC_DEFINE([HAVE_P1155R3],[1])
7771 AC_MSG_RESULT([yes])
7772 ], [AC_MSG_RESULT([no])])
7773 CXXFLAGS=$save_CXXFLAGS
7776 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7777 HAVE_CXX20_ATOMIC_REF=
7779 save_CXXFLAGS=$CXXFLAGS
7780 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7781 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7784 std::atomic_ref<int> y(x);
7786 HAVE_CXX20_ATOMIC_REF=TRUE
7787 AC_MSG_RESULT([yes])
7788 ], [AC_MSG_RESULT([no])])
7789 CXXFLAGS=$save_CXXFLAGS
7791 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7793 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7794 dnl which is included in -Wextra anyway):
7795 HAVE_WDEPRECATED_COPY_DTOR=
7796 if test "$GCC" = yes; then
7797 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7799 save_CXXFLAGS=$CXXFLAGS
7800 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7801 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7802 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7803 AC_MSG_RESULT([yes])
7804 ], [AC_MSG_RESULT([no])])
7805 CXXFLAGS=$save_CXXFLAGS
7808 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7810 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7811 dnl uninitialized warning for code like
7814 dnl boost::optional<OString> * g(bool b) {
7815 dnl boost::optional<OString> o;
7817 dnl return new boost::optional<OString>(o);
7820 dnl (as is e.g. present, in a slightly more elaborate form, in
7821 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7822 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7823 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7824 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7825 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7827 save_CXXFLAGS=$CXXFLAGS
7828 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7829 if test "$ENABLE_OPTIMIZED" = TRUE; then
7830 CXXFLAGS="$CXXFLAGS -O2"
7832 CXXFLAGS="$CXXFLAGS -O0"
7834 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7843 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7844 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7850 char stg[sizeof (S1)];
7858 ]])], [AC_MSG_RESULT([no])], [
7859 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7860 AC_MSG_RESULT([yes])
7862 CXXFLAGS=$save_CXXFLAGS
7865 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7867 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7868 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7869 dnl hits us e.g. with GCC 10 and --enable-optimized at
7871 dnl In file included from include/rtl/string.hxx:49,
7872 dnl from include/rtl/ustring.hxx:43,
7873 dnl from include/osl/file.hxx:35,
7874 dnl from include/codemaker/global.hxx:28,
7875 dnl from include/codemaker/options.hxx:23,
7876 dnl from codemaker/source/commoncpp/commoncpp.cxx:24:
7877 dnl In function ‘char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7878 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,
7879 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,
7880 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,
7881 dnl inlined from ‘rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7882 dnl include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7883 dnl 78 | memcpy( buffer, data, length );
7884 dnl | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7885 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7886 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7887 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7889 save_CXXFLAGS=$CXXFLAGS
7890 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7891 if test "$ENABLE_OPTIMIZED" = TRUE; then
7892 CXXFLAGS="$CXXFLAGS -O2"
7894 CXXFLAGS="$CXXFLAGS -O0"
7896 dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7897 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7898 void fill(char const * begin, char const * end, char c);
7904 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7905 __builtin_strncpy(c.username, "root", sizeof(c.username));
7907 ]])], [AC_MSG_RESULT([no])], [
7908 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7909 AC_MSG_RESULT([yes])
7911 CXXFLAGS=$save_CXXFLAGS
7914 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7916 HAVE_DLLEXPORTINLINES=
7917 if test "$_os" = "WINNT"; then
7918 AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7920 save_CXXFLAGS=$CXXFLAGS
7921 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7922 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7923 HAVE_DLLEXPORTINLINES=TRUE
7924 AC_MSG_RESULT([yes])
7925 ], [AC_MSG_RESULT([no])])
7926 CXXFLAGS=$save_CXXFLAGS
7929 AC_SUBST([HAVE_DLLEXPORTINLINES])
7931 dnl ===================================================================
7932 dnl CPU Intrinsics support - SSE, AVX
7933 dnl ===================================================================
7935 CXXFLAGS_INTRINSICS_SSE2=
7936 CXXFLAGS_INTRINSICS_SSSE3=
7937 CXXFLAGS_INTRINSICS_SSE41=
7938 CXXFLAGS_INTRINSICS_SSE42=
7939 CXXFLAGS_INTRINSICS_AVX=
7940 CXXFLAGS_INTRINSICS_AVX2=
7941 CXXFLAGS_INTRINSICS_AVX512=
7942 CXXFLAGS_INTRINSICS_AVX512F=
7943 CXXFLAGS_INTRINSICS_F16C=
7944 CXXFLAGS_INTRINSICS_FMA=
7946 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7947 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7954 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7955 flag_avx512f=-mavx512f
7959 # With MSVC using -arch is in fact not necessary for being able
7960 # to use CPU intrinsics, code using AVX512F intrinsics will compile
7961 # even if compiled with -arch:AVX, the -arch option really only affects
7962 # instructions generated for C/C++ code.
7963 # So use the matching same (or lower) -arch options, but only in order
7964 # to generate the best matching instructions for the C++ code surrounding
7966 # SSE2 is the default for x86/x64, so no need to specify the option.
7968 # No specific options for these, use the next lower.
7969 flag_ssse3="$flag_sse2"
7970 flag_sse41="$flag_sse2"
7971 flag_sse42="$flag_sse2"
7973 flag_avx2=-arch:AVX2
7974 flag_avx512=-arch:AVX512
7975 # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7976 flag_avx512f=-arch:AVX2
7977 # No MSVC options for these.
7978 flag_f16c="$flag_sse2"
7979 flag_fma="$flag_sse2"
7982 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7984 save_CXXFLAGS=$CXXFLAGS
7985 CXXFLAGS="$CXXFLAGS $flag_sse2"
7986 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7987 #include <emmintrin.h>
7989 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7990 c = _mm_xor_si128 (a, b);
7994 [can_compile_sse2=yes],
7995 [can_compile_sse2=no])
7997 CXXFLAGS=$save_CXXFLAGS
7998 AC_MSG_RESULT([${can_compile_sse2}])
7999 if test "${can_compile_sse2}" = "yes" ; then
8000 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
8003 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
8005 save_CXXFLAGS=$CXXFLAGS
8006 CXXFLAGS="$CXXFLAGS $flag_ssse3"
8007 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8008 #include <tmmintrin.h>
8010 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8011 c = _mm_maddubs_epi16 (a, b);
8015 [can_compile_ssse3=yes],
8016 [can_compile_ssse3=no])
8018 CXXFLAGS=$save_CXXFLAGS
8019 AC_MSG_RESULT([${can_compile_ssse3}])
8020 if test "${can_compile_ssse3}" = "yes" ; then
8021 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
8024 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
8026 save_CXXFLAGS=$CXXFLAGS
8027 CXXFLAGS="$CXXFLAGS $flag_sse41"
8028 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8029 #include <smmintrin.h>
8031 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8032 c = _mm_cmpeq_epi64 (a, b);
8036 [can_compile_sse41=yes],
8037 [can_compile_sse41=no])
8039 CXXFLAGS=$save_CXXFLAGS
8040 AC_MSG_RESULT([${can_compile_sse41}])
8041 if test "${can_compile_sse41}" = "yes" ; then
8042 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
8045 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
8047 save_CXXFLAGS=$CXXFLAGS
8048 CXXFLAGS="$CXXFLAGS $flag_sse42"
8049 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8050 #include <nmmintrin.h>
8052 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8053 c = _mm_cmpgt_epi64 (a, b);
8057 [can_compile_sse42=yes],
8058 [can_compile_sse42=no])
8060 CXXFLAGS=$save_CXXFLAGS
8061 AC_MSG_RESULT([${can_compile_sse42}])
8062 if test "${can_compile_sse42}" = "yes" ; then
8063 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
8066 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
8068 save_CXXFLAGS=$CXXFLAGS
8069 CXXFLAGS="$CXXFLAGS $flag_avx"
8070 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8071 #include <immintrin.h>
8073 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8074 c = _mm256_xor_ps(a, b);
8078 [can_compile_avx=yes],
8079 [can_compile_avx=no])
8081 CXXFLAGS=$save_CXXFLAGS
8082 AC_MSG_RESULT([${can_compile_avx}])
8083 if test "${can_compile_avx}" = "yes" ; then
8084 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8087 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8089 save_CXXFLAGS=$CXXFLAGS
8090 CXXFLAGS="$CXXFLAGS $flag_avx2"
8091 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8092 #include <immintrin.h>
8094 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8095 c = _mm256_maddubs_epi16(a, b);
8099 [can_compile_avx2=yes],
8100 [can_compile_avx2=no])
8102 CXXFLAGS=$save_CXXFLAGS
8103 AC_MSG_RESULT([${can_compile_avx2}])
8104 if test "${can_compile_avx2}" = "yes" ; then
8105 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8108 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8110 save_CXXFLAGS=$CXXFLAGS
8111 CXXFLAGS="$CXXFLAGS $flag_avx512"
8112 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8113 #include <immintrin.h>
8115 __m512i a = _mm512_loadu_si512(0);
8116 __m512d v1 = _mm512_load_pd(0);
8117 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8118 __m512d v2 = _mm512_abs_pd(v1);
8122 [can_compile_avx512=yes],
8123 [can_compile_avx512=no])
8125 CXXFLAGS=$save_CXXFLAGS
8126 AC_MSG_RESULT([${can_compile_avx512}])
8127 if test "${can_compile_avx512}" = "yes" ; then
8128 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8129 CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8132 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8134 save_CXXFLAGS=$CXXFLAGS
8135 CXXFLAGS="$CXXFLAGS $flag_f16c"
8136 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8137 #include <immintrin.h>
8139 __m128i a = _mm_set1_epi32 (0);
8141 c = _mm_cvtph_ps(a);
8145 [can_compile_f16c=yes],
8146 [can_compile_f16c=no])
8148 CXXFLAGS=$save_CXXFLAGS
8149 AC_MSG_RESULT([${can_compile_f16c}])
8150 if test "${can_compile_f16c}" = "yes" ; then
8151 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8154 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8156 save_CXXFLAGS=$CXXFLAGS
8157 CXXFLAGS="$CXXFLAGS $flag_fma"
8158 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8159 #include <immintrin.h>
8161 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8162 d = _mm256_fmadd_ps(a, b, c);
8166 [can_compile_fma=yes],
8167 [can_compile_fma=no])
8169 CXXFLAGS=$save_CXXFLAGS
8170 AC_MSG_RESULT([${can_compile_fma}])
8171 if test "${can_compile_fma}" = "yes" ; then
8172 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8175 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8176 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8177 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8178 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8179 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8180 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8181 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8182 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8183 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8184 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8186 dnl ===================================================================
8187 dnl system stl sanity tests
8188 dnl ===================================================================
8189 if test "$_os" != "WINNT"; then
8193 save_CPPFLAGS="$CPPFLAGS"
8194 if test -n "$MACOSX_SDK_PATH"; then
8195 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8198 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8200 if test "$CPP_LIBRARY" = GLIBCXX; then
8201 dnl gcc#19664, gcc#22482, rhbz#162935
8202 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8203 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8204 AC_MSG_RESULT([$stlvisok])
8205 if test "$stlvisok" = "no"; then
8206 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8210 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8211 # when we don't make any dynamic libraries?
8212 if test "$DISABLE_DYNLOADING" = ""; then
8213 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8214 cat > conftestlib1.cc <<_ACEOF
8215 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8216 struct S2: S1<int> { virtual ~S2(); };
8219 cat > conftestlib2.cc <<_ACEOF
8220 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8221 struct S2: S1<int> { virtual ~S2(); };
8222 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8224 gccvisinlineshiddenok=yes
8225 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8226 gccvisinlineshiddenok=no
8228 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8229 dnl known to not work with -z defs (unsetting which makes the test
8231 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8232 if test "$COM_IS_CLANG" = TRUE; then
8233 for i in $CXX $CXXFLAGS; do
8236 my_linkflagsnoundefs=
8242 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8243 gccvisinlineshiddenok=no
8248 AC_MSG_RESULT([$gccvisinlineshiddenok])
8249 if test "$gccvisinlineshiddenok" = "no"; then
8250 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8254 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8255 cat >visibility.cxx <<_ACEOF
8256 #pragma GCC visibility push(hidden)
8257 struct __attribute__ ((visibility ("default"))) TestStruct {
8260 __attribute__ ((visibility ("default"))) void TestFunc() {
8264 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8269 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8272 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8284 rm -f visibility.s visibility.cxx
8286 AC_MSG_RESULT([$gccvisbroken])
8287 if test "$gccvisbroken" = "yes"; then
8288 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8291 CPPFLAGS="$save_CPPFLAGS"
8293 AC_MSG_CHECKING([if CET endbranch is recognized])
8294 cat > endbr.s <<_ACEOF
8297 HAVE_ASM_END_BRANCH_INS_SUPPORT=
8298 if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8299 AC_MSG_RESULT([yes])
8300 HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8304 rm -f endbr.s endbr.o
8305 AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8310 dnl ===================================================================
8312 dnl ===================================================================
8314 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8315 if test "$GCC" = "yes"; then
8316 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8318 save_CXXFLAGS=$CXXFLAGS
8319 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8320 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8321 CXXFLAGS=$save_CXXFLAGS
8323 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8324 AC_MSG_RESULT([yes])
8329 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8331 dnl ===================================================================
8332 dnl Compiler plugins
8333 dnl ===================================================================
8336 # currently only Clang
8338 if test "$COM_IS_CLANG" != "TRUE"; then
8339 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8340 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8341 enable_compiler_plugins=no
8345 COMPILER_PLUGINS_COM_IS_CLANG=
8346 if test "$COM_IS_CLANG" = "TRUE"; then
8347 if test -n "$enable_compiler_plugins"; then
8348 compiler_plugins="$enable_compiler_plugins"
8349 elif test -n "$ENABLE_DBGUTIL"; then
8350 compiler_plugins=test
8354 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8355 if test "$CLANGVER" -lt 120001; then
8356 if test "$compiler_plugins" = yes; then
8358 [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8364 if test "$compiler_plugins" != "no"; then
8365 dnl The prefix where Clang resides, override to where Clang resides if
8366 dnl using a source build:
8367 if test -z "$CLANGDIR"; then
8368 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8370 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8371 if test -z "$COMPILER_PLUGINS_CXX"; then
8372 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8374 clangbindir=$CLANGDIR/bin
8375 if test "$build_os" = "cygwin"; then
8376 clangbindir=$(cygpath -u "$clangbindir")
8378 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8379 if test -n "$LLVM_CONFIG"; then
8380 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8381 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8382 if test -z "$CLANGLIBDIR"; then
8383 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8385 # Try if clang is built from source (in which case its includes are not together with llvm includes).
8386 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8387 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8388 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8389 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8391 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8392 clangobjdir=$($LLVM_CONFIG --obj-root)
8393 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8394 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8397 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8401 save_CPPFLAGS=$CPPFLAGS
8402 save_CXXFLAGS=$CXXFLAGS
8403 save_LDFLAGS=$LDFLAGS
8405 CXX=$COMPILER_PLUGINS_CXX
8406 CXXCPP="$COMPILER_PLUGINS_CXX -E"
8407 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8408 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8409 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8410 [COMPILER_PLUGINS=TRUE],
8412 if test "$compiler_plugins" = "yes"; then
8413 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8415 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8416 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8419 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8420 dnl comment in compilerplugins/Makefile-clang.mk:
8421 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8423 AC_MSG_CHECKING([for clang libraries to use])
8424 if test -z "$CLANGTOOLLIBS"; then
8425 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8427 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8428 [[ clang::FullSourceLoc().dump(); ]])
8429 ],[CLANGTOOLLIBS="$LIBS"],[])
8431 dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8432 dnl list of individual -lclang* (but note that that list can become outdated over time,
8433 dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8434 dnl needs to include -lclangSupport now"):
8435 if test -z "$CLANGTOOLLIBS"; then
8436 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8437 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8439 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8440 [[ clang::FullSourceLoc().dump(); ]])
8441 ],[CLANGTOOLLIBS="$LIBS"],[])
8443 AC_MSG_RESULT([$CLANGTOOLLIBS])
8444 if test -z "$CLANGTOOLLIBS"; then
8445 if test "$compiler_plugins" = "yes"; then
8446 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8448 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8449 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8453 if test -n "$COMPILER_PLUGINS"; then
8454 if test -z "$CLANGSYSINCLUDE"; then
8455 if test -n "$LLVM_CONFIG"; then
8456 # Path to the clang system headers (no idea if there's a better way to get it).
8457 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8464 CPPFLAGS=$save_CPPFLAGS
8465 CXXFLAGS=$save_CXXFLAGS
8466 LDFLAGS=$save_LDFLAGS
8470 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8471 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8477 [AC_MSG_RESULT([yes])
8478 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8479 [AC_MSG_RESULT([no])])
8480 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8483 if test "$enable_compiler_plugins" = "yes"; then
8484 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8487 COMPILER_PLUGINS_ANALYZER_PCH=
8488 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8489 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8491 AC_SUBST(COMPILER_PLUGINS)
8492 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8493 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8494 AC_SUBST(COMPILER_PLUGINS_CXX)
8495 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8496 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8497 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8498 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8500 AC_SUBST(CLANGLIBDIR)
8501 AC_SUBST(CLANGTOOLLIBS)
8502 AC_SUBST(CLANGSYSINCLUDE)
8504 # Plugin to help linker.
8505 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8506 # This makes --enable-lto build with clang work.
8509 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8510 AC_SUBST(HAVE_POSIX_FALLOCATE)
8512 JITC_PROCESSOR_TYPE=""
8513 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8514 # IBMs JDK needs this...
8515 JITC_PROCESSOR_TYPE=6
8516 export JITC_PROCESSOR_TYPE
8518 AC_SUBST([JITC_PROCESSOR_TYPE])
8520 # Misc Windows Stuff
8521 AC_ARG_WITH(ucrt-dir,
8522 AS_HELP_STRING([--with-ucrt-dir],
8523 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8524 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8525 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8526 Windows6.1-KB2999226-x64.msu
8527 Windows6.1-KB2999226-x86.msu
8528 Windows8.1-KB2999226-x64.msu
8529 Windows8.1-KB2999226-x86.msu
8530 Windows8-RT-KB2999226-x64.msu
8531 Windows8-RT-KB2999226-x86.msu
8532 A zip archive including those files is available from Microsoft site:
8533 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8536 UCRT_REDISTDIR="$with_ucrt_dir"
8537 if test $_os = "WINNT"; then
8539 for i in $PKGFORMAT; do
8540 if test "$i" = msi; then
8545 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8546 MSVC_DLLS="$msvcdlls"
8547 test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
8548 # MSVC 15.3 changed it to VC141
8549 if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8550 SCPDEFS="$SCPDEFS -DWITH_VC143_REDIST"
8551 elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8552 SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
8553 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8554 SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
8556 SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
8559 if test "$UCRT_REDISTDIR" = "no"; then
8560 dnl explicitly disabled
8563 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8564 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8565 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8566 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8567 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8568 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8570 if test -n "$PKGFORMAT"; then
8571 for i in $PKGFORMAT; do
8574 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8575 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8584 AC_SUBST(UCRT_REDISTDIR)
8585 AC_SUBST(MSVC_DLL_PATH)
8590 dnl ===================================================================
8592 dnl ===================================================================
8593 if test "$ENABLE_JAVA" != ""; then
8595 # Windows-specific tests
8596 if test "$build_os" = "cygwin"; then
8597 if test -z "$with_jdk_home"; then
8598 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8599 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8600 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8601 if test -n "$regvalue"; then
8603 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8604 with_jdk_home=$regvalue
8606 howfound="found automatically"
8608 with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8609 howfound="you passed"
8612 if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8613 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])
8617 # 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.
8618 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8619 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8620 with_jdk_home=`/usr/libexec/java_home`
8623 JAVA_HOME=; export JAVA_HOME
8624 if test -z "$with_jdk_home"; then
8625 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8627 _java_path="$with_jdk_home/bin/$with_java"
8628 dnl Check if there is a Java interpreter at all.
8629 if test -x "$_java_path"; then
8630 JAVAINTERPRETER=$_java_path
8632 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8636 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8637 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8638 dnl loaded by java to run JunitTests:
8639 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8640 shortjdkhome=`cygpath -d "$with_jdk_home"`
8641 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
8642 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8643 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8644 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
8645 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8646 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8649 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8650 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8652 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8653 elif test "$cross_compiling" != "yes"; then
8655 AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64)
8656 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8657 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8658 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8661 *) # assumption: everything else 32-bit
8662 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8663 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8664 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8671 dnl ===================================================================
8673 dnl ===================================================================
8675 # Whether all the complexity here actually is needed any more or not, no idea.
8677 JDK_SECURITYMANAGER_DISALLOWED=
8678 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8680 AC_MSG_CHECKING([the installed JDK])
8681 if test -n "$JAVAINTERPRETER"; then
8682 dnl java -version sends output to stderr!
8683 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8684 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8685 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8686 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8687 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8688 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8689 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8690 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8694 dnl Sun JDK specific tests
8695 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8696 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8698 if test "$_jdk_ver" -lt 10900; then
8699 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8701 if test "$_jdk_ver" -gt 10900; then
8702 JAVA_CLASSPATH_NOT_SET=TRUE
8704 dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8705 dnl completely removed in some Java version > 18 (see
8706 dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8707 if test "$_jdk_ver" -ge 180000; then
8708 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8711 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8712 if test "$_os" = "WINNT"; then
8713 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8715 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8717 # set to limit VM usage for JunitTests
8719 # set to limit VM usage for javac
8720 JAVACFLAGS=-J-Xmx128M
8723 AC_MSG_ERROR([Java not found. You need at least JDK 9])
8726 if test -z "$ENABLE_JAVA"; then
8730 elif test "$cross_compiling" = "yes"; then
8731 # Just assume compatibility of build and host JDK
8733 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8737 dnl ===================================================================
8738 dnl Checks for javac
8739 dnl ===================================================================
8740 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8741 javacompiler="javac"
8742 : ${JAVA_SOURCE_VER=8}
8743 : ${JAVA_TARGET_VER=8}
8744 if test -z "$with_jdk_home"; then
8745 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8747 _javac_path="$with_jdk_home/bin/$javacompiler"
8748 dnl Check if there is a Java compiler at all.
8749 if test -x "$_javac_path"; then
8750 JAVACOMPILER=$_javac_path
8753 if test -z "$JAVACOMPILER"; then
8754 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8756 if test "$build_os" = "cygwin"; then
8757 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8758 JAVACOMPILER="${JAVACOMPILER}.exe"
8760 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8764 dnl ===================================================================
8765 dnl Checks for javadoc
8766 dnl ===================================================================
8767 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8768 if test -z "$with_jdk_home"; then
8769 AC_PATH_PROG(JAVADOC, javadoc)
8771 _javadoc_path="$with_jdk_home/bin/javadoc"
8772 dnl Check if there is a javadoc at all.
8773 if test -x "$_javadoc_path"; then
8774 JAVADOC=$_javadoc_path
8776 AC_PATH_PROG(JAVADOC, javadoc)
8779 if test -z "$JAVADOC"; then
8780 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8782 if test "$build_os" = "cygwin"; then
8783 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8784 JAVADOC="${JAVADOC}.exe"
8786 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8789 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8790 JAVADOCISGJDOC="yes"
8794 AC_SUBST(JAVADOCISGJDOC)
8796 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8797 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8798 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8799 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8800 # try to recover first by looking whether we have an alternative
8801 # system as in Debian or newer SuSEs where following /usr/bin/javac
8802 # over /etc/alternatives/javac leads to the right bindir where we
8803 # just need to strip a bit away to get a valid JAVA_HOME
8804 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8805 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8806 # maybe only one level of symlink (e.g. on Mac)
8807 JAVA_HOME=$(readlink $JAVACOMPILER)
8808 if test "$(dirname $JAVA_HOME)" = "."; then
8809 # we've got no path to trim back
8814 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8815 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8816 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8817 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8819 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8820 if test "$JAVA_HOME" != "/usr"; then
8821 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8822 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8823 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8824 dnl Tiger already returns a JDK path...
8825 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8827 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8828 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8829 dnl that checks which version to run
8830 if test -f "$JAVA_HOME"; then
8831 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8836 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8838 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8839 if test -z "$JAVA_HOME"; then
8840 if test "x$with_jdk_home" = "x"; then
8841 cat > findhome.java <<_ACEOF
8842 [import java.io.File;
8846 public static void main(String args[])
8848 String jrelocation = System.getProperty("java.home");
8849 File jre = new File(jrelocation);
8850 System.out.println(jre.getParent());
8854 AC_MSG_CHECKING([if javac works])
8855 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8856 AC_TRY_EVAL(javac_cmd)
8857 if test $? = 0 -a -f ./findhome.class; then
8858 AC_MSG_RESULT([javac works])
8860 echo "configure: javac test failed" >&5
8861 cat findhome.java >&5
8862 AC_MSG_ERROR([javac does not work - java projects will not build!])
8864 AC_MSG_CHECKING([if gij knows its java.home])
8865 JAVA_HOME=`$JAVAINTERPRETER findhome`
8866 if test $? = 0 -a "$JAVA_HOME" != ""; then
8867 AC_MSG_RESULT([$JAVA_HOME])
8869 echo "configure: java test failed" >&5
8870 cat findhome.java >&5
8871 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8873 # clean-up after ourselves
8874 rm -f ./findhome.java ./findhome.class
8876 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8880 # now check if $JAVA_HOME is really valid
8881 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8882 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8883 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8884 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8885 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8886 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8887 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8888 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8891 PathFormat "$JAVA_HOME"
8892 JAVA_HOME="$formatted_path"
8895 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8898 AC_MSG_CHECKING([for JAWT lib])
8899 if test "$_os" = WINNT; then
8900 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8905 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8906 JAVA_ARCH=$my_java_arch
8921 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8922 JAVA_ARCH=$my_java_arch
8925 my_java_arch=sparcv9
8931 my_java_arch=$host_cpu
8934 # This is where JDK9 puts the library
8935 if test -e "$JAVA_HOME/lib/libjawt.so"; then
8936 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8938 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8940 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8942 AC_MSG_RESULT([$JAWTLIB])
8946 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8950 JAVAINC="-I$JAVA_HOME/include"
8951 JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8952 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8956 JAVAINC="-I$JAVA_HOME/include/win32"
8957 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8961 if test -d "$JAVA_HOME/include/darwin"; then
8962 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
8964 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8969 JAVAINC="-I$JAVA_HOME/include"
8970 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8974 JAVAINC="-I$JAVA_HOME/include"
8975 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8976 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8977 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8978 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8982 JAVAINC="-I$JAVA_HOME/include"
8983 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8984 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8988 JAVAINC="-I$JAVA_HOME/include"
8989 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8990 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8994 JAVAINC="-I$JAVA_HOME/include"
8995 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8996 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9000 JAVAINC="-I$JAVA_HOME/include"
9001 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
9002 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9006 JAVAINC="-I$JAVA_HOME/include"
9007 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
9008 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9012 SOLARINC="$SOLARINC $JAVAINC"
9014 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
9015 JAVA_HOME_FOR_BUILD=$JAVA_HOME
9016 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
9018 JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
9021 AC_SUBST(JAVACFLAGS)
9022 AC_SUBST(JAVACOMPILER)
9023 AC_SUBST(JAVAINTERPRETER)
9024 AC_SUBST(JAVAIFLAGS)
9025 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
9026 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
9028 AC_SUBST(JAVA_HOME_FOR_BUILD)
9030 AC_SUBST(JDK_FOR_BUILD)
9031 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
9032 AC_SUBST(JAVA_SOURCE_VER)
9033 AC_SUBST(JAVA_TARGET_VER)
9036 dnl ===================================================================
9037 dnl Export file validation
9038 dnl ===================================================================
9039 AC_MSG_CHECKING([whether to enable export file validation])
9040 if test "$with_export_validation" != "no"; then
9041 if test -z "$ENABLE_JAVA"; then
9042 if test "$with_export_validation" = "yes"; then
9043 AC_MSG_ERROR([requested, but Java is disabled])
9045 AC_MSG_RESULT([no, as Java is disabled])
9047 elif ! test -d "${SRC_ROOT}/schema"; then
9048 if test "$with_export_validation" = "yes"; then
9049 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
9051 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
9054 AC_MSG_RESULT([yes])
9055 AC_DEFINE(HAVE_EXPORT_VALIDATION)
9057 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
9058 if test -z "$ODFVALIDATOR"; then
9059 # remember to download the ODF toolkit with validator later
9060 AC_MSG_NOTICE([no odfvalidator found, will download it])
9061 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
9062 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
9064 # and fetch name of odfvalidator jar name from download.lst
9065 ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9066 AC_SUBST(ODFVALIDATOR_JAR)
9068 if test -z "$ODFVALIDATOR_JAR"; then
9069 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
9072 if test "$build_os" = "cygwin"; then
9073 # In case of Cygwin it will be executed from Windows,
9074 # so we need to run bash and absolute path to validator
9075 # so instead of "odfvalidator" it will be
9076 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9077 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9079 ODFVALIDATOR="sh $ODFVALIDATOR"
9081 AC_SUBST(ODFVALIDATOR)
9084 AC_PATH_PROGS(OFFICEOTRON, officeotron)
9085 if test -z "$OFFICEOTRON"; then
9086 # remember to download the officeotron with validator later
9087 AC_MSG_NOTICE([no officeotron found, will download it])
9088 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9089 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9091 # and fetch name of officeotron jar name from download.lst
9092 OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9093 AC_SUBST(OFFICEOTRON_JAR)
9095 if test -z "$OFFICEOTRON_JAR"; then
9096 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9099 # check version of existing officeotron
9100 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9101 if test 0"$OFFICEOTRON_VER" -lt 704; then
9102 AC_MSG_ERROR([officeotron too old])
9105 if test "$build_os" = "cygwin"; then
9106 # In case of Cygwin it will be executed from Windows,
9107 # so we need to run bash and absolute path to validator
9108 # so instead of "odfvalidator" it will be
9109 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9110 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9112 OFFICEOTRON="sh $OFFICEOTRON"
9115 AC_SUBST(OFFICEOTRON)
9120 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9121 if test "$with_bffvalidator" != "no"; then
9122 AC_DEFINE(HAVE_BFFVALIDATOR)
9124 if test "$with_export_validation" = "no"; then
9125 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9128 if test "$with_bffvalidator" = "yes"; then
9129 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9131 BFFVALIDATOR="$with_bffvalidator"
9134 if test "$build_os" = "cygwin"; then
9135 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9136 AC_MSG_RESULT($BFFVALIDATOR)
9138 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9140 elif test -n "$BFFVALIDATOR"; then
9141 # We are not in Cygwin but need to run Windows binary with wine
9142 AC_PATH_PROGS(WINE, wine)
9144 # so swap in a shell wrapper that converts paths transparently
9145 BFFVALIDATOR_EXE="$BFFVALIDATOR"
9146 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9147 AC_SUBST(BFFVALIDATOR_EXE)
9148 AC_MSG_RESULT($BFFVALIDATOR)
9150 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9152 AC_SUBST(BFFVALIDATOR)
9157 dnl ===================================================================
9158 dnl Check for epm (not needed for Windows)
9159 dnl ===================================================================
9160 AC_MSG_CHECKING([whether to enable EPM for packing])
9161 if test "$enable_epm" = "yes"; then
9162 AC_MSG_RESULT([yes])
9163 if test "$_os" != "WINNT"; then
9164 if test $_os = Darwin; then
9166 elif test -n "$with_epm"; then
9169 AC_PATH_PROG(EPM, epm, no)
9171 if test "$EPM" = "no" -o "$EPM" = "internal"; then
9172 AC_MSG_NOTICE([EPM will be built.])
9173 BUILD_TYPE="$BUILD_TYPE EPM"
9174 EPM=${WORKDIR}/UnpackedTarball/epm/epm
9176 # Gentoo has some epm which is something different...
9177 AC_MSG_CHECKING([whether the found epm is the right epm])
9178 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9179 AC_MSG_RESULT([yes])
9181 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
9183 AC_MSG_CHECKING([epm version])
9184 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9185 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9186 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9187 AC_MSG_RESULT([OK, >= 3.7])
9189 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9190 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
9195 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9196 AC_MSG_CHECKING([for rpm])
9197 for a in "$RPM" rpmbuild rpm; do
9198 $a --usage >/dev/null 2> /dev/null
9199 if test $? -eq 0; then
9203 $a --version >/dev/null 2> /dev/null
9204 if test $? -eq 0; then
9210 if test -z "$RPM"; then
9211 AC_MSG_ERROR([not found])
9212 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9213 RPM_PATH=`which $RPM`
9214 AC_MSG_RESULT([$RPM_PATH])
9215 SCPDEFS="$SCPDEFS -DWITH_RPM"
9217 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9220 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9221 AC_PATH_PROG(DPKG, dpkg, no)
9222 if test "$DPKG" = "no"; then
9223 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9226 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9227 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9228 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9229 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9230 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9231 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9232 AC_MSG_RESULT([yes])
9235 if echo "$PKGFORMAT" | $GREP -q rpm; then
9237 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9238 add_warning "the rpms will need to be installed with --nodeps"
9242 AC_MSG_WARN([the ${_pt}s will not be relocatable])
9243 add_warning "the ${_pt}s will not be relocatable"
9244 AC_MSG_WARN([if you want to make sure installation without --nodeps and
9245 relocation will work, you need to patch your epm with the
9246 patch in epm/epm-3.7.patch or build with
9247 --with-epm=internal which will build a suitable epm])
9252 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9253 AC_PATH_PROG(PKGMK, pkgmk, no)
9254 if test "$PKGMK" = "no"; then
9255 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9262 for i in $PKGFORMAT; do
9264 aix | bsd | deb | pkg | rpm | native | portable)
9266 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9276 if test "$enable_lotuswordpro" = "yes"; then
9279 AC_SUBST(ENABLE_LWP)
9281 dnl ===================================================================
9282 dnl Check for building ODK
9283 dnl ===================================================================
9284 AC_MSG_CHECKING([whether to build the ODK])
9285 if test "$enable_odk" = yes; then
9286 if test "$DISABLE_DYNLOADING" = TRUE; then
9287 AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9289 AC_MSG_RESULT([yes])
9290 BUILD_TYPE="$BUILD_TYPE ODK"
9295 if test "$enable_odk" != yes; then
9298 if test "$with_doxygen" = no; then
9299 AC_MSG_CHECKING([for doxygen])
9303 if test "$with_doxygen" = yes; then
9304 AC_PATH_PROG([DOXYGEN], [doxygen])
9305 if test -z "$DOXYGEN"; then
9306 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9308 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9309 if ! dot -V 2>/dev/null; then
9310 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9314 AC_MSG_CHECKING([for doxygen])
9315 DOXYGEN=$with_doxygen
9316 AC_MSG_RESULT([$DOXYGEN])
9318 if test -n "$DOXYGEN"; then
9319 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9320 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9321 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9322 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9329 dnl ==================================================================
9331 dnl ==================================================================
9332 AC_MSG_CHECKING([whether to enable fuzzers])
9333 if test "$enable_fuzzers" != yes; then
9336 if test -z $LIB_FUZZING_ENGINE; then
9337 AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9339 AC_MSG_RESULT([yes])
9340 ENABLE_FUZZERS="TRUE"
9341 AC_DEFINE([ENABLE_FUZZERS],1)
9342 AC_DEFINE([VCL_FLOAT_DEVICE_PIXEL],1)
9343 BUILD_TYPE="$BUILD_TYPE FUZZERS"
9345 AC_SUBST(LIB_FUZZING_ENGINE)
9347 dnl ===================================================================
9348 dnl Check for system zlib
9349 dnl ===================================================================
9350 if test "$with_system_zlib" = "auto"; then
9353 with_system_zlib="$with_system_libs"
9356 if test "$enable_fuzzers" != "yes"; then
9357 with_system_zlib=yes
9365 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9366 dnl and has no pkg-config for it at least on some tinderboxes,
9367 dnl so leaving that out for now
9368 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9369 AC_MSG_CHECKING([which zlib to use])
9370 if test "$with_system_zlib" = "yes"; then
9371 AC_MSG_RESULT([external])
9373 AC_CHECK_HEADER(zlib.h, [],
9374 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9375 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9376 [AC_MSG_ERROR(zlib not found or functional)], [])
9378 AC_MSG_RESULT([internal])
9380 BUILD_TYPE="$BUILD_TYPE ZLIB"
9381 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9382 if test "$COM" = "MSC"; then
9383 ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9385 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9388 AC_SUBST(ZLIB_CFLAGS)
9390 AC_SUBST(SYSTEM_ZLIB)
9392 dnl ===================================================================
9393 dnl Check for system jpeg
9394 dnl ===================================================================
9395 AC_MSG_CHECKING([which libjpeg to use])
9396 if test "$with_system_jpeg" = "yes"; then
9397 AC_MSG_RESULT([external])
9399 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9400 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9401 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9402 [AC_MSG_ERROR(jpeg library not found or functional)], [])
9405 AC_MSG_RESULT([internal, libjpeg-turbo])
9406 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9409 x86_64 | amd64 | i*86 | x86 | ia32)
9410 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9411 if test -z "$NASM" -a "$build_os" = "cygwin"; then
9412 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9413 NASM="$LODE_HOME/opt/bin/nasm"
9414 elif test -x "/opt/lo/bin/nasm"; then
9415 NASM="/opt/lo/bin/nasm"
9419 if test -n "$NASM"; then
9420 AC_MSG_CHECKING([for object file format of host system])
9422 cygwin* | mingw* | pw32* | wsl*)
9432 msdosdjgpp* | go32*)
9435 os2-emx*) # not tested
9436 objfmt='MSOMF' # obj
9438 linux*coff* | linux*oldld*)
9454 kfreebsd* | freebsd* | netbsd* | openbsd*)
9455 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9468 solaris* | sunos* | sysv* | sco*)
9478 darwin* | rhapsody* | nextstep* | openstep* | macos*)
9493 AC_MSG_RESULT([$objfmt])
9494 if test "$objfmt" = 'ELF ?'; then
9496 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9499 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9501 MSOMF) NAFLAGS='-fobj -DOBJ32 -DPIC';;
9502 Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9503 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9504 COFF) NAFLAGS='-fcoff -DCOFF -DPIC';;
9505 a.out) NAFLAGS='-faout -DAOUT -DPIC';;
9506 BSD-a.out) NAFLAGS='-faoutb -DAOUT -DPIC';;
9507 ELF) NAFLAGS='-felf -DELF -DPIC';;
9508 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9509 RDF) NAFLAGS='-frdf -DRDF -DPIC';;
9510 Mach-O) NAFLAGS='-fmacho -DMACHO -DPIC';;
9511 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9513 AC_MSG_RESULT([$NAFLAGS])
9515 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9516 cat > conftest.asm << EOF
9517 [%line __oline__ "configure"
9525 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9526 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9529 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9530 cat conftest.asm >&AS_MESSAGE_LOG_FD
9533 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9539 if test -z "$NASM"; then
9541 ****************************************************************************
9542 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9546 if test "$build_os" = "cygwin"; then
9548 install a pre-compiled binary for Win32
9550 mkdir -p /opt/lo/bin
9552 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9555 or get and install one from http://www.nasm.us/
9557 Then re-run autogen.sh
9559 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9560 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9565 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9569 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9570 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9578 AC_SUBST(LIBJPEG_CFLAGS)
9579 AC_SUBST(LIBJPEG_LIBS)
9580 AC_SUBST(SYSTEM_LIBJPEG)
9582 dnl ===================================================================
9583 dnl Check for system clucene
9584 dnl ===================================================================
9585 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9586 if test "$SYSTEM_CLUCENE" = TRUE; then
9588 save_CXXFLAGS=$CXXFLAGS
9589 save_CPPFLAGS=$CPPFLAGS
9590 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9591 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9592 dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9593 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9594 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9595 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9596 CXXFLAGS=$save_CXXFLAGS
9597 CPPFLAGS=$save_CPPFLAGS
9599 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9602 dnl ===================================================================
9603 dnl Check for system expat
9604 dnl ===================================================================
9605 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9607 dnl ===================================================================
9608 dnl Check for system xmlsec
9609 dnl ===================================================================
9610 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9612 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9613 if test "$enable_eot" = "yes"; then
9615 AC_DEFINE([ENABLE_EOT])
9616 AC_MSG_RESULT([yes])
9618 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9623 AC_SUBST([ENABLE_EOT])
9625 dnl ===================================================================
9626 dnl Check for DLP libs
9627 dnl ===================================================================
9628 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9629 AS_IF([test "$COM" = "MSC"],
9630 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9631 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9633 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9634 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9636 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9638 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9640 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9641 AS_IF([test "$COM" = "MSC"],
9642 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9643 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9645 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9646 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9648 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9650 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9651 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9653 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9655 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9657 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9659 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9660 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9662 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9663 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9665 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9667 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9668 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9670 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9672 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9674 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9676 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9678 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9679 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9681 dnl ===================================================================
9682 dnl Check for system lcms2
9683 dnl ===================================================================
9684 if test "$with_system_lcms2" != "yes"; then
9687 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9688 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9689 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9690 if test "$GCC" = "yes"; then
9691 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9693 if test "$COM" = "MSC"; then # override the above
9694 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9697 dnl ===================================================================
9698 dnl Check for system cppunit
9699 dnl ===================================================================
9700 if test "$_os" != "Android" ; then
9701 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9704 dnl ===================================================================
9705 dnl Check whether freetype is available
9707 dnl FreeType has 3 different kinds of versions
9708 dnl * release, like 2.4.10
9709 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9711 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9714 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9715 dnl ===================================================================
9716 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9717 if test "x$ac_config_site_64bit_host" = xYES; then
9718 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9720 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9722 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9724 # ===================================================================
9725 # Check for system libxslt
9726 # to prevent incompatibilities between internal libxml2 and external libxslt,
9727 # or vice versa, use with_system_libxml here
9728 # ===================================================================
9729 if test "$with_system_libxml" = "auto"; then
9732 with_system_libxml="$with_system_libs"
9735 with_system_libxml=no
9738 if test "$enable_fuzzers" != "yes"; then
9739 with_system_libxml=yes
9741 with_system_libxml=no
9747 AC_MSG_CHECKING([which libxslt to use])
9748 if test "$with_system_libxml" = "yes"; then
9749 AC_MSG_RESULT([external])
9751 if test "$_os" = "Darwin"; then
9752 dnl make sure to use SDK path
9753 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9754 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9756 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9757 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9759 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9760 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9761 FilterLibs "${LIBXSLT_LIBS}"
9762 LIBXSLT_LIBS="${filteredlibs}"
9763 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9764 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9765 FilterLibs "${LIBEXSLT_LIBS}"
9766 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9769 dnl Check for xsltproc
9770 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9771 if test "$XSLTPROC" = "no"; then
9772 AC_MSG_ERROR([xsltproc is required])
9775 AC_MSG_RESULT([internal])
9777 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9779 AC_SUBST(SYSTEM_LIBXSLT)
9780 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9781 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9783 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9785 AC_SUBST(LIBEXSLT_CFLAGS)
9786 AC_SUBST(LIBEXSLT_LIBS)
9787 AC_SUBST(LIBXSLT_CFLAGS)
9788 AC_SUBST(LIBXSLT_LIBS)
9791 # ===================================================================
9792 # Check for system libxml
9793 # ===================================================================
9794 AC_MSG_CHECKING([which libxml to use])
9795 if test "$with_system_libxml" = "yes"; then
9796 AC_MSG_RESULT([external])
9798 if test "$_os" = "Darwin"; then
9799 dnl make sure to use SDK path
9800 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9802 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9803 elif test $_os = iOS; then
9804 dnl make sure to use SDK path
9805 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9806 LIBXML_CFLAGS="-I$usr/include/libxml2"
9807 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9809 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9810 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9811 FilterLibs "${LIBXML_LIBS}"
9812 LIBXML_LIBS="${filteredlibs}"
9815 dnl Check for xmllint
9816 AC_PATH_PROG(XMLLINT, xmllint, no)
9817 if test "$XMLLINT" = "no"; then
9818 AC_MSG_ERROR([xmllint is required])
9821 AC_MSG_RESULT([internal])
9823 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9824 if test "$COM" = "MSC"; then
9825 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9827 if test "$COM" = "MSC"; then
9828 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9830 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9831 if test "$DISABLE_DYNLOADING" = TRUE; then
9832 LIBXML_LIBS="$LIBXML_LIBS -lm"
9835 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9837 AC_SUBST(SYSTEM_LIBXML)
9838 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9839 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9841 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9842 AC_SUBST(LIBXML_CFLAGS)
9843 AC_SUBST(LIBXML_LIBS)
9846 # =====================================================================
9847 # Checking for a Python interpreter with version >= 3.3.
9848 # Optionally user can pass an option to configure, i. e.
9849 # ./configure PYTHON=/usr/bin/python
9850 # =====================================================================
9851 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9852 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9853 # unless PYTHON is defined as above which allows 'system'
9854 enable_python=internal
9856 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9857 if test -n "$PYTHON"; then
9858 PYTHON_FOR_BUILD=$PYTHON
9860 # This allows a lack of system python with no error, we use internal one in that case.
9861 AM_PATH_PYTHON([3.3],, [:])
9862 # Clean PYTHON_VERSION checked below if cross-compiling
9864 if test "$PYTHON" != ":"; then
9865 PYTHON_FOR_BUILD=$PYTHON
9870 # Checks for Python to use for Pyuno
9871 AC_MSG_CHECKING([which Python to use for Pyuno])
9872 case "$enable_python" in
9874 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9875 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9876 # requirement from the choice whether to include Python stuff in the installer, but why
9878 AC_MSG_ERROR([Python is required at build time.])
9881 AC_MSG_RESULT([none])
9884 if test "$DISABLE_SCRIPTING" = TRUE; then
9885 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9886 AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9888 AC_MSG_RESULT([none, overridden by --disable-scripting])
9890 elif test $build_os = cygwin -o $build_os = wsl; then
9891 dnl When building on Windows we don't attempt to use any installed
9892 dnl "system" Python.
9893 AC_MSG_RESULT([fully internal])
9894 enable_python=internal
9895 elif test "$cross_compiling" = yes; then
9896 AC_MSG_RESULT([system])
9897 enable_python=system
9899 # Unset variables set by the above AM_PATH_PYTHON so that
9900 # we actually do check anew.
9902 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
9903 AM_PATH_PYTHON([3.3],, [:])
9904 AC_MSG_CHECKING([which Python to use for Pyuno])
9905 if test "$PYTHON" = ":"; then
9906 if test -z "$PYTHON_FOR_BUILD"; then
9907 AC_MSG_RESULT([fully internal])
9909 AC_MSG_RESULT([internal])
9911 enable_python=internal
9913 AC_MSG_RESULT([system])
9914 enable_python=system
9919 AC_MSG_RESULT([internal])
9922 AC_MSG_RESULT([fully internal])
9923 enable_python=internal
9926 AC_MSG_RESULT([system])
9927 if test "$_os" = Darwin -a -z "$PYTHON"; then
9928 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9932 AC_MSG_ERROR([Incorrect --enable-python option])
9936 if test $enable_python != no; then
9937 BUILD_TYPE="$BUILD_TYPE PYUNO"
9940 if test $enable_python = system; then
9941 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9942 # Fallback: Accept these in the environment, or as set above
9945 elif test "$cross_compiling" != yes; then
9946 # Unset variables set by the above AM_PATH_PYTHON so that
9947 # we actually do check anew.
9948 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
9949 # This causes an error if no python command is found
9950 AM_PATH_PYTHON([3.3])
9951 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9952 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9953 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9954 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9955 if test -z "$PKG_CONFIG"; then
9956 PYTHON_CFLAGS="-I$python_include"
9957 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9958 elif $PKG_CONFIG --exists python-$python_version-embed; then
9959 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9960 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9961 elif $PKG_CONFIG --exists python-$python_version; then
9962 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9963 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9965 PYTHON_CFLAGS="-I$python_include"
9966 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9968 FilterLibs "${PYTHON_LIBS}"
9969 PYTHON_LIBS="${filteredlibs}"
9971 dnl How to find out the cross-compilation Python installation path?
9972 AC_MSG_CHECKING([for python version])
9973 AS_IF([test -n "$PYTHON_VERSION"],
9974 [AC_MSG_RESULT([$PYTHON_VERSION])],
9975 [AC_MSG_RESULT([not found])
9976 AC_MSG_ERROR([no usable python found])])
9977 test -n "$PYTHON_CFLAGS" && break
9980 dnl Check if the headers really work
9981 save_CPPFLAGS="$CPPFLAGS"
9982 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9983 AC_CHECK_HEADER(Python.h)
9984 CPPFLAGS="$save_CPPFLAGS"
9986 # let the PYTHON_FOR_BUILD match the same python installation that
9987 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9988 # better for PythonTests.
9989 PYTHON_FOR_BUILD=$PYTHON
9992 if test "$with_lxml" != no; then
9993 if test -z "$PYTHON_FOR_BUILD"; then
9996 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9999 if test "$cross_compiling" != yes ; then
10000 BUILD_TYPE="$BUILD_TYPE LXML"
10005 AC_MSG_CHECKING([for python lxml])
10006 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
10007 AC_MSG_RESULT([yes])
10011 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
10014 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
10015 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
10016 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
10018 BUILD_TYPE="$BUILD_TYPE LXML"
10019 AC_MSG_RESULT([no, using internal lxml])
10022 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
10030 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
10032 PYTHON_VERSION_MAJOR=3
10033 PYTHON_VERSION_MINOR=8
10034 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.15
10035 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
10036 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
10038 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
10040 # Embedded Python dies without Home set
10041 if test "$HOME" = ""; then
10046 dnl By now enable_python should be "system", "internal" or "no"
10047 case $enable_python in
10051 if test "x$ac_cv_header_Python_h" != "xyes"; then
10052 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
10056 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
10057 AC_MSG_CHECKING([for correct python library version])
10058 AC_RUN_IFELSE([AC_LANG_SOURCE([[
10059 #include <Python.h>
10061 int main(int argc, char **argv) {
10062 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
10065 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
10068 dnl FIXME Check if the Python library can be linked with, too?
10072 BUILD_TYPE="$BUILD_TYPE PYTHON"
10073 if test "$OS" = LINUX -o "$OS" = WNT ; then
10074 BUILD_TYPE="$BUILD_TYPE LIBFFI"
10078 DISABLE_PYTHON=TRUE
10082 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10086 AC_SUBST(DISABLE_PYTHON)
10087 AC_SUBST(SYSTEM_PYTHON)
10088 AC_SUBST(PYTHON_CFLAGS)
10089 AC_SUBST(PYTHON_FOR_BUILD)
10090 AC_SUBST(PYTHON_LIBS)
10091 AC_SUBST(PYTHON_VERSION)
10092 AC_SUBST(PYTHON_VERSION_MAJOR)
10093 AC_SUBST(PYTHON_VERSION_MINOR)
10095 AC_MSG_CHECKING([whether to build LibreLogo])
10096 case "$enable_python" in
10098 AC_MSG_RESULT([no; Python disabled])
10101 if test "${enable_librelogo}" = "no"; then
10102 AC_MSG_RESULT([no])
10104 AC_MSG_RESULT([yes])
10105 BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10106 AC_DEFINE([ENABLE_LIBRELOGO],1)
10110 AC_SUBST(ENABLE_LIBRELOGO)
10116 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10117 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10118 ENABLE_MARIADBC=TRUE
10119 AC_MSG_RESULT([yes])
10120 BUILD_TYPE="$BUILD_TYPE MARIADBC"
10122 AC_MSG_RESULT([no])
10124 AC_SUBST(ENABLE_MARIADBC)
10125 AC_SUBST(MARIADBC_MAJOR)
10126 AC_SUBST(MARIADBC_MINOR)
10127 AC_SUBST(MARIADBC_MICRO)
10129 if test "$ENABLE_MARIADBC" = "TRUE"; then
10130 dnl ===================================================================
10131 dnl Check for system MariaDB
10132 dnl ===================================================================
10133 AC_MSG_CHECKING([which MariaDB to use])
10134 if test "$with_system_mariadb" = "yes"; then
10135 AC_MSG_RESULT([external])
10136 SYSTEM_MARIADB_CONNECTOR_C=TRUE
10137 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10138 if test -z "$MARIADBCONFIG"; then
10139 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10140 if test -z "$MARIADBCONFIG"; then
10141 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10142 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10145 AC_MSG_CHECKING([MariaDB version])
10146 MARIADB_VERSION=`$MARIADBCONFIG --version`
10147 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10148 if test "$MARIADB_MAJOR" -ge "5"; then
10149 AC_MSG_RESULT([OK])
10151 AC_MSG_ERROR([too old, use 5.0.x or later])
10153 AC_MSG_CHECKING([for MariaDB Client library])
10154 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10155 if test "$COM_IS_CLANG" = TRUE; then
10156 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10158 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10159 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10160 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10162 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10163 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10164 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10165 | sed -e 's|/lib64/|/lib/|')
10167 FilterLibs "${MARIADB_LIBS}"
10168 MARIADB_LIBS="${filteredlibs}"
10169 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10170 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10171 if test "$enable_bundle_mariadb" = "yes"; then
10172 AC_MSG_RESULT([yes])
10173 BUNDLE_MARIADB_CONNECTOR_C=TRUE
10174 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10176 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10178 /g' | grep -E '(mysqlclient|mariadb)')
10179 if test "$_os" = "Darwin"; then
10180 LIBMARIADB=${LIBMARIADB}.dylib
10181 elif test "$_os" = "WINNT"; then
10182 LIBMARIADB=${LIBMARIADB}.dll
10184 LIBMARIADB=${LIBMARIADB}.so
10186 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10187 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10188 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10189 AC_MSG_RESULT([found.])
10190 PathFormat "$LIBMARIADB_PATH"
10191 LIBMARIADB_PATH="$formatted_path"
10193 AC_MSG_ERROR([not found.])
10196 AC_MSG_RESULT([no])
10197 BUNDLE_MARIADB_CONNECTOR_C=
10200 AC_MSG_RESULT([internal])
10201 SYSTEM_MARIADB_CONNECTOR_C=
10202 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10203 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10204 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10207 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10208 AC_SUBST(MARIADB_CFLAGS)
10209 AC_SUBST(MARIADB_LIBS)
10210 AC_SUBST(LIBMARIADB)
10211 AC_SUBST(LIBMARIADB_PATH)
10212 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10215 dnl ===================================================================
10216 dnl Check for system hsqldb
10217 dnl ===================================================================
10218 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10219 AC_MSG_CHECKING([which hsqldb to use])
10220 if test "$with_system_hsqldb" = "yes"; then
10221 AC_MSG_RESULT([external])
10223 if test -z $HSQLDB_JAR; then
10224 HSQLDB_JAR=/usr/share/java/hsqldb.jar
10226 if ! test -f $HSQLDB_JAR; then
10227 AC_MSG_ERROR(hsqldb.jar not found.)
10229 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10233 my $file = "$ENV{'HSQLDB_JAR'}";
10234 my $zip = Archive::Zip->new( $file );
10235 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10236 if ( $mf =~ m/Specification-Version: 1.8.*/ )
10238 push @l, split(/\n/, $mf);
10239 foreach my $line (@l)
10241 if ($line =~ m/Specification-Version:/)
10243 ($t, $version) = split (/:/,$line);
10244 $version =~ s/^\s//;
10245 ($a, $b, $c, $d) = split (/\./,$version);
10246 if ($c == "0" && $d > "8")
10261 AC_MSG_RESULT([yes])
10263 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10266 AC_MSG_RESULT([internal])
10268 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10272 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10273 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10276 AC_SUBST(SYSTEM_HSQLDB)
10277 AC_SUBST(HSQLDB_JAR)
10279 dnl ===================================================================
10280 dnl Check for PostgreSQL stuff
10281 dnl ===================================================================
10282 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10283 if test "x$enable_postgresql_sdbc" != "xno"; then
10284 AC_MSG_RESULT([yes])
10285 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10287 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10288 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10290 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10291 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10294 postgres_interface=""
10295 if test "$with_system_postgresql" = "yes"; then
10296 postgres_interface="external PostgreSQL"
10297 SYSTEM_POSTGRESQL=TRUE
10298 if test "$_os" = Darwin; then
10300 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10301 pg_supp_path="$P_SEP$d$pg_supp_path"
10304 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10305 if test -n "$PGCONFIG"; then
10306 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10307 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10309 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10310 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10311 POSTGRESQL_LIB=$POSTGRESQL_LIBS
10313 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10316 FilterLibs "${POSTGRESQL_LIB}"
10317 POSTGRESQL_LIB="${filteredlibs}"
10319 # if/when anything else than PostgreSQL uses Kerberos,
10320 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10325 # macOS has system MIT Kerberos 5 since 10.4
10326 if test "$with_krb5" != "no"; then
10329 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10330 # that the libraries where these functions are located on macOS will change, is it?
10331 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10332 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10335 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10336 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10337 KRB5_LIBS="$KRB5_LIBS $LIBS"
10340 if test "$with_gssapi" != "no"; then
10343 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10344 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10350 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10351 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10354 Linux|GNU|*BSD|DragonFly)
10355 if test "$with_krb5" != "no"; then
10358 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10359 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10362 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10363 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10364 KRB5_LIBS="$KRB5_LIBS $LIBS"
10367 if test "$with_gssapi" != "no"; then
10370 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10371 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10377 if test "$with_krb5" = "yes"; then
10380 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10381 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10384 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10385 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10386 KRB5_LIBS="$KRB5_LIBS $LIBS"
10389 if test "$with_gssapi" = "yes"; then
10392 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10393 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10399 if test -n "$with_libpq_path"; then
10400 SYSTEM_POSTGRESQL=TRUE
10401 postgres_interface="external libpq"
10402 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10403 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10406 postgres_interface="internal"
10408 POSTGRESQL_INC="%OVERRIDE_ME%"
10409 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10413 AC_MSG_CHECKING([PostgreSQL C interface])
10414 AC_MSG_RESULT([$postgres_interface])
10416 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10417 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10418 save_CFLAGS=$CFLAGS
10419 save_CPPFLAGS=$CPPFLAGS
10421 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10422 LIBS="${LIBS} ${POSTGRESQL_LIB}"
10423 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10424 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10425 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10426 CFLAGS=$save_CFLAGS
10427 CPPFLAGS=$save_CPPFLAGS
10430 BUILD_POSTGRESQL_SDBC=TRUE
10432 AC_MSG_RESULT([no])
10434 AC_SUBST(WITH_KRB5)
10435 AC_SUBST(WITH_GSSAPI)
10436 AC_SUBST(GSSAPI_LIBS)
10437 AC_SUBST(KRB5_LIBS)
10438 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10439 AC_SUBST(SYSTEM_POSTGRESQL)
10440 AC_SUBST(POSTGRESQL_INC)
10441 AC_SUBST(POSTGRESQL_LIB)
10443 dnl ===================================================================
10444 dnl Check for Firebird stuff
10445 dnl ===================================================================
10446 ENABLE_FIREBIRD_SDBC=
10447 if test "$enable_firebird_sdbc" = "yes" ; then
10448 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10450 dnl ===================================================================
10451 dnl Check for system Firebird
10452 dnl ===================================================================
10453 AC_MSG_CHECKING([which Firebird to use])
10454 if test "$with_system_firebird" = "yes"; then
10455 AC_MSG_RESULT([external])
10456 SYSTEM_FIREBIRD=TRUE
10457 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10458 if test -z "$FIREBIRDCONFIG"; then
10459 AC_MSG_NOTICE([No fb_config -- using pkg-config])
10460 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10461 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10463 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10465 AC_MSG_NOTICE([fb_config found])
10466 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10467 AC_MSG_CHECKING([for Firebird Client library])
10468 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10469 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10470 FilterLibs "${FIREBIRD_LIBS}"
10471 FIREBIRD_LIBS="${filteredlibs}"
10473 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10474 AC_MSG_CHECKING([Firebird version])
10475 if test -n "${FIREBIRD_VERSION}"; then
10476 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10477 if test "$FIREBIRD_MAJOR" -ge "3"; then
10478 AC_MSG_RESULT([OK])
10480 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10483 save_CFLAGS="${CFLAGS}"
10484 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10485 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10486 #if defined(FB_API_VER) && FB_API_VER == 30
10487 int fb_api_is_30(void) { return 0; }
10489 #error "Wrong Firebird API version"
10490 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10491 CFLAGS="$save_CFLAGS"
10493 ENABLE_FIREBIRD_SDBC=TRUE
10494 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10495 elif test "$enable_database_connectivity" = no; then
10496 AC_MSG_RESULT([none])
10497 elif test "$cross_compiling" = "yes"; then
10498 AC_MSG_RESULT([none])
10500 dnl Embedded Firebird has version 3.0
10501 dnl We need libatomic_ops for any non X86/X64 system
10502 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10503 dnl ===================================================================
10504 dnl Check for system libatomic_ops
10505 dnl ===================================================================
10506 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10507 if test "$with_system_libatomic_ops" = "yes"; then
10508 SYSTEM_LIBATOMIC_OPS=TRUE
10509 AC_CHECK_HEADERS(atomic_ops.h, [],
10510 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10512 SYSTEM_LIBATOMIC_OPS=
10513 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10514 LIBATOMIC_OPS_LIBS="-latomic_ops"
10515 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10519 AC_MSG_RESULT([internal])
10521 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10522 FIREBIRD_LIBS="-lfbclient"
10524 if test "$with_system_libtommath" = "yes"; then
10525 SYSTEM_LIBTOMMATH=TRUE
10526 dnl check for tommath presence
10528 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10529 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10533 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10534 LIBTOMMATH_LIBS="-ltommath"
10535 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10538 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10539 ENABLE_FIREBIRD_SDBC=TRUE
10540 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10543 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10544 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10545 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10546 AC_SUBST(LIBATOMIC_OPS_LIBS)
10547 AC_SUBST(SYSTEM_FIREBIRD)
10548 AC_SUBST(FIREBIRD_CFLAGS)
10549 AC_SUBST(FIREBIRD_LIBS)
10550 AC_SUBST(SYSTEM_LIBTOMMATH)
10551 AC_SUBST(LIBTOMMATH_CFLAGS)
10552 AC_SUBST(LIBTOMMATH_LIBS)
10554 dnl ===================================================================
10555 dnl Check for system curl
10556 dnl ===================================================================
10557 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10559 dnl ===================================================================
10560 dnl Check for system boost
10561 dnl ===================================================================
10562 AC_MSG_CHECKING([which boost to use])
10563 if test "$with_system_boost" = "yes"; then
10564 AC_MSG_RESULT([external])
10566 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10568 AX_BOOST_FILESYSTEM
10571 AC_LANG_PUSH([C++])
10572 save_CXXFLAGS=$CXXFLAGS
10573 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10574 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10575 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10576 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10577 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10578 CXXFLAGS=$save_CXXFLAGS
10580 # this is in m4/ax_boost_base.m4
10581 FilterLibs "${BOOST_LDFLAGS}"
10582 BOOST_LDFLAGS="${filteredlibs}"
10584 AC_MSG_RESULT([internal])
10585 BUILD_TYPE="$BUILD_TYPE BOOST"
10587 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10588 # use warning-suppressing wrapper headers
10589 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10591 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10594 AC_SUBST(SYSTEM_BOOST)
10596 dnl ===================================================================
10597 dnl Check for system mdds
10598 dnl ===================================================================
10599 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10600 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.0 >= 2.0.0])
10602 dnl ===================================================================
10603 dnl Check for system dragonbox
10604 dnl ===================================================================
10605 AC_MSG_CHECKING([which dragonbox to use])
10606 if test "$with_system_dragonbox" = "yes"; then
10607 AC_MSG_RESULT([external])
10608 SYSTEM_DRAGONBOX=TRUE
10609 AC_LANG_PUSH([C++])
10610 save_CPPFLAGS=$CPPFLAGS
10611 # This is where upstream installs to, unfortunately no .pc or so...
10612 DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.0.0
10613 CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10614 AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10615 [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10617 CPPFLAGS=$save_CPPFLAGS
10619 AC_MSG_RESULT([internal])
10620 BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10623 AC_SUBST([SYSTEM_DRAGONBOX])
10624 AC_SUBST([DRAGONBOX_CFLAGS])
10626 dnl ===================================================================
10627 dnl Check for system libfixmath
10628 dnl ===================================================================
10629 AC_MSG_CHECKING([which libfixmath to use])
10630 if test "$with_system_libfixmath" = "yes"; then
10631 AC_MSG_RESULT([external])
10632 SYSTEM_LIBFIXMATH=TRUE
10633 AC_LANG_PUSH([C++])
10634 AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10635 [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10636 AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10639 AC_MSG_RESULT([internal])
10642 AC_SUBST([SYSTEM_LIBFIXMATH])
10644 dnl ===================================================================
10645 dnl Check for system glm
10646 dnl ===================================================================
10647 AC_MSG_CHECKING([which glm to use])
10648 if test "$with_system_glm" = "yes"; then
10649 AC_MSG_RESULT([external])
10651 AC_LANG_PUSH([C++])
10652 AC_CHECK_HEADER([glm/glm.hpp], [],
10653 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10656 AC_MSG_RESULT([internal])
10657 BUILD_TYPE="$BUILD_TYPE GLM"
10659 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10661 AC_SUBST([GLM_CFLAGS])
10662 AC_SUBST([SYSTEM_GLM])
10664 dnl ===================================================================
10665 dnl Check for system odbc
10666 dnl ===================================================================
10667 AC_MSG_CHECKING([which odbc headers to use])
10668 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
10669 AC_MSG_RESULT([external])
10670 SYSTEM_ODBC_HEADERS=TRUE
10672 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10673 save_CPPFLAGS=$CPPFLAGS
10675 PathFormat "$winsdktest"
10676 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"
10677 AC_CHECK_HEADER(sqlext.h, [],
10678 [AC_MSG_ERROR(odbc not found. install odbc)],
10679 [#include <windows.h>])
10680 CPPFLAGS=$save_CPPFLAGS
10682 AC_CHECK_HEADER(sqlext.h, [],
10683 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10685 elif test "$enable_database_connectivity" = no; then
10686 AC_MSG_RESULT([none])
10688 AC_MSG_RESULT([internal])
10689 SYSTEM_ODBC_HEADERS=
10691 AC_SUBST(SYSTEM_ODBC_HEADERS)
10693 dnl ===================================================================
10694 dnl Check for system NSS
10695 dnl ===================================================================
10696 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10697 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10698 AC_DEFINE(HAVE_FEATURE_NSS)
10700 elif test $_os != iOS ; then
10703 AC_SUBST(ENABLE_NSS)
10705 dnl ===================================================================
10706 dnl Enable LDAP support
10707 dnl ===================================================================
10709 if test "$test_openldap" = yes; then
10710 AC_MSG_CHECKING([whether to enable LDAP support])
10711 if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10712 AC_MSG_RESULT([yes])
10715 if test "$enable_ldap" != "yes"; then
10716 AC_MSG_RESULT([no])
10718 AC_MSG_RESULT([no (needs NSS or system openldap)])
10722 dnl ===================================================================
10723 dnl Check for system openldap
10724 dnl ===================================================================
10726 if test "$ENABLE_LDAP" = TRUE; then
10727 AC_MSG_CHECKING([which openldap library to use])
10728 if test "$with_system_openldap" = yes; then
10729 AC_MSG_RESULT([external])
10730 SYSTEM_OPENLDAP=TRUE
10731 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10732 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10733 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10735 AC_MSG_RESULT([internal])
10736 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10741 AC_SUBST(ENABLE_LDAP)
10742 AC_SUBST(SYSTEM_OPENLDAP)
10744 dnl ===================================================================
10745 dnl Check for TLS/SSL and cryptographic implementation to use
10746 dnl ===================================================================
10747 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10748 if test -n "$with_tls"; then
10751 AC_DEFINE(USE_TLS_OPENSSL)
10753 AC_MSG_RESULT([$TLS])
10755 if test "$enable_openssl" != "yes"; then
10756 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10759 # warn that OpenSSL has been selected but not all TLS code has this option
10760 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10761 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10764 AC_DEFINE(USE_TLS_NSS)
10766 AC_MSG_RESULT([$TLS])
10769 AC_MSG_RESULT([none])
10770 AC_MSG_WARN([Skipping TLS/SSL])
10774 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10776 nss - Mozilla's Network Security Services (NSS)
10781 # default to using NSS, it results in smaller oox lib
10782 AC_DEFINE(USE_TLS_NSS)
10784 AC_MSG_RESULT([$TLS])
10788 dnl ===================================================================
10789 dnl Check for system sane
10790 dnl ===================================================================
10791 AC_MSG_CHECKING([which sane header to use])
10792 if test "$with_system_sane" = "yes"; then
10793 AC_MSG_RESULT([external])
10794 AC_CHECK_HEADER(sane/sane.h, [],
10795 [AC_MSG_ERROR(sane not found. install sane)], [])
10797 AC_MSG_RESULT([internal])
10798 BUILD_TYPE="$BUILD_TYPE SANE"
10801 dnl ===================================================================
10802 dnl Check for system icu
10803 dnl ===================================================================
10806 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10807 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10808 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10809 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10810 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10811 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 4.6])
10812 if test "$SYSTEM_ICU" = TRUE; then
10813 AC_LANG_PUSH([C++])
10814 AC_MSG_CHECKING([for unicode/rbbi.h])
10815 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10818 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10819 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10820 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10822 if test "$ICU_MAJOR" -ge 50; then
10823 AC_MSG_NOTICE([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10827 if test "$CROSS_COMPILING" != TRUE; then
10828 # using the system icu tools can lead to version confusion, use the
10829 # ones from the build environment when cross-compiling
10830 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10831 if test -z "$SYSTEM_GENBRK"; then
10832 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10834 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10835 if test -z "$SYSTEM_GENCCODE"; then
10836 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10838 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10839 if test -z "$SYSTEM_GENCMN"; then
10840 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10842 if test "$ICU_MAJOR" -lt 49; then
10843 ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10844 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10845 ICU_RECLASSIFIED_HEBREW_LETTER=
10849 if test "$ICU_MAJOR" -ge "59"; then
10850 # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10851 # with -std=c++11 but not all external libraries can be built with that,
10852 # for those use a bit-compatible typedef uint16_t UChar; see
10853 # icu/source/common/unicode/umachine.h
10854 ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10858 AC_SUBST(SYSTEM_GENBRK)
10859 AC_SUBST(SYSTEM_GENCCODE)
10860 AC_SUBST(SYSTEM_GENCMN)
10861 AC_SUBST(ICU_MAJOR)
10862 AC_SUBST(ICU_MINOR)
10863 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10864 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10865 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10866 AC_SUBST(ICU_UCHAR_TYPE)
10868 dnl ==================================================================
10870 dnl ==================================================================
10871 DEFAULT_CRASHDUMP_VALUE="true"
10872 AC_MSG_CHECKING([whether to enable breakpad])
10873 if test "$enable_breakpad" != yes; then
10874 AC_MSG_RESULT([no])
10876 AC_MSG_RESULT([yes])
10877 ENABLE_BREAKPAD="TRUE"
10878 AC_DEFINE(ENABLE_BREAKPAD)
10879 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10880 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10882 AC_MSG_CHECKING([for disable crash dump])
10883 if test "$enable_crashdump" = no; then
10884 DEFAULT_CRASHDUMP_VALUE="false"
10885 AC_MSG_RESULT([yes])
10887 AC_MSG_RESULT([no])
10890 AC_MSG_CHECKING([for crashreport config])
10891 if test "$with_symbol_config" = "no"; then
10892 BREAKPAD_SYMBOL_CONFIG="invalid"
10893 AC_MSG_RESULT([no])
10895 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10896 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10897 AC_MSG_RESULT([yes])
10899 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10901 AC_SUBST(ENABLE_BREAKPAD)
10902 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10904 dnl ===================================================================
10906 dnl ===================================================================
10907 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.2])
10908 if test "$with_system_orcus" != "yes"; then
10909 if test "$SYSTEM_BOOST" = "TRUE"; then
10910 dnl Link with Boost.System
10911 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10912 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10913 dnl in documentation has no effect.
10917 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10918 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10919 AC_SUBST([BOOST_SYSTEM_LIB])
10920 AC_SUBST(SYSTEM_LIBORCUS)
10922 dnl ===================================================================
10924 dnl ===================================================================
10926 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10927 GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10928 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10930 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10931 HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10932 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 2.6.0])
10934 if test "$COM" = "MSC"; then # override the above
10935 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10936 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10939 if test "$with_system_harfbuzz" = "yes"; then
10940 if test "$with_system_graphite" = "no"; then
10941 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10943 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10945 save_CFLAGS="$CFLAGS"
10946 LIBS="$LIBS $HARFBUZZ_LIBS"
10947 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10948 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10950 CFLAGS="$save_CFLAGS"
10952 if test "$with_system_graphite" = "yes"; then
10953 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10957 if test "$USING_X11" = TRUE; then
10960 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10962 if test -z "$x_includes"; then
10963 x_includes="default_x_includes"
10965 if test -z "$x_libraries"; then
10966 x_libraries="default_x_libraries"
10968 CFLAGS="$CFLAGS $X_CFLAGS"
10969 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10970 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10972 x_includes="no_x_includes"
10973 x_libraries="no_x_libraries"
10976 if test "$USING_X11" = TRUE; then
10977 dnl ===================================================================
10978 dnl Check for extension headers
10979 dnl ===================================================================
10980 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10981 [#include <X11/extensions/shape.h>])
10983 # vcl needs ICE and SM
10984 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10985 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10986 [AC_MSG_ERROR(ICE library not found)])
10987 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10988 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10989 [AC_MSG_ERROR(SM library not found)])
10992 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10993 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10994 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10997 dnl ===================================================================
10998 dnl Check for system Xrender
10999 dnl ===================================================================
11000 AC_MSG_CHECKING([whether to use Xrender])
11001 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
11002 AC_MSG_RESULT([yes])
11003 PKG_CHECK_MODULES(XRENDER, xrender)
11004 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11005 FilterLibs "${XRENDER_LIBS}"
11006 XRENDER_LIBS="${filteredlibs}"
11007 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
11008 [AC_MSG_ERROR(libXrender not found or functional)], [])
11009 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
11010 [AC_MSG_ERROR(Xrender not found. install X)], [])
11012 AC_MSG_RESULT([no])
11014 AC_SUBST(XRENDER_CFLAGS)
11015 AC_SUBST(XRENDER_LIBS)
11017 dnl ===================================================================
11018 dnl Check for XRandr
11019 dnl ===================================================================
11020 AC_MSG_CHECKING([whether to enable RandR support])
11021 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
11022 AC_MSG_RESULT([yes])
11023 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
11024 if test "$ENABLE_RANDR" != "TRUE"; then
11025 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
11026 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
11028 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
11029 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
11030 XRANDR_LIBS="-lXrandr "
11031 ENABLE_RANDR="TRUE"
11033 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11034 FilterLibs "${XRANDR_LIBS}"
11035 XRANDR_LIBS="${filteredlibs}"
11038 AC_MSG_RESULT([no])
11040 AC_SUBST(XRANDR_CFLAGS)
11041 AC_SUBST(XRANDR_LIBS)
11042 AC_SUBST(ENABLE_RANDR)
11044 if test -z "$with_webdav"; then
11045 with_webdav=$test_webdav
11048 AC_MSG_CHECKING([for WebDAV support])
11049 case "$with_webdav" in
11051 AC_MSG_RESULT([no])
11055 AC_MSG_RESULT([yes])
11056 # curl is already mandatory (almost) and checked elsewhere
11057 if test "$enable_curl" = "no"; then
11058 AC_MSG_ERROR(["--with-webdav conflicts with --disable-curl"])
11063 AC_SUBST(WITH_WEBDAV)
11065 dnl ===================================================================
11066 dnl Check for disabling cve_tests
11067 dnl ===================================================================
11068 AC_MSG_CHECKING([whether to execute CVE tests])
11069 # If not explicitly enabled or disabled, default
11070 if test -z "$enable_cve_tests"; then
11073 # Default cves off for Windows with its wild and wonderful
11074 # variety of AV software kicking in and panicking
11075 enable_cve_tests=no
11079 enable_cve_tests=yes
11083 if test "$enable_cve_tests" = "no"; then
11084 AC_MSG_RESULT([no])
11085 DISABLE_CVE_TESTS=TRUE
11086 AC_SUBST(DISABLE_CVE_TESTS)
11088 AC_MSG_RESULT([yes])
11091 dnl ===================================================================
11092 dnl Check for system openssl
11093 dnl ===================================================================
11095 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11096 if test "$enable_openssl" = "yes"; then
11097 AC_MSG_RESULT([no])
11098 ENABLE_OPENSSL=TRUE
11099 if test "$_os" = Darwin ; then
11100 # OpenSSL is deprecated when building for 10.7 or later.
11102 # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11103 # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11105 with_system_openssl=no
11106 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11107 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11108 && test "$with_system_openssl" != "no"; then
11109 with_system_openssl=yes
11110 SYSTEM_OPENSSL=TRUE
11112 OPENSSL_LIBS="-lssl -lcrypto"
11114 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11116 if test "$with_system_openssl" = "yes"; then
11117 AC_MSG_CHECKING([whether openssl supports SHA512])
11119 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11120 SHA512_CTX context;
11121 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11125 AC_MSG_RESULT([yes])
11127 # warn that although OpenSSL is disabled, system libraries may depend on it
11128 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11129 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11132 AC_SUBST([ENABLE_OPENSSL])
11134 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11135 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11136 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11137 enable_cipher_openssl_backend=no
11139 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11142 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11143 ENABLE_CIPHER_OPENSSL_BACKEND=
11144 if test "$enable_cipher_openssl_backend" = yes; then
11145 AC_MSG_RESULT([yes])
11146 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11148 AC_MSG_RESULT([no])
11150 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11152 dnl ===================================================================
11153 dnl Select the crypto backends used by LO
11154 dnl ===================================================================
11156 if test "$build_crypto" = yes; then
11157 if test "$OS" = WNT; then
11158 BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11159 AC_DEFINE([USE_CRYPTO_MSCAPI])
11160 elif test "$ENABLE_NSS" = TRUE; then
11161 BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11162 AC_DEFINE([USE_CRYPTO_NSS])
11166 dnl ===================================================================
11167 dnl Check for system redland
11168 dnl ===================================================================
11169 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11170 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11171 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11172 if test "$with_system_redland" = "yes"; then
11173 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11174 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11180 AC_SUBST(RAPTOR_MAJOR)
11181 AC_SUBST(RASQAL_MAJOR)
11182 AC_SUBST(REDLAND_MAJOR)
11184 dnl ===================================================================
11185 dnl Check for system hunspell
11186 dnl ===================================================================
11187 AC_MSG_CHECKING([which libhunspell to use])
11188 if test "$with_system_hunspell" = "yes"; then
11189 AC_MSG_RESULT([external])
11190 SYSTEM_HUNSPELL=TRUE
11191 AC_LANG_PUSH([C++])
11192 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11193 if test "$HUNSPELL_PC" != "TRUE"; then
11194 AC_CHECK_HEADER(hunspell.hxx, [],
11196 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11197 [AC_MSG_ERROR(hunspell headers not found.)], [])
11199 AC_CHECK_LIB([hunspell], [main], [:],
11200 [ AC_MSG_ERROR(hunspell library not found.) ], [])
11201 HUNSPELL_LIBS=-lhunspell
11204 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11205 FilterLibs "${HUNSPELL_LIBS}"
11206 HUNSPELL_LIBS="${filteredlibs}"
11208 AC_MSG_RESULT([internal])
11210 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11211 if test "$COM" = "MSC"; then
11212 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11214 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11216 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11218 AC_SUBST(SYSTEM_HUNSPELL)
11219 AC_SUBST(HUNSPELL_CFLAGS)
11220 AC_SUBST(HUNSPELL_LIBS)
11222 dnl ===================================================================
11223 dnl Check for system zxing
11224 dnl ===================================================================
11225 AC_MSG_CHECKING([whether to use zxing])
11226 if test "$enable_zxing" = "no"; then
11227 AC_MSG_RESULT([no])
11231 AC_MSG_RESULT([yes])
11233 AC_MSG_CHECKING([which libzxing to use])
11234 if test "$with_system_zxing" = "yes"; then
11235 AC_MSG_RESULT([external])
11238 AC_LANG_PUSH([C++])
11239 save_CXXFLAGS=$CXXFLAGS
11242 for i in $CPLUS_INCLUDE_PATH /usr/include; do
11243 dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11244 dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11245 dnl unsetting follows the advice at <http://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11246 dnl a=commit;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11247 dnl unsetting IFS."):
11249 dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11250 dnl ignore them here:
11251 if test -z "$i"; then
11254 dnl TODO: White space in $i would cause problems:
11255 CXXFLAGS="$save_CXXFLAGS -I$i/ZXing"
11256 AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11257 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11259 CXXFLAGS=$save_CXXFLAGS
11260 if test -z "$ZXING_CFLAGS"; then
11261 AC_MSG_ERROR(zxing headers not found.)
11263 AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11264 [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11265 [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11267 ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11268 FilterLibs "${ZXING_LIBS}"
11269 ZXING_LIBS="${filteredlibs}"
11271 AC_MSG_RESULT([internal])
11273 BUILD_TYPE="$BUILD_TYPE ZXING"
11275 if test "$ENABLE_ZXING" = TRUE; then
11276 AC_DEFINE(ENABLE_ZXING)
11279 AC_SUBST(SYSTEM_ZXING)
11280 AC_SUBST(ENABLE_ZXING)
11281 AC_SUBST(ZXING_CFLAGS)
11282 AC_SUBST(ZXING_LIBS)
11284 dnl ===================================================================
11285 dnl Check for system box2d
11286 dnl ===================================================================
11287 AC_MSG_CHECKING([which box2d to use])
11288 if test "$with_system_box2d" = "yes"; then
11289 AC_MSG_RESULT([external])
11291 AC_LANG_PUSH([C++])
11292 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11293 [BOX2D_H_FOUND='FALSE'])
11294 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11296 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11298 # fail this. there's no other alternative to check when we are here.
11299 AC_CHECK_HEADER([Box2D/Box2D.h], [],
11300 [AC_MSG_ERROR(box2d headers not found.)])
11302 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11304 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11305 [ AC_MSG_ERROR(box2d library not found.) ], [])
11306 BOX2D_LIBS=-l$_BOX2D_LIB
11308 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11309 FilterLibs "${BOX2D_LIBS}"
11310 BOX2D_LIBS="${filteredlibs}"
11312 AC_MSG_RESULT([internal])
11314 BUILD_TYPE="$BUILD_TYPE BOX2D"
11316 AC_SUBST(SYSTEM_BOX2D)
11317 AC_SUBST(BOX2D_CFLAGS)
11318 AC_SUBST(BOX2D_LIBS)
11320 dnl ===================================================================
11321 dnl Checking for altlinuxhyph
11322 dnl ===================================================================
11323 AC_MSG_CHECKING([which altlinuxhyph to use])
11324 if test "$with_system_altlinuxhyph" = "yes"; then
11325 AC_MSG_RESULT([external])
11327 AC_CHECK_HEADER(hyphen.h, [],
11328 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11329 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11330 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11331 [#include <hyphen.h>])
11332 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11333 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11334 if test -z "$HYPHEN_LIB"; then
11335 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11336 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11338 if test -z "$HYPHEN_LIB"; then
11339 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11340 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11343 AC_MSG_RESULT([internal])
11345 BUILD_TYPE="$BUILD_TYPE HYPHEN"
11346 if test "$COM" = "MSC"; then
11347 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11349 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11352 AC_SUBST(SYSTEM_HYPH)
11353 AC_SUBST(HYPHEN_LIB)
11355 dnl ===================================================================
11356 dnl Checking for mythes
11357 dnl ===================================================================
11358 AC_MSG_CHECKING([which mythes to use])
11359 if test "$with_system_mythes" = "yes"; then
11360 AC_MSG_RESULT([external])
11362 AC_LANG_PUSH([C++])
11363 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11364 if test "$MYTHES_PKGCONFIG" = "no"; then
11365 AC_CHECK_HEADER(mythes.hxx, [],
11366 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11367 AC_CHECK_LIB([mythes-1.2], [main], [:],
11368 [ MYTHES_FOUND=no], [])
11369 if test "$MYTHES_FOUND" = "no"; then
11370 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11371 [ MYTHES_FOUND=no], [])
11373 if test "$MYTHES_FOUND" = "no"; then
11374 AC_MSG_ERROR([mythes library not found!.])
11378 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11379 FilterLibs "${MYTHES_LIBS}"
11380 MYTHES_LIBS="${filteredlibs}"
11382 AC_MSG_RESULT([internal])
11384 BUILD_TYPE="$BUILD_TYPE MYTHES"
11385 if test "$COM" = "MSC"; then
11386 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11388 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11391 AC_SUBST(SYSTEM_MYTHES)
11392 AC_SUBST(MYTHES_CFLAGS)
11393 AC_SUBST(MYTHES_LIBS)
11395 dnl ===================================================================
11396 dnl How should we build the linear programming solver ?
11397 dnl ===================================================================
11400 AC_MSG_CHECKING([whether to build with CoinMP])
11401 if test "$enable_coinmp" != "no"; then
11403 AC_MSG_RESULT([yes])
11404 if test "$with_system_coinmp" = "yes"; then
11406 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11407 FilterLibs "${COINMP_LIBS}"
11408 COINMP_LIBS="${filteredlibs}"
11410 BUILD_TYPE="$BUILD_TYPE COINMP"
11413 AC_MSG_RESULT([no])
11415 AC_SUBST(ENABLE_COINMP)
11416 AC_SUBST(SYSTEM_COINMP)
11417 AC_SUBST(COINMP_CFLAGS)
11418 AC_SUBST(COINMP_LIBS)
11421 AC_MSG_CHECKING([whether to build with lpsolve])
11422 if test "$enable_lpsolve" != "no"; then
11423 ENABLE_LPSOLVE=TRUE
11424 AC_MSG_RESULT([yes])
11426 AC_MSG_RESULT([no])
11428 AC_SUBST(ENABLE_LPSOLVE)
11430 if test "$ENABLE_LPSOLVE" = TRUE; then
11431 AC_MSG_CHECKING([which lpsolve to use])
11432 if test "$with_system_lpsolve" = "yes"; then
11433 AC_MSG_RESULT([external])
11434 SYSTEM_LPSOLVE=TRUE
11435 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11436 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11438 # some systems need this. Like Ubuntu...
11439 AC_CHECK_LIB(m, floor)
11440 AC_CHECK_LIB(dl, dlopen)
11441 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11442 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11445 AC_MSG_RESULT([internal])
11447 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11450 AC_SUBST(SYSTEM_LPSOLVE)
11452 dnl ===================================================================
11453 dnl Checking for libexttextcat
11454 dnl ===================================================================
11455 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11456 if test "$with_system_libexttextcat" = "yes"; then
11457 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11459 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11461 dnl ===================================================================
11462 dnl Checking for libnumbertext
11463 dnl ===================================================================
11464 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11465 if test "$with_system_libnumbertext" = "yes"; then
11466 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11467 SYSTEM_LIBNUMBERTEXT=YES
11469 SYSTEM_LIBNUMBERTEXT=
11471 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11472 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11474 dnl ***************************************
11475 dnl testing libc version for Linux...
11476 dnl ***************************************
11477 if test "$_os" = "Linux"; then
11478 AC_MSG_CHECKING([whether the libc is recent enough])
11479 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11480 #include <features.h>
11481 #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11482 #error glibc >= 2.1 is required
11484 ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11487 dnl =========================================
11488 dnl Check for uuidgen
11489 dnl =========================================
11490 if test "$_os" = "WINNT"; then
11491 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11492 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11493 UUIDGEN=uuidgen.exe
11496 AC_PATH_PROG([UUIDGEN], [uuidgen])
11497 if test -z "$UUIDGEN"; then
11498 AC_MSG_WARN([uuid is needed for building installation sets])
11502 dnl ***************************************
11503 dnl Checking for bison and flex
11504 dnl ***************************************
11505 AC_PATH_PROG(BISON, bison)
11506 if test -z "$BISON"; then
11507 AC_MSG_ERROR([no bison found in \$PATH, install it])
11509 AC_MSG_CHECKING([the bison version])
11510 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11511 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11512 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11515 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]
11516 dnl typedef union YYSTYPE
11519 dnl while at least 3.4.1 is know to be good:
11520 if test "$COMPILER_PLUGINS" = TRUE; then
11521 if test "$_bison_longver" -lt 2004; then
11522 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11525 if test "$_bison_longver" -lt 2000; then
11526 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11532 AC_PATH_PROG(FLEX, flex)
11533 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11534 FLEX=`cygpath -m $FLEX`
11536 if test -z "$FLEX"; then
11537 AC_MSG_ERROR([no flex found in \$PATH, install it])
11539 AC_MSG_CHECKING([the flex version])
11540 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11541 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11542 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11547 AC_PATH_PROG(DIFF, diff)
11548 if test -z "$DIFF"; then
11549 AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11553 AC_PATH_PROG(UNIQ, uniq)
11554 if test -z "$UNIQ"; then
11555 AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11559 dnl ***************************************
11560 dnl Checking for patch
11561 dnl ***************************************
11562 AC_PATH_PROG(PATCH, patch)
11563 if test -z "$PATCH"; then
11564 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11567 dnl On Solaris or macOS, check if --with-gnu-patch was used
11568 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11569 if test -z "$with_gnu_patch"; then
11572 if test -x "$with_gnu_patch"; then
11573 GNUPATCH=$with_gnu_patch
11575 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11579 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11580 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11581 AC_MSG_RESULT([yes])
11583 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11589 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11590 GNUPATCH=`cygpath -m $GNUPATCH`
11593 dnl We also need to check for --with-gnu-cp
11595 if test -z "$with_gnu_cp"; then
11596 # check the place where the good stuff is hidden on Solaris...
11597 if test -x /usr/gnu/bin/cp; then
11598 GNUCP=/usr/gnu/bin/cp
11600 AC_PATH_PROGS(GNUCP, gnucp cp)
11602 if test -z $GNUCP; then
11603 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11606 if test -x "$with_gnu_cp"; then
11609 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11613 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11614 GNUCP=`cygpath -m $GNUCP`
11617 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11618 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11619 AC_MSG_RESULT([yes])
11620 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11621 AC_MSG_RESULT([yes])
11623 case "$build_os" in
11624 darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11627 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11630 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11639 dnl ***************************************
11640 dnl testing assembler path
11641 dnl ***************************************
11643 if test "$_os" = "WINNT"; then
11644 case "$WIN_HOST_ARCH" in
11645 x86) assembler=ml.exe ;;
11646 x64) assembler=ml64.exe ;;
11647 arm64) assembler=armasm64.exe ;;
11650 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11651 if test -f "$MSVC_HOST_PATH/$assembler"; then
11652 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11653 AC_MSG_RESULT([$ML_EXE])
11655 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11661 dnl ===================================================================
11662 dnl We need zip and unzip
11663 dnl ===================================================================
11664 AC_PATH_PROG(ZIP, zip)
11665 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11666 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11667 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],,)
11670 AC_PATH_PROG(UNZIP, unzip)
11671 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11673 dnl ===================================================================
11674 dnl Zip must be a specific type for different build types.
11675 dnl ===================================================================
11676 if test $build_os = cygwin; then
11677 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11678 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11682 dnl ===================================================================
11683 dnl We need touch with -h option support.
11684 dnl ===================================================================
11685 AC_PATH_PROG(TOUCH, touch)
11686 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11687 touch "$WARNINGS_FILE"
11688 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11689 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],,)
11692 dnl ===================================================================
11693 dnl Check for system epoxy
11694 dnl ===================================================================
11695 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11696 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11698 dnl ===================================================================
11699 dnl Set vcl option: coordinate device in double or sal_Int32
11700 dnl ===================================================================
11702 AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11703 if test "$enable_float_device_pixel" = yes; then
11704 AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11705 AC_MSG_RESULT([double])
11707 AC_MSG_RESULT([sal_Int32])
11710 dnl ===================================================================
11711 dnl Show which vclplugs will be built.
11712 dnl ===================================================================
11715 libo_ENABLE_VCLPLUG([gen])
11716 libo_ENABLE_VCLPLUG([gtk3])
11717 libo_ENABLE_VCLPLUG([gtk3_kde5])
11718 libo_ENABLE_VCLPLUG([gtk4])
11719 libo_ENABLE_VCLPLUG([kf5])
11720 libo_ENABLE_VCLPLUG([qt5])
11721 libo_ENABLE_VCLPLUG([qt6])
11723 if test "$_os" = "WINNT"; then
11725 elif test "$_os" = "Darwin"; then
11727 elif test "$_os" = "iOS"; then
11729 elif test "$_os" = Android; then
11733 build_vcl_plugins="$R"
11734 if test -z "$build_vcl_plugins"; then
11735 build_vcl_plugins=" none"
11737 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11739 AC_SUBST([VCL_PLUGIN_INFO])
11741 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11742 AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11745 dnl ===================================================================
11746 dnl Check for GTK libraries
11747 dnl ===================================================================
11751 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11752 if test "$with_system_cairo" = no; then
11753 add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11755 : ${with_system_cairo:=yes}
11756 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)
11757 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11758 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11759 FilterLibs "${GTK3_LIBS}"
11760 GTK3_LIBS="${filteredlibs}"
11762 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11763 if test "$with_system_epoxy" != "yes"; then
11764 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11765 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11766 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11769 AC_SUBST(GTK3_LIBS)
11770 AC_SUBST(GTK3_CFLAGS)
11774 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11775 if test "$with_system_cairo" = no; then
11776 add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11778 : ${with_system_cairo:=yes}
11779 PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11780 GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11781 GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11782 FilterLibs "${GTK4_LIBS}"
11783 GTK4_LIBS="${filteredlibs}"
11785 dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11786 if test "$with_system_epoxy" != "yes"; then
11787 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11788 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11789 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11792 AC_SUBST(GTK4_LIBS)
11793 AC_SUBST(GTK4_CFLAGS)
11795 if test "$enable_introspection" = yes; then
11796 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11797 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11799 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11803 dnl ===================================================================
11804 dnl check for dbus support
11805 dnl ===================================================================
11809 DBUS_GLIB_CFLAGS=""
11813 if test "$enable_dbus" = "no"; then
11817 AC_MSG_CHECKING([whether to enable DBUS support])
11818 if test "$test_dbus" = "yes"; then
11820 AC_MSG_RESULT([yes])
11821 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11822 AC_DEFINE(ENABLE_DBUS)
11823 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11824 FilterLibs "${DBUS_LIBS}"
11825 DBUS_LIBS="${filteredlibs}"
11827 # Glib is needed for BluetoothServer
11828 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11829 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11831 DBUS_HAVE_GLIB="TRUE"
11832 AC_DEFINE(DBUS_HAVE_GLIB,1)
11834 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11837 AC_MSG_RESULT([no])
11840 AC_SUBST(ENABLE_DBUS)
11841 AC_SUBST(DBUS_CFLAGS)
11842 AC_SUBST(DBUS_LIBS)
11843 AC_SUBST(DBUS_GLIB_CFLAGS)
11844 AC_SUBST(DBUS_GLIB_LIBS)
11845 AC_SUBST(DBUS_HAVE_GLIB)
11847 AC_MSG_CHECKING([whether to enable Impress remote control])
11848 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11849 AC_MSG_RESULT([yes])
11850 ENABLE_SDREMOTE=TRUE
11851 SDREMOTE_ENTITLEMENT=" <key>com.apple.security.network.server</key>
11853 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11855 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11856 # The Bluetooth code doesn't compile with macOS SDK 10.15
11857 if test "$enable_sdremote_bluetooth" = yes; then
11858 AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11860 add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
11861 enable_sdremote_bluetooth=no
11863 # If not explicitly enabled or disabled, default
11864 if test -z "$enable_sdremote_bluetooth"; then
11867 # Default to yes for these
11868 enable_sdremote_bluetooth=yes
11872 enable_sdremote_bluetooth=no
11876 # $enable_sdremote_bluetooth is guaranteed non-empty now
11878 if test "$enable_sdremote_bluetooth" != "no"; then
11879 if test "$OS" = "LINUX"; then
11880 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11881 AC_MSG_RESULT([yes])
11882 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11883 dnl ===================================================================
11884 dnl Check for system bluez
11885 dnl ===================================================================
11886 AC_MSG_CHECKING([which Bluetooth header to use])
11887 if test "$with_system_bluez" = "yes"; then
11888 AC_MSG_RESULT([external])
11889 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11890 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11893 AC_MSG_RESULT([internal])
11897 AC_MSG_RESULT([no, dbus disabled])
11898 ENABLE_SDREMOTE_BLUETOOTH=
11902 AC_MSG_RESULT([yes])
11903 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11905 SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
11906 <key>com.apple.security.device.bluetooth</key>
11910 AC_MSG_RESULT([no])
11911 ENABLE_SDREMOTE_BLUETOOTH=
11917 AC_MSG_RESULT([no])
11919 AC_SUBST(ENABLE_SDREMOTE)
11920 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11921 AC_SUBST(SDREMOTE_ENTITLEMENT)
11922 AC_SUBST(SYSTEM_BLUEZ)
11924 dnl ===================================================================
11925 dnl Check whether to enable GIO support
11926 dnl ===================================================================
11927 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11928 AC_MSG_CHECKING([whether to enable GIO support])
11929 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11930 dnl Need at least 2.26 for the dbus support.
11931 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11932 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11933 if test "$ENABLE_GIO" = "TRUE"; then
11934 AC_DEFINE(ENABLE_GIO)
11935 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11936 FilterLibs "${GIO_LIBS}"
11937 GIO_LIBS="${filteredlibs}"
11940 AC_MSG_RESULT([no])
11943 AC_SUBST(ENABLE_GIO)
11944 AC_SUBST(GIO_CFLAGS)
11948 dnl ===================================================================
11950 SPLIT_APP_MODULES=""
11951 if test "$enable_split_app_modules" = "yes"; then
11952 SPLIT_APP_MODULES="TRUE"
11954 AC_SUBST(SPLIT_APP_MODULES)
11956 SPLIT_OPT_FEATURES=""
11957 if test "$enable_split_opt_features" = "yes"; then
11958 SPLIT_OPT_FEATURES="TRUE"
11960 AC_SUBST(SPLIT_OPT_FEATURES)
11962 dnl ===================================================================
11963 dnl Check whether the GStreamer libraries are available.
11964 dnl ===================================================================
11966 ENABLE_GSTREAMER_1_0=""
11968 if test "$test_gstreamer_1_0" = yes; then
11970 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11971 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11972 ENABLE_GSTREAMER_1_0="TRUE"
11973 AC_MSG_RESULT([yes])
11974 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11975 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11976 FilterLibs "${GSTREAMER_1_0_LIBS}"
11977 GSTREAMER_1_0_LIBS="${filteredlibs}"
11978 AC_DEFINE(ENABLE_GSTREAMER_1_0)
11980 AC_MSG_RESULT([no])
11983 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11984 AC_SUBST(GSTREAMER_1_0_LIBS)
11985 AC_SUBST(ENABLE_GSTREAMER_1_0)
11987 ENABLE_OPENGL_TRANSITIONS=
11988 ENABLE_OPENGL_CANVAS=
11989 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11991 elif test "$_os" = "Darwin"; then
11992 # We use frameworks on macOS, no need for detail checks
11993 ENABLE_OPENGL_TRANSITIONS=TRUE
11994 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11995 ENABLE_OPENGL_CANVAS=TRUE
11996 elif test $_os = WINNT; then
11997 ENABLE_OPENGL_TRANSITIONS=TRUE
11998 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11999 ENABLE_OPENGL_CANVAS=TRUE
12001 if test "$USING_X11" = TRUE; then
12002 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
12003 ENABLE_OPENGL_TRANSITIONS=TRUE
12004 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12005 ENABLE_OPENGL_CANVAS=TRUE
12009 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
12010 AC_SUBST(ENABLE_OPENGL_CANVAS)
12012 dnl =================================================
12013 dnl Check whether to build with OpenCL support.
12014 dnl =================================================
12016 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
12017 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
12018 # platform (optional at run-time, used through clew).
12019 BUILD_TYPE="$BUILD_TYPE OPENCL"
12020 AC_DEFINE(HAVE_FEATURE_OPENCL)
12023 dnl =================================================
12024 dnl Check whether to build with dconf support.
12025 dnl =================================================
12027 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
12028 PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
12029 if test "$enable_dconf" = yes; then
12030 AC_MSG_ERROR([dconf not found])
12035 AC_MSG_CHECKING([whether to enable dconf])
12036 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12040 AC_MSG_RESULT([no])
12043 AC_DEFINE(ENABLE_DCONF)
12044 AC_MSG_RESULT([yes])
12046 AC_SUBST([DCONF_CFLAGS])
12047 AC_SUBST([DCONF_LIBS])
12048 AC_SUBST([ENABLE_DCONF])
12051 AC_MSG_CHECKING([whether to build the PDF import feature])
12053 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12054 AC_MSG_RESULT([yes])
12055 ENABLE_PDFIMPORT=TRUE
12056 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12058 AC_MSG_RESULT([no])
12062 AC_MSG_CHECKING([whether to build PDFium])
12064 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12065 AC_MSG_RESULT([yes])
12067 BUILD_TYPE="$BUILD_TYPE PDFIUM"
12069 AC_MSG_RESULT([no])
12071 AC_SUBST(ENABLE_PDFIUM)
12073 if test "$ENABLE_PDFIUM" = "TRUE"; then
12074 AC_MSG_CHECKING([which OpenJPEG library to use])
12075 if test "$with_system_openjpeg" = "yes"; then
12076 SYSTEM_OPENJPEG2=TRUE
12077 AC_MSG_RESULT([external])
12078 PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12079 OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12080 FilterLibs "${OPENJPEG2_LIBS}"
12081 OPENJPEG2_LIBS="${filteredlibs}"
12083 SYSTEM_OPENJPEG2=FALSE
12084 AC_MSG_RESULT([internal])
12087 AC_MSG_CHECKING([which Abseil library to use])
12088 if test "$with_system_abseil" = "yes"; then
12089 AC_MSG_RESULT([external])
12091 AC_LANG_PUSH([C++])
12092 AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12093 [AC_MSG_ERROR(abseil headers not found.)], [])
12094 AC_CHECK_HEADER(absl/types/bad_variant_access.h, [],
12095 [AC_MSG_ERROR(abseil headers not found.)], [])
12096 AC_CHECK_LIB([absl_bad_optional_access], [main], [],
12097 [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12098 AC_CHECK_LIB([absl_bad_variant_access], [main], [],
12099 [AC_MSG_ERROR([libabsl_bad_variant_access library not found.])])
12100 ABSEIL_LIBS="-labsl_bad_optional_access -labsl_bad_variant_access"
12102 ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12103 FilterLibs "${ABSEIL_LIBS}"
12104 ABSEIL_LIBS="${filteredlibs}"
12106 AC_MSG_RESULT([internal])
12109 AC_SUBST(SYSTEM_OPENJPEG2)
12110 AC_SUBST(SYSTEM_ABSEIL)
12111 AC_SUBST(ABSEIL_CFLAGS)
12112 AC_SUBST(ABSEIL_LIBS)
12114 dnl ===================================================================
12115 dnl Check for poppler
12116 dnl ===================================================================
12118 AC_MSG_CHECKING([whether to build Poppler])
12119 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12120 AC_MSG_RESULT([yes])
12121 ENABLE_POPPLER=TRUE
12122 AC_DEFINE(HAVE_FEATURE_POPPLER)
12124 AC_MSG_RESULT([no])
12126 AC_SUBST(ENABLE_POPPLER)
12128 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12129 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12132 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12133 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12136 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12137 dnl ===================================================================
12138 dnl Check for system poppler
12139 dnl ===================================================================
12140 AC_MSG_CHECKING([which PDF import poppler to use])
12141 if test "$with_system_poppler" = "yes"; then
12142 AC_MSG_RESULT([external])
12143 SYSTEM_POPPLER=TRUE
12144 PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12145 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12146 FilterLibs "${POPPLER_LIBS}"
12147 POPPLER_LIBS="${filteredlibs}"
12149 AC_MSG_RESULT([internal])
12151 BUILD_TYPE="$BUILD_TYPE POPPLER"
12153 AC_DEFINE([ENABLE_PDFIMPORT],1)
12155 AC_SUBST(ENABLE_PDFIMPORT)
12156 AC_SUBST(SYSTEM_POPPLER)
12157 AC_SUBST(POPPLER_CFLAGS)
12158 AC_SUBST(POPPLER_LIBS)
12162 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12163 # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12164 if test "$SYSTEM_FREETYPE" = TRUE; then
12165 PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12166 [skia_freetype_ok=yes],
12167 [skia_freetype_ok=no])
12168 else # internal is ok
12169 skia_freetype_ok=yes
12171 AC_MSG_CHECKING([whether to build Skia])
12172 if test "$skia_freetype_ok" = "yes"; then
12173 if test "$enable_skia" = "debug"; then
12174 AC_MSG_RESULT([yes (debug)])
12175 ENABLE_SKIA_DEBUG=TRUE
12177 AC_MSG_RESULT([yes])
12181 if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12182 AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12185 AC_DEFINE(HAVE_FEATURE_SKIA)
12186 BUILD_TYPE="$BUILD_TYPE SKIA"
12188 if test "$OS" = "MACOSX"; then
12189 AC_DEFINE(SK_SUPPORT_GPU,1)
12190 AC_DEFINE(SK_METAL,1)
12194 AC_DEFINE(SK_SUPPORT_GPU,1)
12195 AC_DEFINE(SK_VULKAN,1)
12200 if test -n "$MAC_OS_X_VERSION_MIN_REQUIRED" && test "$MAC_OS_X_VERSION_MIN_REQUIRED" -lt "101200"; then
12201 SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX=1
12202 AC_SUBST(SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX)
12205 AC_MSG_RESULT([no (freetype too old)])
12206 add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12210 AC_MSG_CHECKING([whether to build Skia])
12211 AC_MSG_RESULT([no])
12213 AC_SUBST(ENABLE_SKIA)
12214 AC_SUBST(ENABLE_SKIA_DEBUG)
12216 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12217 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12218 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12219 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12220 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12221 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12222 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12223 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12224 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12225 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12226 HAVE_LO_CLANG_DLLEXPORTINLINES=
12228 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12229 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12230 AC_MSG_CHECKING([for Clang])
12231 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12233 if test "$_os" = "WINNT"; then
12234 AC_MSG_CHECKING([for clang-cl])
12235 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12236 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12237 elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12238 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12239 elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12240 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12242 if test -n "$LO_CLANG_CC"; then
12243 dnl explicitly set -m32/-m64
12244 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12245 LO_CLANG_CXX="$LO_CLANG_CC"
12246 AC_MSG_RESULT([$LO_CLANG_CC])
12248 AC_MSG_RESULT([no])
12251 AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12252 echo "#include <stdlib.h>" > conftest.c
12253 LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12254 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12255 rm -f conftest.c conftest.obj
12256 if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12257 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12259 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12262 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12263 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12266 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12267 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12268 clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12269 if test "$clang2_ver" -lt 50002; then
12270 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12275 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12277 CXX="$LO_CLANG_CXX"
12278 AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12279 AC_LANG_PUSH([C++])
12280 save_CXXFLAGS=$CXXFLAGS
12281 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12282 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12283 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12284 AC_MSG_RESULT([yes])
12285 ], [AC_MSG_RESULT([no])])
12286 CXXFLAGS=$save_CXXFLAGS
12289 if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12290 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.])
12293 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12294 # Skia is the default on Windows and Mac, so hard-require Clang.
12295 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12296 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12297 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12299 AC_MSG_WARN([Clang compiler not found.])
12304 CXX="$LO_CLANG_CXX"
12305 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12308 flag_sse41=-msse4.1
12309 flag_sse42=-msse4.2
12312 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12313 flag_avx512f=-mavx512f
12317 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12318 AC_LANG_PUSH([C++])
12319 save_CXXFLAGS=$CXXFLAGS
12320 CXXFLAGS="$CXXFLAGS $flag_sse2"
12321 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12322 #include <emmintrin.h>
12324 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12325 c = _mm_xor_si128 (a, b);
12329 [can_compile_sse2=yes],
12330 [can_compile_sse2=no])
12332 CXXFLAGS=$save_CXXFLAGS
12333 AC_MSG_RESULT([${can_compile_sse2}])
12334 if test "${can_compile_sse2}" = "yes" ; then
12335 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12338 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12339 AC_LANG_PUSH([C++])
12340 save_CXXFLAGS=$CXXFLAGS
12341 CXXFLAGS="$CXXFLAGS $flag_ssse3"
12342 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12343 #include <tmmintrin.h>
12345 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12346 c = _mm_maddubs_epi16 (a, b);
12350 [can_compile_ssse3=yes],
12351 [can_compile_ssse3=no])
12353 CXXFLAGS=$save_CXXFLAGS
12354 AC_MSG_RESULT([${can_compile_ssse3}])
12355 if test "${can_compile_ssse3}" = "yes" ; then
12356 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12359 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12360 AC_LANG_PUSH([C++])
12361 save_CXXFLAGS=$CXXFLAGS
12362 CXXFLAGS="$CXXFLAGS $flag_sse41"
12363 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12364 #include <smmintrin.h>
12366 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12367 c = _mm_cmpeq_epi64 (a, b);
12371 [can_compile_sse41=yes],
12372 [can_compile_sse41=no])
12374 CXXFLAGS=$save_CXXFLAGS
12375 AC_MSG_RESULT([${can_compile_sse41}])
12376 if test "${can_compile_sse41}" = "yes" ; then
12377 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12380 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12381 AC_LANG_PUSH([C++])
12382 save_CXXFLAGS=$CXXFLAGS
12383 CXXFLAGS="$CXXFLAGS $flag_sse42"
12384 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12385 #include <nmmintrin.h>
12387 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12388 c = _mm_cmpgt_epi64 (a, b);
12392 [can_compile_sse42=yes],
12393 [can_compile_sse42=no])
12395 CXXFLAGS=$save_CXXFLAGS
12396 AC_MSG_RESULT([${can_compile_sse42}])
12397 if test "${can_compile_sse42}" = "yes" ; then
12398 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12401 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12402 AC_LANG_PUSH([C++])
12403 save_CXXFLAGS=$CXXFLAGS
12404 CXXFLAGS="$CXXFLAGS $flag_avx"
12405 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12406 #include <immintrin.h>
12408 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12409 c = _mm256_xor_ps(a, b);
12413 [can_compile_avx=yes],
12414 [can_compile_avx=no])
12416 CXXFLAGS=$save_CXXFLAGS
12417 AC_MSG_RESULT([${can_compile_avx}])
12418 if test "${can_compile_avx}" = "yes" ; then
12419 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12422 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12423 AC_LANG_PUSH([C++])
12424 save_CXXFLAGS=$CXXFLAGS
12425 CXXFLAGS="$CXXFLAGS $flag_avx2"
12426 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12427 #include <immintrin.h>
12429 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12430 c = _mm256_maddubs_epi16(a, b);
12434 [can_compile_avx2=yes],
12435 [can_compile_avx2=no])
12437 CXXFLAGS=$save_CXXFLAGS
12438 AC_MSG_RESULT([${can_compile_avx2}])
12439 if test "${can_compile_avx2}" = "yes" ; then
12440 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12443 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12444 AC_LANG_PUSH([C++])
12445 save_CXXFLAGS=$CXXFLAGS
12446 CXXFLAGS="$CXXFLAGS $flag_avx512"
12447 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12448 #include <immintrin.h>
12450 __m512i a = _mm512_loadu_si512(0);
12451 __m512d v1 = _mm512_load_pd(0);
12452 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12453 __m512d v2 = _mm512_abs_pd(v1);
12457 [can_compile_avx512=yes],
12458 [can_compile_avx512=no])
12460 CXXFLAGS=$save_CXXFLAGS
12461 AC_MSG_RESULT([${can_compile_avx512}])
12462 if test "${can_compile_avx512}" = "yes" ; then
12463 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12464 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12467 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12468 AC_LANG_PUSH([C++])
12469 save_CXXFLAGS=$CXXFLAGS
12470 CXXFLAGS="$CXXFLAGS $flag_f16c"
12471 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12472 #include <immintrin.h>
12474 __m128i a = _mm_set1_epi32 (0);
12476 c = _mm_cvtph_ps(a);
12480 [can_compile_f16c=yes],
12481 [can_compile_f16c=no])
12483 CXXFLAGS=$save_CXXFLAGS
12484 AC_MSG_RESULT([${can_compile_f16c}])
12485 if test "${can_compile_f16c}" = "yes" ; then
12486 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12489 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12490 AC_LANG_PUSH([C++])
12491 save_CXXFLAGS=$CXXFLAGS
12492 CXXFLAGS="$CXXFLAGS $flag_fma"
12493 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12494 #include <immintrin.h>
12496 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12497 d = _mm256_fmadd_ps(a, b, c);
12501 [can_compile_fma=yes],
12502 [can_compile_fma=no])
12504 CXXFLAGS=$save_CXXFLAGS
12505 AC_MSG_RESULT([${can_compile_fma}])
12506 if test "${can_compile_fma}" = "yes" ; then
12507 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12514 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12516 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12517 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12521 save_CFLAGS=$CFLAGS
12522 CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12523 dnl an empty program will do, we're checking the compiler flags
12524 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12525 [use_ccache=yes], [use_ccache=no])
12526 CFLAGS=$save_CFLAGS
12528 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12529 AC_MSG_RESULT([yes])
12531 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12532 AC_MSG_RESULT([no])
12536 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12537 AC_LANG_PUSH([C++])
12539 CXX="$LO_CLANG_CXX"
12540 save_CXXFLAGS=$CXXFLAGS
12541 CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12542 dnl an empty program will do, we're checking the compiler flags
12543 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12544 [use_ccache=yes], [use_ccache=no])
12545 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12546 AC_MSG_RESULT([yes])
12548 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12549 AC_MSG_RESULT([no])
12551 CXXFLAGS=$save_CXXFLAGS
12556 AC_SUBST(LO_CLANG_CC)
12557 AC_SUBST(LO_CLANG_CXX)
12558 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12559 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12560 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12561 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12562 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12563 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12564 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12565 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12566 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12567 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12568 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12569 AC_SUBST(CLANG_USE_LD)
12570 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12574 AC_MSG_CHECKING([whether to enable gpgmepp])
12575 if test "$enable_gpgmepp" = no; then
12576 AC_MSG_RESULT([no])
12577 elif test "$enable_mpl_subset" = "yes"; then
12578 AC_MSG_RESULT([no (MPL only])
12579 elif test "$enable_fuzzers" = "yes"; then
12580 AC_MSG_RESULT([no (oss-fuzz)])
12581 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12582 AC_MSG_RESULT([yes])
12583 dnl ===================================================================
12584 dnl Check for system gpgme
12585 dnl ===================================================================
12586 AC_MSG_CHECKING([which gpgmepp to use])
12587 if test "$with_system_gpgmepp" = "yes"; then
12588 AC_MSG_RESULT([external])
12589 SYSTEM_GPGMEPP=TRUE
12591 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12592 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12593 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12594 AC_CHECK_HEADER(gpgme.h, [],
12595 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12596 AC_CHECK_LIB(gpgmepp, main, [],
12597 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12598 GPGMEPP_LIBS=-lgpgmepp
12600 AC_MSG_RESULT([internal])
12601 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12603 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12604 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12605 if test "$_os" != "WINNT"; then
12606 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12607 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12610 ENABLE_GPGMEPP=TRUE
12611 AC_DEFINE([HAVE_FEATURE_GPGME])
12612 AC_PATH_PROG(GPG, gpg)
12613 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12614 # so let's exclude that manually for the moment
12615 if test -n "$GPG" -a "$_os" != "WINNT"; then
12616 # make sure we not only have a working gpgme, but a full working
12617 # gpg installation to run OpenPGP signature verification
12618 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12620 if test "$_os" = "Linux"; then
12622 AC_MSG_CHECKING([for /run/user/$uid])
12623 if test -d /run/user/$uid; then
12624 AC_MSG_RESULT([yes])
12625 AC_PATH_PROG(GPGCONF, gpgconf)
12627 # Older versions of gpgconf are not working as expected, since
12628 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12629 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12630 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12631 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12632 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12633 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12634 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12635 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12636 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12637 if $GPGCONF --dump-options > /dev/null ; then
12638 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12639 AC_MSG_RESULT([yes])
12640 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12641 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12643 AC_MSG_RESULT([no])
12646 AC_MSG_RESULT([no. missing or broken gpgconf?])
12649 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12652 AC_MSG_RESULT([no])
12656 AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12658 AC_SUBST(ENABLE_GPGMEPP)
12659 AC_SUBST(SYSTEM_GPGMEPP)
12660 AC_SUBST(GPG_ERROR_CFLAGS)
12661 AC_SUBST(GPG_ERROR_LIBS)
12662 AC_SUBST(LIBASSUAN_CFLAGS)
12663 AC_SUBST(LIBASSUAN_LIBS)
12664 AC_SUBST(GPGMEPP_CFLAGS)
12665 AC_SUBST(GPGMEPP_LIBS)
12667 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12668 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12669 AC_MSG_RESULT([yes])
12670 ENABLE_MEDIAWIKI=TRUE
12671 BUILD_TYPE="$BUILD_TYPE XSLTML"
12672 if test "x$with_java" = "xno"; then
12673 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12676 AC_MSG_RESULT([no])
12678 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12680 AC_SUBST(ENABLE_MEDIAWIKI)
12682 AC_MSG_CHECKING([whether to build the Report Builder])
12683 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12684 AC_MSG_RESULT([yes])
12685 ENABLE_REPORTBUILDER=TRUE
12686 AC_MSG_CHECKING([which jfreereport libs to use])
12687 if test "$with_system_jfreereport" = "yes"; then
12688 SYSTEM_JFREEREPORT=TRUE
12689 AC_MSG_RESULT([external])
12690 if test -z $SAC_JAR; then
12691 SAC_JAR=/usr/share/java/sac.jar
12693 if ! test -f $SAC_JAR; then
12694 AC_MSG_ERROR(sac.jar not found.)
12697 if test -z $LIBXML_JAR; then
12698 if test -f /usr/share/java/libxml-1.0.0.jar; then
12699 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12700 elif test -f /usr/share/java/libxml.jar; then
12701 LIBXML_JAR=/usr/share/java/libxml.jar
12703 AC_MSG_ERROR(libxml.jar replacement not found.)
12705 elif ! test -f $LIBXML_JAR; then
12706 AC_MSG_ERROR(libxml.jar not found.)
12709 if test -z $FLUTE_JAR; then
12710 if test -f /usr/share/java/flute-1.3.0.jar; then
12711 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12712 elif test -f /usr/share/java/flute.jar; then
12713 FLUTE_JAR=/usr/share/java/flute.jar
12715 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12717 elif ! test -f $FLUTE_JAR; then
12718 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12721 if test -z $JFREEREPORT_JAR; then
12722 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12723 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12724 elif test -f /usr/share/java/flow-engine.jar; then
12725 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12727 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12729 elif ! test -f $JFREEREPORT_JAR; then
12730 AC_MSG_ERROR(jfreereport.jar not found.)
12733 if test -z $LIBLAYOUT_JAR; then
12734 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12735 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12736 elif test -f /usr/share/java/liblayout.jar; then
12737 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12739 AC_MSG_ERROR(liblayout.jar replacement not found.)
12741 elif ! test -f $LIBLAYOUT_JAR; then
12742 AC_MSG_ERROR(liblayout.jar not found.)
12745 if test -z $LIBLOADER_JAR; then
12746 if test -f /usr/share/java/libloader-1.0.0.jar; then
12747 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12748 elif test -f /usr/share/java/libloader.jar; then
12749 LIBLOADER_JAR=/usr/share/java/libloader.jar
12751 AC_MSG_ERROR(libloader.jar replacement not found.)
12753 elif ! test -f $LIBLOADER_JAR; then
12754 AC_MSG_ERROR(libloader.jar not found.)
12757 if test -z $LIBFORMULA_JAR; then
12758 if test -f /usr/share/java/libformula-0.2.0.jar; then
12759 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12760 elif test -f /usr/share/java/libformula.jar; then
12761 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12763 AC_MSG_ERROR(libformula.jar replacement not found.)
12765 elif ! test -f $LIBFORMULA_JAR; then
12766 AC_MSG_ERROR(libformula.jar not found.)
12769 if test -z $LIBREPOSITORY_JAR; then
12770 if test -f /usr/share/java/librepository-1.0.0.jar; then
12771 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12772 elif test -f /usr/share/java/librepository.jar; then
12773 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12775 AC_MSG_ERROR(librepository.jar replacement not found.)
12777 elif ! test -f $LIBREPOSITORY_JAR; then
12778 AC_MSG_ERROR(librepository.jar not found.)
12781 if test -z $LIBFONTS_JAR; then
12782 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12783 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12784 elif test -f /usr/share/java/libfonts.jar; then
12785 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12787 AC_MSG_ERROR(libfonts.jar replacement not found.)
12789 elif ! test -f $LIBFONTS_JAR; then
12790 AC_MSG_ERROR(libfonts.jar not found.)
12793 if test -z $LIBSERIALIZER_JAR; then
12794 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12795 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12796 elif test -f /usr/share/java/libserializer.jar; then
12797 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12799 AC_MSG_ERROR(libserializer.jar replacement not found.)
12801 elif ! test -f $LIBSERIALIZER_JAR; then
12802 AC_MSG_ERROR(libserializer.jar not found.)
12805 if test -z $LIBBASE_JAR; then
12806 if test -f /usr/share/java/libbase-1.0.0.jar; then
12807 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12808 elif test -f /usr/share/java/libbase.jar; then
12809 LIBBASE_JAR=/usr/share/java/libbase.jar
12811 AC_MSG_ERROR(libbase.jar replacement not found.)
12813 elif ! test -f $LIBBASE_JAR; then
12814 AC_MSG_ERROR(libbase.jar not found.)
12818 AC_MSG_RESULT([internal])
12819 SYSTEM_JFREEREPORT=
12820 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12824 AC_MSG_RESULT([no])
12825 ENABLE_REPORTBUILDER=
12826 SYSTEM_JFREEREPORT=
12828 AC_SUBST(ENABLE_REPORTBUILDER)
12829 AC_SUBST(SYSTEM_JFREEREPORT)
12831 AC_SUBST(LIBXML_JAR)
12832 AC_SUBST(FLUTE_JAR)
12833 AC_SUBST(JFREEREPORT_JAR)
12834 AC_SUBST(LIBBASE_JAR)
12835 AC_SUBST(LIBLAYOUT_JAR)
12836 AC_SUBST(LIBLOADER_JAR)
12837 AC_SUBST(LIBFORMULA_JAR)
12838 AC_SUBST(LIBREPOSITORY_JAR)
12839 AC_SUBST(LIBFONTS_JAR)
12840 AC_SUBST(LIBSERIALIZER_JAR)
12842 # scripting provider for BeanShell?
12843 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12844 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12845 AC_MSG_RESULT([yes])
12846 ENABLE_SCRIPTING_BEANSHELL=TRUE
12848 dnl ===================================================================
12849 dnl Check for system beanshell
12850 dnl ===================================================================
12851 AC_MSG_CHECKING([which beanshell to use])
12852 if test "$with_system_beanshell" = "yes"; then
12853 AC_MSG_RESULT([external])
12855 if test -z $BSH_JAR; then
12856 BSH_JAR=/usr/share/java/bsh.jar
12858 if ! test -f $BSH_JAR; then
12859 AC_MSG_ERROR(bsh.jar not found.)
12862 AC_MSG_RESULT([internal])
12864 BUILD_TYPE="$BUILD_TYPE BSH"
12867 AC_MSG_RESULT([no])
12868 ENABLE_SCRIPTING_BEANSHELL=
12869 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12871 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12872 AC_SUBST(SYSTEM_BSH)
12875 # scripting provider for JavaScript?
12876 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12877 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12878 AC_MSG_RESULT([yes])
12879 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12881 dnl ===================================================================
12882 dnl Check for system rhino
12883 dnl ===================================================================
12884 AC_MSG_CHECKING([which rhino to use])
12885 if test "$with_system_rhino" = "yes"; then
12886 AC_MSG_RESULT([external])
12888 if test -z $RHINO_JAR; then
12889 RHINO_JAR=/usr/share/java/js.jar
12891 if ! test -f $RHINO_JAR; then
12892 AC_MSG_ERROR(js.jar not found.)
12895 AC_MSG_RESULT([internal])
12897 BUILD_TYPE="$BUILD_TYPE RHINO"
12901 AC_MSG_RESULT([no])
12902 ENABLE_SCRIPTING_JAVASCRIPT=
12903 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12905 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12906 AC_SUBST(SYSTEM_RHINO)
12907 AC_SUBST(RHINO_JAR)
12909 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12910 # paths should be added to library search path. So lets put all 64-bit
12913 case "$host_cpu" in
12914 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64)
12915 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12916 supports_multilib="yes"
12923 dnl ===================================================================
12924 dnl QT5 Integration
12925 dnl ===================================================================
12931 QT5_GOBJECT_CFLAGS=""
12932 QT5_GOBJECT_LIBS=""
12933 QT5_HAVE_GOBJECT=""
12934 QT5_PLATFORMS_SRCDIR=""
12935 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12936 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12937 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12939 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12940 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12942 if test -n "$supports_multilib"; then
12943 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12946 qt5_test_include="QtWidgets/qapplication.h"
12947 if test "$_os" = "Emscripten"; then
12948 qt5_test_library="libQt5Widgets.a"
12950 qt5_test_library="libQt5Widgets.so"
12953 dnl Check for qmake5
12954 if test -n "$QT5DIR"; then
12955 AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12957 AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12959 if test "$QMAKE5" = "no"; then
12960 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12962 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12963 if test -z "$qmake5_test_ver"; then
12964 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12966 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12967 qt5_minimal_minor="6"
12968 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12969 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12971 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12975 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12976 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12977 qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12978 QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12980 AC_MSG_CHECKING([for Qt5 headers])
12982 for inc_dir in $qt5_incdirs; do
12983 if test -r "$inc_dir/$qt5_test_include"; then
12984 qt5_incdir="$inc_dir"
12988 AC_MSG_RESULT([$qt5_incdir])
12989 if test "x$qt5_incdir" = "xno"; then
12990 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12992 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12993 AC_LANG_PUSH([C++])
12994 save_CPPFLAGS=$CPPFLAGS
12995 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12996 AC_CHECK_HEADER(QtCore/qconfig.h, [],
12997 [AC_MSG_ERROR(qconfig.h header not found.)], [])
12998 CPPFLAGS=$save_CPPFLAGS
13001 AC_MSG_CHECKING([for Qt5 libraries])
13003 for lib_dir in $qt5_libdirs; do
13004 if test -r "$lib_dir/$qt5_test_library"; then
13005 qt5_libdir="$lib_dir"
13009 AC_MSG_RESULT([$qt5_libdir])
13010 if test "x$qt5_libdir" = "xno"; then
13011 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13014 if test "$_os" = "Emscripten"; then
13015 if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13016 QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13018 if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
13019 AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
13022 EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
13023 if ! test -x "$EMSDK_LLVM_NM"; then
13024 AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
13026 if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
13027 AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
13029 QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
13030 if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
13031 AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
13033 if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
13034 AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
13038 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13039 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13040 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13041 if test "$_os" = "Emscripten"; then
13042 QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
13045 if test "$USING_X11" = TRUE; then
13046 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13047 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
13048 QT5_HAVE_XCB_ICCCM=1
13049 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
13051 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)])
13052 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
13054 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13055 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13057 AC_DEFINE(QT5_USING_X11)
13060 dnl Check for Meta Object Compiler
13062 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13063 if test "$MOC5" = "no"; then
13064 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13065 the root of your Qt installation by exporting QT5DIR before running "configure".])
13068 if test "$test_gstreamer_1_0" = yes; then
13069 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13071 AC_DEFINE(QT5_HAVE_GOBJECT)
13073 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13077 AC_SUBST(QT5_CFLAGS)
13080 AC_SUBST(QT5_GOBJECT_CFLAGS)
13081 AC_SUBST(QT5_GOBJECT_LIBS)
13082 AC_SUBST(QT5_HAVE_GOBJECT)
13083 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13085 dnl ===================================================================
13086 dnl QT6 Integration
13087 dnl ===================================================================
13093 QT6_PLATFORMS_SRCDIR=""
13094 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13096 qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13097 qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13099 if test -n "$supports_multilib"; then
13100 qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13103 qt6_test_include="QtWidgets/qapplication.h"
13104 if test "$_os" = "Emscripten"; then
13105 qt6_test_library="libQt6Widgets.a"
13107 qt6_test_library="libQt6Widgets.so"
13110 dnl Check for qmake6
13111 if test -n "$QT6DIR"; then
13112 AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13114 AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13116 if test "$QMAKE6" = "no"; then
13117 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13119 qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13120 if test -z "$qmake6_test_ver"; then
13121 AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13123 AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13126 qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13127 qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13128 qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13129 QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13131 AC_MSG_CHECKING([for Qt6 headers])
13133 for inc_dir in $qt6_incdirs; do
13134 if test -r "$inc_dir/$qt6_test_include"; then
13135 qt6_incdir="$inc_dir"
13139 AC_MSG_RESULT([$qt6_incdir])
13140 if test "x$qt6_incdir" = "xno"; then
13141 AC_MSG_ERROR([Qt6 headers not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13143 # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13144 AC_LANG_PUSH([C++])
13145 save_CPPFLAGS=$CPPFLAGS
13146 CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13147 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13148 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13149 CPPFLAGS=$save_CPPFLAGS
13152 AC_MSG_CHECKING([for Qt6 libraries])
13154 for lib_dir in $qt6_libdirs; do
13155 if test -r "$lib_dir/$qt6_test_library"; then
13156 qt6_libdir="$lib_dir"
13160 AC_MSG_RESULT([$qt6_libdir])
13161 if test "x$qt6_libdir" = "xno"; then
13162 AC_MSG_ERROR([Qt6 libraries not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13165 if test "$_os" = "Emscripten"; then
13166 if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13167 QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13169 if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13170 AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13174 QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13175 QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13176 QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13177 if test "$_os" = "Emscripten"; then
13178 QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13181 if test "$USING_X11" = TRUE; then
13182 PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13183 QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13184 QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13186 AC_DEFINE(QT6_USING_X11)
13189 dnl Check for Meta Object Compiler
13191 for lib_dir in $qt6_libdirs; do
13192 if test -z "$qt6_libexec_dirs"; then
13193 qt6_libexec_dirs="$lib_dir/libexec"
13195 qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13198 AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$qt6_libexec_dirs:$PATH])
13199 if test "$MOC6" = "no"; then
13200 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13201 the root of your Qt installation by exporting QT6DIR before running "configure".])
13204 AC_SUBST(QT6_CFLAGS)
13207 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13209 dnl ===================================================================
13210 dnl KF5 Integration
13211 dnl ===================================================================
13215 KF5_CONFIG="kf5-config"
13216 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13217 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13219 if test "$OS" = "HAIKU"; then
13220 haiku_arch="`echo $RTL_ARCH | tr X x`"
13221 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13222 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13225 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13226 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13227 if test -n "$supports_multilib"; then
13228 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13231 kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13232 kf5_test_library="libKF5KIOFileWidgets.so"
13233 kf5_libdirs="$qt5_libdir $kf5_libdirs"
13235 dnl kf5 KDE4 support compatibility installed
13236 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13237 if test "$KF5_CONFIG" != "no"; then
13238 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13239 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13242 dnl Check for KF5 headers
13243 AC_MSG_CHECKING([for KF5 headers])
13245 for kf5_check in $kf5_incdirs; do
13246 if test -r "$kf5_check/$kf5_test_include"; then
13247 kf5_incdir="$kf5_check/KF5"
13251 AC_MSG_RESULT([$kf5_incdir])
13252 if test "x$kf5_incdir" = "xno"; then
13253 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13256 dnl Check for KF5 libraries
13257 AC_MSG_CHECKING([for KF5 libraries])
13259 for kf5_check in $kf5_libdirs; do
13260 if test -r "$kf5_check/$kf5_test_library"; then
13261 kf5_libdir="$kf5_check"
13266 AC_MSG_RESULT([$kf5_libdir])
13267 if test "x$kf5_libdir" = "xno"; then
13268 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13271 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"
13272 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13273 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13275 if test "$USING_X11" = TRUE; then
13276 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13279 AC_LANG_PUSH([C++])
13280 save_CXXFLAGS=$CXXFLAGS
13281 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13282 AC_MSG_CHECKING([whether KDE is >= 5.0])
13283 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13284 #include <kcoreaddons_version.h>
13286 int main(int argc, char **argv) {
13287 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13290 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13291 CXXFLAGS=$save_CXXFLAGS
13294 AC_SUBST(KF5_CFLAGS)
13297 dnl ===================================================================
13298 dnl Test whether to include Evolution 2 support
13299 dnl ===================================================================
13300 AC_MSG_CHECKING([whether to enable evolution 2 support])
13301 if test "$enable_evolution2" = yes; then
13302 AC_MSG_RESULT([yes])
13303 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13304 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13305 FilterLibs "${GOBJECT_LIBS}"
13306 GOBJECT_LIBS="${filteredlibs}"
13307 ENABLE_EVOAB2="TRUE"
13309 AC_MSG_RESULT([no])
13311 AC_SUBST(ENABLE_EVOAB2)
13312 AC_SUBST(GOBJECT_CFLAGS)
13313 AC_SUBST(GOBJECT_LIBS)
13315 dnl ===================================================================
13316 dnl Test which themes to include
13317 dnl ===================================================================
13318 AC_MSG_CHECKING([which themes to include])
13319 # if none given use default subset of available themes
13320 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13321 with_theme="breeze breeze_dark breeze_dark_svg breeze_svg colibre colibre_svg colibre_dark colibre_dark_svg elementary elementary_svg karasa_jaga karasa_jaga_svg sifr sifr_svg sifr_dark sifr_dark_svg sukapura sukapura_svg"
13325 if test "x$with_theme" != "xno"; then
13326 for theme in $with_theme; do
13328 breeze|breeze_dark|breeze_dark_svg|breeze_svg|colibre|colibre_svg|colibre_dark|colibre_dark_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg|sifr|sifr_svg|sifr_dark|sifr_dark_svg|sukapura|sukapura_svg) real_theme="$theme" ;;
13329 default) real_theme=colibre ;;
13330 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13332 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13335 AC_MSG_RESULT([$WITH_THEMES])
13336 AC_SUBST([WITH_THEMES])
13337 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13338 for theme in $with_theme; do
13340 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13345 ###############################################################################
13346 # Extensions checking
13347 ###############################################################################
13348 AC_MSG_CHECKING([for extensions integration])
13349 if test "x$enable_extension_integration" != "xno"; then
13350 WITH_EXTENSION_INTEGRATION=TRUE
13351 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13352 AC_MSG_RESULT([yes, use integration])
13354 WITH_EXTENSION_INTEGRATION=
13355 AC_MSG_RESULT([no, do not integrate])
13357 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13359 dnl Should any extra extensions be included?
13360 dnl There are standalone tests for each of these below.
13361 WITH_EXTRA_EXTENSIONS=
13362 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13364 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13365 if test "x$with_java" != "xno"; then
13366 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13369 AC_MSG_CHECKING([whether to build opens___.ttf])
13370 if test "$enable_build_opensymbol" = "yes"; then
13371 AC_MSG_RESULT([yes])
13372 AC_PATH_PROG(FONTFORGE, fontforge)
13373 if test -z "$FONTFORGE"; then
13374 AC_MSG_ERROR([fontforge not installed])
13377 AC_MSG_RESULT([no])
13378 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13380 AC_SUBST(FONTFORGE)
13382 dnl ===================================================================
13383 dnl Test whether to include fonts
13384 dnl ===================================================================
13385 AC_MSG_CHECKING([whether to include third-party fonts])
13386 if test "$with_fonts" != "no"; then
13387 AC_MSG_RESULT([yes])
13389 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13390 AC_DEFINE(HAVE_MORE_FONTS)
13392 AC_MSG_RESULT([no])
13394 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13396 AC_SUBST(WITH_FONTS)
13399 dnl ===================================================================
13400 dnl Test whether to enable online update service
13401 dnl ===================================================================
13402 AC_MSG_CHECKING([whether to enable online update])
13403 ENABLE_ONLINE_UPDATE=
13404 ENABLE_ONLINE_UPDATE_MAR=
13406 if test "$enable_online_update" = ""; then
13407 AC_MSG_RESULT([no])
13409 if test "$enable_online_update" = "mar"; then
13410 AC_MSG_RESULT([yes - MAR-based online update])
13411 ENABLE_ONLINE_UPDATE_MAR="TRUE"
13412 if test "$with_update_config" = ""; then
13413 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13415 UPDATE_CONFIG="$with_update_config"
13416 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13417 elif test "$enable_online_update" = "yes"; then
13418 AC_MSG_RESULT([yes])
13419 ENABLE_ONLINE_UPDATE="TRUE"
13421 AC_MSG_RESULT([no])
13424 AC_SUBST(ENABLE_ONLINE_UPDATE)
13425 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13426 AC_SUBST(UPDATE_CONFIG)
13429 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13430 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13431 if test "x$with_privacy_policy_url" = "xundefined"; then
13432 AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13435 AC_SUBST(PRIVACY_POLICY_URL)
13436 dnl ===================================================================
13437 dnl Test whether we need bzip2
13438 dnl ===================================================================
13440 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13441 AC_MSG_CHECKING([whether to use system bzip2])
13442 if test "$with_system_bzip2" = yes; then
13444 AC_MSG_RESULT([yes])
13445 PKG_CHECK_MODULES(BZIP2, bzip2)
13446 FilterLibs "${BZIP2_LIBS}"
13447 BZIP2_LIBS="${filteredlibs}"
13449 AC_MSG_RESULT([no])
13450 BUILD_TYPE="$BUILD_TYPE BZIP2"
13453 AC_SUBST(SYSTEM_BZIP2)
13454 AC_SUBST(BZIP2_CFLAGS)
13455 AC_SUBST(BZIP2_LIBS)
13457 dnl ===================================================================
13458 dnl Test whether to enable extension update
13459 dnl ===================================================================
13460 AC_MSG_CHECKING([whether to enable extension update])
13461 ENABLE_EXTENSION_UPDATE=
13462 if test "x$enable_extension_update" = "xno"; then
13463 AC_MSG_RESULT([no])
13465 AC_MSG_RESULT([yes])
13466 ENABLE_EXTENSION_UPDATE="TRUE"
13467 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13468 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13470 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13473 dnl ===================================================================
13474 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13475 dnl ===================================================================
13476 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13477 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13478 AC_MSG_RESULT([no])
13481 AC_MSG_RESULT([yes])
13482 ENABLE_SILENT_MSI=TRUE
13483 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13485 AC_SUBST(ENABLE_SILENT_MSI)
13487 AC_MSG_CHECKING([whether and how to use Xinerama])
13488 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13489 if test "$x_libraries" = "default_x_libraries"; then
13490 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13491 if test "x$XINERAMALIB" = x; then
13492 XINERAMALIB="/usr/lib"
13495 XINERAMALIB="$x_libraries"
13497 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13498 # we have both versions, let the user decide but use the dynamic one
13501 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13502 XINERAMA_LINK=dynamic
13504 XINERAMA_LINK=static
13506 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13507 # we have only the dynamic version
13509 XINERAMA_LINK=dynamic
13510 elif test -e "$XINERAMALIB/libXinerama.a"; then
13512 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13514 XINERAMA_LINK=static
13524 if test "$USE_XINERAMA" = "TRUE"; then
13525 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13526 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13527 [AC_MSG_ERROR(Xinerama header not found.)], [])
13528 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13529 if test "x$XEXTLIB" = x; then
13530 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13532 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13533 if test "$_os" = "FreeBSD"; then
13534 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13536 if test "$_os" = "Linux"; then
13537 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13539 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13540 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13542 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13547 AC_MSG_RESULT([no])
13549 AC_SUBST(USE_XINERAMA)
13550 AC_SUBST(XINERAMA_LINK)
13552 dnl ===================================================================
13553 dnl Test whether to build cairo or rely on the system version
13554 dnl ===================================================================
13556 if test "$test_cairo" = "yes"; then
13557 AC_MSG_CHECKING([whether to use the system cairo])
13559 : ${with_system_cairo:=$with_system_libs}
13560 if test "$with_system_cairo" = "yes"; then
13562 AC_MSG_RESULT([yes])
13564 PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
13565 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13566 FilterLibs "${CAIRO_LIBS}"
13567 CAIRO_LIBS="${filteredlibs}"
13569 if test "$test_xrender" = "yes"; then
13570 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13572 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13573 #ifdef PictStandardA8
13577 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13582 AC_MSG_RESULT([no])
13583 BUILD_TYPE="$BUILD_TYPE CAIRO"
13586 if test "$enable_cairo_canvas" != no; then
13587 AC_DEFINE(ENABLE_CAIRO_CANVAS)
13588 ENABLE_CAIRO_CANVAS=TRUE
13592 AC_SUBST(CAIRO_CFLAGS)
13593 AC_SUBST(CAIRO_LIBS)
13594 AC_SUBST(ENABLE_CAIRO_CANVAS)
13595 AC_SUBST(SYSTEM_CAIRO)
13597 dnl ===================================================================
13598 dnl Test whether to use avahi
13599 dnl ===================================================================
13600 if test "$_os" = "WINNT"; then
13601 # Windows uses bundled mDNSResponder
13602 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13603 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13604 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13605 [ENABLE_AVAHI="TRUE"])
13606 AC_DEFINE(HAVE_FEATURE_AVAHI)
13607 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13608 FilterLibs "${AVAHI_LIBS}"
13609 AVAHI_LIBS="${filteredlibs}"
13612 AC_SUBST(ENABLE_AVAHI)
13613 AC_SUBST(AVAHI_CFLAGS)
13614 AC_SUBST(AVAHI_LIBS)
13616 dnl ===================================================================
13617 dnl Test whether to use liblangtag
13618 dnl ===================================================================
13620 AC_MSG_CHECKING([whether to use system liblangtag])
13621 if test "$with_system_liblangtag" = yes; then
13622 SYSTEM_LIBLANGTAG=TRUE
13623 AC_MSG_RESULT([yes])
13624 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13625 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13626 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13627 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13628 FilterLibs "${LIBLANGTAG_LIBS}"
13629 LIBLANGTAG_LIBS="${filteredlibs}"
13632 AC_MSG_RESULT([no])
13633 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13634 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13635 if test "$COM" = "MSC"; then
13636 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13638 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13641 AC_SUBST(SYSTEM_LIBLANGTAG)
13642 AC_SUBST(LIBLANGTAG_CFLAGS)
13643 AC_SUBST(LIBLANGTAG_LIBS)
13645 dnl ===================================================================
13646 dnl Test whether to build libpng or rely on the system version
13647 dnl ===================================================================
13649 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13650 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13651 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13653 dnl ===================================================================
13654 dnl Test whether to build libtiff or rely on the system version
13655 dnl ===================================================================
13657 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13659 dnl ===================================================================
13660 dnl Test whether to build libwebp or rely on the system version
13661 dnl ===================================================================
13663 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13665 dnl ===================================================================
13666 dnl Check for runtime JVM search path
13667 dnl ===================================================================
13668 if test "$ENABLE_JAVA" != ""; then
13669 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13670 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13671 AC_MSG_RESULT([yes])
13672 if ! test -d "$with_jvm_path"; then
13673 AC_MSG_ERROR(["$with_jvm_path" not a directory])
13675 if ! test -d "$with_jvm_path"jvm; then
13676 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13678 JVM_ONE_PATH_CHECK="$with_jvm_path"
13679 AC_SUBST(JVM_ONE_PATH_CHECK)
13681 AC_MSG_RESULT([no])
13685 dnl ===================================================================
13686 dnl Test for the presence of Ant and that it works
13687 dnl ===================================================================
13689 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13690 ANT_HOME=; export ANT_HOME
13691 WITH_ANT_HOME=; export WITH_ANT_HOME
13692 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13693 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13694 if test "$_os" = "WINNT"; then
13695 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13697 with_ant_home="$LODE_HOME/opt/ant"
13699 elif test -x "$LODE_HOME/opt/bin/ant" ; then
13700 with_ant_home="$LODE_HOME/opt/ant"
13703 if test -z "$with_ant_home"; then
13704 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13706 if test "$_os" = "WINNT"; then
13707 # AC_PATH_PROGS needs unix path
13708 with_ant_home=`cygpath -u "$with_ant_home"`
13710 AbsolutePath "$with_ant_home"
13711 with_ant_home=$absolute_path
13712 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13713 WITH_ANT_HOME=$with_ant_home
13714 ANT_HOME=$with_ant_home
13717 if test -z "$ANT"; then
13718 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13720 # resolve relative or absolute symlink
13721 while test -h "$ANT"; do
13723 a_basename=`basename "$ANT"`
13724 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13725 cd "`dirname "$ANT"`"
13726 cd "`dirname "$a_script"`"
13727 ANT="`pwd`"/"`basename "$a_script"`"
13731 AC_MSG_CHECKING([if $ANT works])
13732 mkdir -p conftest.dir
13735 cat > conftest.java << EOF
13736 public class conftest {
13737 int testmethod(int a, int b) {
13743 cat > conftest.xml << EOF
13744 <project name="conftest" default="conftest">
13745 <target name="conftest">
13746 <javac srcdir="." includes="conftest.java">
13752 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13753 if test $? = 0 -a -f ./conftest.class; then
13754 AC_MSG_RESULT([Ant works])
13755 if test -z "$WITH_ANT_HOME"; then
13756 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13757 if test -z "$ANT_HOME"; then
13758 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13761 ANT_HOME="$WITH_ANT_HOME"
13764 echo "configure: Ant test failed" >&5
13765 cat conftest.java >&5
13766 cat conftest.xml >&5
13767 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13770 rm -fr conftest.dir
13772 if test -z "$ANT_HOME"; then
13773 ANT_HOME="NO_ANT_HOME"
13775 PathFormat "$ANT_HOME"
13776 ANT_HOME="$formatted_path"
13778 ANT="$formatted_path"
13781 dnl Checking for ant.jar
13782 if test "$ANT_HOME" != "NO_ANT_HOME"; then
13783 AC_MSG_CHECKING([Ant lib directory])
13784 if test -f $ANT_HOME/lib/ant.jar; then
13785 ANT_LIB="$ANT_HOME/lib"
13787 if test -f $ANT_HOME/ant.jar; then
13788 ANT_LIB="$ANT_HOME"
13790 if test -f /usr/share/java/ant.jar; then
13791 ANT_LIB=/usr/share/java
13793 if test -f /usr/share/ant-core/lib/ant.jar; then
13794 ANT_LIB=/usr/share/ant-core/lib
13796 if test -f $ANT_HOME/lib/ant/ant.jar; then
13797 ANT_LIB="$ANT_HOME/lib/ant"
13799 if test -f /usr/share/lib/ant/ant.jar; then
13800 ANT_LIB=/usr/share/lib/ant
13802 AC_MSG_ERROR([Ant libraries not found!])
13809 PathFormat "$ANT_LIB"
13810 ANT_LIB="$formatted_path"
13811 AC_MSG_RESULT([Ant lib directory found.])
13815 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13817 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13818 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13819 ant_version_major=`echo $ant_version | cut -d. -f1`
13820 ant_version_minor=`echo $ant_version | cut -d. -f2`
13821 echo "configure: ant_version $ant_version " >&5
13822 echo "configure: ant_version_major $ant_version_major " >&5
13823 echo "configure: ant_version_minor $ant_version_minor " >&5
13824 if test "$ant_version_major" -ge "2"; then
13825 AC_MSG_RESULT([yes, $ant_version])
13826 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13827 AC_MSG_RESULT([yes, $ant_version])
13829 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13832 rm -f conftest* core core.* *.core
13840 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13841 AC_MSG_CHECKING([for JUnit 4])
13842 if test "$with_junit" = "yes"; then
13843 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13844 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13845 elif test -e /usr/share/java/junit4.jar; then
13846 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13848 if test -e /usr/share/lib/java/junit.jar; then
13849 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13851 OOO_JUNIT_JAR=/usr/share/java/junit.jar
13855 OOO_JUNIT_JAR=$with_junit
13857 if test "$_os" = "WINNT"; then
13858 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13860 printf 'import org.junit.Before;' > conftest.java
13861 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13862 AC_MSG_RESULT([$OOO_JUNIT_JAR])
13865 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13866 specify its pathname via --with-junit=..., or disable it via --without-junit])
13868 rm -f conftest.class conftest.java
13869 if test $OOO_JUNIT_JAR != ""; then
13870 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13873 AC_MSG_CHECKING([for included Hamcrest])
13874 printf 'import org.hamcrest.BaseDescription;' > conftest.java
13875 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13876 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13878 AC_MSG_RESULT([Not included])
13879 AC_MSG_CHECKING([for standalone hamcrest jar.])
13880 if test "$with_hamcrest" = "yes"; then
13881 if test -e /usr/share/lib/java/hamcrest.jar; then
13882 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13883 elif test -e /usr/share/java/hamcrest/core.jar; then
13884 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13885 elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13886 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13888 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13891 HAMCREST_JAR=$with_hamcrest
13893 if test "$_os" = "WINNT"; then
13894 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13896 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13897 AC_MSG_RESULT([$HAMCREST_JAR])
13899 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),
13900 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13903 rm -f conftest.class conftest.java
13905 AC_SUBST(OOO_JUNIT_JAR)
13906 AC_SUBST(HAMCREST_JAR)
13912 # check for wget and curl
13917 if test "$enable_fetch_external" != "no"; then
13919 CURL=`which curl 2>/dev/null`
13921 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13923 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13924 if test $? -eq 0; then
13930 if test -z "$WGET" -a -z "$CURL"; then
13931 AC_MSG_ERROR([neither wget nor curl found!])
13940 # check for sha256sum
13944 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13945 eval "$i -a 256 --version" > /dev/null 2>&1
13947 if test $ret -eq 0; then
13948 SHA256SUM="$i -a 256"
13953 if test -z "$SHA256SUM"; then
13954 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13955 eval "$i --version" > /dev/null 2>&1
13957 if test $ret -eq 0; then
13964 if test -z "$SHA256SUM"; then
13965 AC_MSG_ERROR([no sha256sum found!])
13968 AC_SUBST(SHA256SUM)
13970 dnl ===================================================================
13971 dnl Dealing with l10n options
13972 dnl ===================================================================
13973 AC_MSG_CHECKING([which languages to be built])
13974 # get list of all languages
13975 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13976 # the sed command does the following:
13977 # + if a line ends with a backslash, append the next line to it
13978 # + adds " on the beginning of the value (after =)
13979 # + adds " at the end of the value
13980 # + removes en-US; we want to put it on the beginning
13981 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13982 [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)]
13983 ALL_LANGS="en-US $completelangiso"
13984 # check the configured localizations
13985 WITH_LANG="$with_lang"
13987 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13988 # (Norwegian is "nb" and "nn".)
13989 if test "$WITH_LANG" = "no"; then
13993 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13994 AC_MSG_RESULT([en-US])
13996 AC_MSG_RESULT([$WITH_LANG])
13997 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13998 if test -z "$MSGFMT"; then
13999 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
14000 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
14001 elif test -x "/opt/lo/bin/msgfmt"; then
14002 MSGFMT="/opt/lo/bin/msgfmt"
14004 AC_CHECK_PROGS(MSGFMT, [msgfmt])
14005 if test -z "$MSGFMT"; then
14006 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
14010 if test -z "$MSGUNIQ"; then
14011 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
14012 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
14013 elif test -x "/opt/lo/bin/msguniq"; then
14014 MSGUNIQ="/opt/lo/bin/msguniq"
14016 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
14017 if test -z "$MSGUNIQ"; then
14018 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
14025 # check that the list is valid
14026 for lang in $WITH_LANG; do
14027 test "$lang" = "ALL" && continue
14028 # need to check for the exact string, so add space before and after the list of all languages
14029 for vl in $ALL_LANGS; do
14030 if test "$vl" = "$lang"; then
14034 if test "$vl" != "$lang"; then
14035 # if you're reading this - you prolly quoted your languages remove the quotes ...
14036 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
14039 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
14040 echo $WITH_LANG | grep -q en-US
14041 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
14043 # list with substituted ALL
14044 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
14045 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
14046 test "$WITH_LANG" = "en-US" && WITH_LANG=
14047 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14048 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14049 ALL_LANGS=`echo $ALL_LANGS qtz`
14051 AC_SUBST(ALL_LANGS)
14052 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14053 AC_SUBST(WITH_LANG)
14054 AC_SUBST(WITH_LANG_LIST)
14055 AC_SUBST(GIT_NEEDED_SUBMODULES)
14057 WITH_POOR_HELP_LOCALIZATIONS=
14058 if test -d "$SRC_ROOT/translations/source"; then
14059 for l in `ls -1 $SRC_ROOT/translations/source`; do
14060 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14061 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14065 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14067 if test -n "$with_locales" -a "$with_locales" != ALL; then
14068 WITH_LOCALES="$with_locales"
14070 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14071 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14072 # config_host/config_locales.h.in
14073 for locale in $WITH_LOCALES; do
14076 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14080 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14083 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14088 AC_DEFINE(WITH_LOCALE_ALL)
14090 AC_SUBST(WITH_LOCALES)
14092 dnl git submodule update --reference
14093 dnl ===================================================================
14094 if test -n "${GIT_REFERENCE_SRC}"; then
14095 for repo in ${GIT_NEEDED_SUBMODULES}; do
14096 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14097 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14101 AC_SUBST(GIT_REFERENCE_SRC)
14103 dnl git submodules linked dirs
14104 dnl ===================================================================
14105 if test -n "${GIT_LINK_SRC}"; then
14106 for repo in ${GIT_NEEDED_SUBMODULES}; do
14107 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14108 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14112 AC_SUBST(GIT_LINK_SRC)
14115 dnl ===================================================================
14116 AC_MSG_CHECKING([for alternative branding images directory])
14117 # initialize mapped arrays
14118 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14119 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14121 if test -z "$with_branding" -o "$with_branding" = "no"; then
14122 AC_MSG_RESULT([none])
14123 DEFAULT_BRAND_IMAGES="$brand_files"
14125 if ! test -d $with_branding ; then
14126 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14128 AC_MSG_RESULT([$with_branding])
14129 CUSTOM_BRAND_DIR="$with_branding"
14130 for lfile in $brand_files
14132 if ! test -f $with_branding/$lfile ; then
14133 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14134 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14136 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14139 check_for_progress="yes"
14142 AC_SUBST([BRAND_INTRO_IMAGES])
14143 AC_SUBST([CUSTOM_BRAND_DIR])
14144 AC_SUBST([CUSTOM_BRAND_IMAGES])
14145 AC_SUBST([DEFAULT_BRAND_IMAGES])
14148 AC_MSG_CHECKING([for 'intro' progress settings])
14152 PROGRESSFRAMECOLOR=
14154 PROGRESSTEXTBASELINE=
14156 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14157 source "$with_branding/progress.conf"
14158 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14160 AC_MSG_RESULT([none])
14163 AC_SUBST(PROGRESSBARCOLOR)
14164 AC_SUBST(PROGRESSSIZE)
14165 AC_SUBST(PROGRESSPOSITION)
14166 AC_SUBST(PROGRESSFRAMECOLOR)
14167 AC_SUBST(PROGRESSTEXTCOLOR)
14168 AC_SUBST(PROGRESSTEXTBASELINE)
14171 dnl ===================================================================
14172 dnl Custom build version
14173 dnl ===================================================================
14174 AC_MSG_CHECKING([for extra build ID])
14175 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14176 EXTRA_BUILDID="$with_extra_buildid"
14178 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14179 if test -n "$EXTRA_BUILDID" ; then
14180 AC_MSG_RESULT([$EXTRA_BUILDID])
14182 AC_MSG_RESULT([not set])
14184 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14187 AC_MSG_CHECKING([for vendor])
14188 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14189 OOO_VENDOR="$USERNAME"
14191 if test -z "$OOO_VENDOR"; then
14195 if test -z "$OOO_VENDOR"; then
14196 OOO_VENDOR="`id -u -n`"
14199 AC_MSG_RESULT([not set, using $OOO_VENDOR])
14201 OOO_VENDOR="$with_vendor"
14202 AC_MSG_RESULT([$OOO_VENDOR])
14204 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14205 AC_SUBST(OOO_VENDOR)
14207 if test "$_os" = "Android" ; then
14208 ANDROID_PACKAGE_NAME=
14209 AC_MSG_CHECKING([for Android package name])
14210 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14211 if test -n "$ENABLE_DEBUG"; then
14212 # Default to the package name that makes ndk-gdb happy.
14213 ANDROID_PACKAGE_NAME="org.libreoffice"
14215 ANDROID_PACKAGE_NAME="org.example.libreoffice"
14218 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14220 ANDROID_PACKAGE_NAME="$with_android_package_name"
14221 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14223 AC_SUBST(ANDROID_PACKAGE_NAME)
14226 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14227 if test "$with_compat_oowrappers" = "yes"; then
14228 WITH_COMPAT_OOWRAPPERS=TRUE
14231 WITH_COMPAT_OOWRAPPERS=
14234 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14236 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14237 AC_MSG_CHECKING([for install dirname])
14238 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14239 INSTALLDIRNAME="$with_install_dirname"
14241 AC_MSG_RESULT([$INSTALLDIRNAME])
14242 AC_SUBST(INSTALLDIRNAME)
14244 AC_MSG_CHECKING([for prefix])
14245 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14246 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14247 PREFIXDIR="$prefix"
14248 AC_MSG_RESULT([$PREFIXDIR])
14249 AC_SUBST(PREFIXDIR)
14251 LIBDIR=[$(eval echo $(eval echo $libdir))]
14254 DATADIR=[$(eval echo $(eval echo $datadir))]
14257 MANDIR=[$(eval echo $(eval echo $mandir))]
14260 DOCDIR=[$(eval echo $(eval echo $docdir))]
14263 BINDIR=[$(eval echo $(eval echo $bindir))]
14266 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14267 AC_SUBST(INSTALLDIR)
14269 TESTINSTALLDIR="${BUILDDIR}/test-install"
14270 AC_SUBST(TESTINSTALLDIR)
14273 # ===================================================================
14274 # OAuth2 id and secrets
14275 # ===================================================================
14277 AC_MSG_CHECKING([for Google Drive client id and secret])
14278 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14279 AC_MSG_RESULT([not set])
14280 GDRIVE_CLIENT_ID="\"\""
14281 GDRIVE_CLIENT_SECRET="\"\""
14283 AC_MSG_RESULT([set])
14284 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14285 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14287 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14288 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14290 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14291 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14292 AC_MSG_RESULT([not set])
14293 ALFRESCO_CLOUD_CLIENT_ID="\"\""
14294 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14296 AC_MSG_RESULT([set])
14297 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14298 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14300 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14301 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14303 AC_MSG_CHECKING([for OneDrive client id and secret])
14304 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14305 AC_MSG_RESULT([not set])
14306 ONEDRIVE_CLIENT_ID="\"\""
14307 ONEDRIVE_CLIENT_SECRET="\"\""
14309 AC_MSG_RESULT([set])
14310 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14311 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14313 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14314 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14317 dnl ===================================================================
14318 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14319 dnl --enable-dependency-tracking configure option
14320 dnl ===================================================================
14321 AC_MSG_CHECKING([whether to enable dependency tracking])
14322 if test "$enable_dependency_tracking" = "no"; then
14324 AC_MSG_RESULT([no])
14326 AC_MSG_RESULT([yes])
14330 dnl ===================================================================
14331 dnl Number of CPUs to use during the build
14332 dnl ===================================================================
14333 AC_MSG_CHECKING([for number of processors to use])
14334 # plain --with-parallelism is just the default
14335 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14336 if test "$with_parallelism" = "no"; then
14339 PARALLELISM=$with_parallelism
14342 if test "$enable_icecream" = "yes"; then
14347 Darwin|FreeBSD|NetBSD|OpenBSD)
14348 PARALLELISM=`sysctl -n hw.ncpu`
14352 PARALLELISM=`getconf _NPROCESSORS_ONLN`
14354 # what else than above does profit here *and* has /proc?
14356 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14360 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14361 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14365 if test $PARALLELISM -eq 0; then
14366 AC_MSG_RESULT([explicit make -j option needed])
14368 AC_MSG_RESULT([$PARALLELISM])
14370 AC_SUBST(PARALLELISM)
14373 # Set up ILIB for MSVC build
14376 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14378 if test -n "$JAVA_HOME"; then
14379 ILIB="$ILIB;$JAVA_HOME/lib"
14382 PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14383 ILIB="$ILIB;$formatted_path"
14384 ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14385 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14386 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14387 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14388 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14389 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14391 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14392 ucrtlibpath_formatted=$formatted_path
14393 ILIB="$ILIB;$ucrtlibpath_formatted"
14394 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14395 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14396 PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14397 ILIB="$ILIB;$formatted_path"
14399 PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14400 ILIB="$ILIB;$formatted_path"
14403 if test "$cross_compiling" != "yes"; then
14404 ILIB_FOR_BUILD="$ILIB"
14408 AC_SUBST(ILIB_FOR_BUILD)
14410 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14411 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14412 dnl from consteval constructor initializing const variable",
14413 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: ‘this’ is not a constant
14414 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14415 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14416 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'",
14417 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14418 dnl constructor in ternary expression (/std:c++latest)", or
14419 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14420 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14421 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14422 dnl && "Ptr must be a pointer to Val type!"' failed.":
14423 AC_LANG_PUSH([C++])
14425 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14426 CXX="env LIB=$ILIB $CXX"
14428 save_CXXFLAGS=$CXXFLAGS
14429 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14430 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14432 consteval S() { i = 1; }
14437 struct S1 { consteval S1(int) {} };
14452 struct S4 { consteval S4() = default; };
14453 void f4(bool b) { b ? S4() : S4(); }
14456 consteval S5() { c = 0; }
14457 char * f() { return &c; }
14463 auto s5 = S5().f();
14465 return (s.i == 1) ? 0 : 1;
14467 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14468 AC_MSG_RESULT([yes])
14469 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14471 CXXFLAGS=$save_CXXFLAGS
14474 # ===================================================================
14475 # Creating bigger shared library to link against
14476 # ===================================================================
14477 AC_MSG_CHECKING([whether to create huge library])
14480 if test $_os = iOS -o $_os = Android; then
14481 # Never any point in mergelibs for these as we build just static
14482 # libraries anyway...
14483 enable_mergelibs=no
14486 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14487 if test $_os != Linux -a $_os != WINNT; then
14488 add_warning "--enable-mergelibs is not tested for this platform"
14491 AC_MSG_RESULT([yes])
14492 AC_DEFINE(ENABLE_MERGELIBS)
14494 AC_MSG_RESULT([no])
14496 AC_SUBST([MERGELIBS])
14498 dnl ===================================================================
14499 dnl icerun is a wrapper that stops us spawning tens of processes
14500 dnl locally - for tools that can't be executed on the compile cluster
14501 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14502 dnl ===================================================================
14503 AC_MSG_CHECKING([whether to use icerun wrapper])
14505 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14506 ICECREAM_RUN=icerun
14507 AC_MSG_RESULT([yes])
14509 AC_MSG_RESULT([no])
14511 AC_SUBST(ICECREAM_RUN)
14513 dnl ===================================================================
14514 dnl Setup the ICECC_VERSION for the build the same way it was set for
14515 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14516 dnl ===================================================================
14517 x_ICECC_VERSION=[\#]
14518 if test -n "$ICECC_VERSION" ; then
14521 AC_SUBST(x_ICECC_VERSION)
14522 AC_SUBST(ICECC_VERSION)
14524 dnl ===================================================================
14526 AC_MSG_CHECKING([MPL subset])
14529 if test "$enable_mpl_subset" = "yes"; then
14531 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14533 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14536 if test "$warn_report" = "true"; then
14537 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14539 if test "x$enable_postgresql_sdbc" != "xno"; then
14540 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14542 if test "$enable_lotuswordpro" = "yes"; then
14543 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14545 if test -n "$ENABLE_POPPLER"; then
14546 if test "x$SYSTEM_POPPLER" = "x"; then
14547 AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14550 # cf. m4/libo_check_extension.m4
14551 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14552 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14554 for theme in $WITH_THEMES; do
14556 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14557 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14562 ENABLE_OPENGL_TRANSITIONS=
14564 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14565 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14569 AC_DEFINE(MPL_HAVE_SUBSET)
14570 AC_MSG_RESULT([only])
14572 AC_MSG_RESULT([no restrictions])
14574 AC_SUBST(MPL_SUBSET)
14576 dnl ===================================================================
14578 AC_MSG_CHECKING([formula logger])
14579 ENABLE_FORMULA_LOGGER=
14581 if test "x$enable_formula_logger" = "xyes"; then
14582 AC_MSG_RESULT([yes])
14583 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14584 ENABLE_FORMULA_LOGGER=TRUE
14585 elif test -n "$ENABLE_DBGUTIL" ; then
14586 AC_MSG_RESULT([yes])
14587 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14588 ENABLE_FORMULA_LOGGER=TRUE
14590 AC_MSG_RESULT([no])
14593 AC_SUBST(ENABLE_FORMULA_LOGGER)
14595 dnl ===================================================================
14596 dnl Checking for active Antivirus software.
14597 dnl ===================================================================
14599 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14600 AC_MSG_CHECKING([for active Antivirus software])
14601 PathFormat "$SRC_ROOT/antivirusDetection.vbs"
14602 ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
14603 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14604 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14605 AC_MSG_RESULT([found])
14606 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14607 echo $EICAR_STRING > $SRC_ROOT/eicar
14608 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14610 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14611 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14613 echo $EICAR_STRING > $BUILDDIR/eicar
14614 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14616 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14617 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14619 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"
14621 AC_MSG_RESULT([not found])
14624 AC_MSG_RESULT([n/a])
14628 dnl ===================================================================
14629 dnl Setting up the environment.
14630 dnl ===================================================================
14631 AC_MSG_NOTICE([setting up the build environment variables...])
14635 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
14636 if test -d "$COMPATH/atlmfc/lib/spectre"; then
14637 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14638 ATL_INCLUDE="$COMPATH/atlmfc/include"
14639 elif test -d "$COMPATH/atlmfc/lib"; then
14640 ATL_LIB="$COMPATH/atlmfc/lib"
14641 ATL_INCLUDE="$COMPATH/atlmfc/include"
14643 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14644 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14646 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14647 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14648 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14651 if test "$build_os" = "cygwin"; then
14652 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14653 PathFormat "/usr/bin/find.exe"
14654 FIND="$formatted_path"
14655 PathFormat "/usr/bin/sort.exe"
14656 SORT="$formatted_path"
14657 PathFormat "/usr/bin/grep.exe"
14658 WIN_GREP="$formatted_path"
14659 PathFormat "/usr/bin/ls.exe"
14660 WIN_LS="$formatted_path"
14661 PathFormat "/usr/bin/touch.exe"
14662 WIN_TOUCH="$formatted_path"
14668 AC_SUBST(ATL_INCLUDE)
14674 AC_SUBST(WIN_TOUCH)
14676 AC_SUBST(BUILD_TYPE)
14681 PERL="$formatted_path"
14684 if test -n "$TMPDIR"; then
14685 TEMP_DIRECTORY="$TMPDIR"
14687 TEMP_DIRECTORY="/tmp"
14689 if test "$build_os" = "cygwin"; then
14690 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14692 AC_SUBST(TEMP_DIRECTORY)
14694 # setup the PATH for the environment
14695 if test -n "$LO_PATH_FOR_BUILD"; then
14696 LO_PATH="$LO_PATH_FOR_BUILD"
14699 pathmunge "$MSVC_HOST_PATH" "before"
14707 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14708 if test "$ENABLE_JAVA" != ""; then
14709 pathmunge "$JAVA_HOME/bin" "after"
14714 # Win32 make needs native paths
14715 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14716 LO_PATH=`cygpath -p -m "$PATH"`
14718 if test "$WIN_BUILD_ARCH" = "x64"; then
14719 # needed for msi packaging
14720 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14722 # .NET 4.6 and higher don't have bin directory
14723 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14724 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14726 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14727 pathmunge "$CSC_PATH" "before"
14728 pathmunge "$MIDL_PATH" "before"
14729 pathmunge "$AL_PATH" "before"
14730 pathmunge "$MSVC_MULTI_PATH" "before"
14731 pathmunge "$MSVC_BUILD_PATH" "before"
14732 if test -n "$MSBUILD_PATH" ; then
14733 pathmunge "$MSBUILD_PATH" "before"
14735 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14736 if test "$ENABLE_JAVA" != ""; then
14737 if test -d "$JAVA_HOME/jre/bin/client"; then
14738 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14740 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14741 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14743 pathmunge "$JAVA_HOME/bin" "before"
14745 pathmunge "$MSVC_HOST_PATH" "before"
14749 pathmunge "/usr/css/bin" "before"
14750 if test "$ENABLE_JAVA" != ""; then
14751 pathmunge "$JAVA_HOME/bin" "after"
14759 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14760 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14761 x_LO_ELFCHECK_ALLOWLIST=
14763 x_LO_ELFCHECK_ALLOWLIST=[\#]
14765 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14766 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14770 # Generate a configuration sha256 we can use for deps
14771 if test -f config_host.mk; then
14772 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14774 if test -f config_host_lang.mk; then
14775 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14778 CFLAGS=$my_original_CFLAGS
14779 CXXFLAGS=$my_original_CXXFLAGS
14780 CPPFLAGS=$my_original_CPPFLAGS
14782 AC_CONFIG_LINKS([include:include])
14784 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14785 # BUILD platform configuration] - otherwise breaks cross building
14786 AC_CONFIG_FILES([config_host.mk
14787 config_host_lang.mk
14790 bin/bffvalidator.sh
14791 bin/odfvalidator.sh
14793 hardened_runtime.xcent
14794 instsetoo_native/util/openoffice.lst
14795 sysui/desktop/macosx/Info.plist
14796 vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
14797 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14798 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14799 AC_CONFIG_HEADERS([config_host/config_clang.h])
14800 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14801 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14802 AC_CONFIG_HEADERS([config_host/config_eot.h])
14803 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14804 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14805 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14806 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14807 AC_CONFIG_HEADERS([config_host/config_features.h])
14808 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14809 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14810 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14811 AC_CONFIG_HEADERS([config_host/config_folders.h])
14812 AC_CONFIG_HEADERS([config_host/config_fonts.h])
14813 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14814 AC_CONFIG_HEADERS([config_host/config_gio.h])
14815 AC_CONFIG_HEADERS([config_host/config_global.h])
14816 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14817 AC_CONFIG_HEADERS([config_host/config_java.h])
14818 AC_CONFIG_HEADERS([config_host/config_langs.h])
14819 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14820 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14821 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14822 AC_CONFIG_HEADERS([config_host/config_locales.h])
14823 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14824 AC_CONFIG_HEADERS([config_host/config_oox.h])
14825 AC_CONFIG_HEADERS([config_host/config_options.h])
14826 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14827 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14828 AC_CONFIG_HEADERS([config_host/config_skia.h])
14829 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14830 AC_CONFIG_HEADERS([config_host/config_validation.h])
14831 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14832 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14833 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14834 AC_CONFIG_HEADERS([config_host/config_version.h])
14835 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14836 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14837 AC_CONFIG_HEADERS([config_host/config_python.h])
14838 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14839 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
14840 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
14843 if test "$CROSS_COMPILING" = TRUE; then
14844 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14847 # touch the config timestamp file
14848 if test ! -f config_host.mk.stamp; then
14849 echo > config_host.mk.stamp
14850 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14851 echo "Host Configuration unchanged - avoiding scp2 stamp update"
14853 echo > config_host.mk.stamp
14856 # touch the config lang timestamp file
14857 if test ! -f config_host_lang.mk.stamp; then
14858 echo > config_host_lang.mk.stamp
14859 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14860 echo "Language Configuration unchanged - avoiding scp2 stamp update"
14862 echo > config_host_lang.mk.stamp
14866 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14867 -a "$build_os" = "cygwin"; then
14870 ****************************************************************************
14872 Your make version is known to be horribly slow, and hard to debug
14873 problems with. To get a reasonably functional make please do:
14875 to install a pre-compiled binary make for Win32
14877 mkdir -p /opt/lo/bin
14879 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14880 cp make-4.2.1-msvc.exe make
14883 to install from source:
14884 place yourself in a working directory of you choice.
14886 git clone git://git.savannah.gnu.org/make.git
14888 [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"]
14889 set PATH=%PATH%;C:\Cygwin\bin
14890 [or Cygwin64, if that is what you have]
14891 cd path-to-make-repo-you-cloned-above
14892 build_w32.bat --without-guile
14894 should result in a WinRel/gnumake.exe.
14895 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14897 Then re-run autogen.sh
14899 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14900 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14903 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14904 AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14910 ****************************************************************************
14912 To show information on various make targets and make flags, run:
14915 To just build, run:
14920 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14922 After the build has finished successfully, you can immediately run what you built using the command:
14925 if test $_os = Darwin; then
14926 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14928 echo instdir/program/soffice
14932 If you want to run the unit tests, run:
14938 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14939 echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14940 cat "$WARNINGS_FILE_FOR_BUILD"
14944 if test -s "$WARNINGS_FILE"; then
14945 echo "HOST config ($WARNINGS_FILE)"
14946 cat "$WARNINGS_FILE"
14949 # Remove unneeded emconfigure artifacts
14950 rm -f a.out a.wasm a.out.js a.out.wasm
14952 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: