mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-01 04:47:31 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
31
build/autoconf/acwinpaths.m4
Normal file
31
build/autoconf/acwinpaths.m4
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
define(GENERATE_SUB_ABS, [
|
||||
define([AC_OUTPUT_FILES_SUB1], [
|
||||
patsubst($@, [/\*)], [/* | ?:/*)])
|
||||
])
|
||||
])
|
||||
GENERATE_SUB_ABS(defn([AC_OUTPUT_FILES]))
|
||||
|
||||
define(GENERATE_SUB_NOSPLIT, [
|
||||
define([AC_OUTPUT_FILES], [
|
||||
patsubst($@, [-e "s%:% \$ac_given_srcdir/%g"], [])
|
||||
])
|
||||
])
|
||||
GENERATE_SUB_NOSPLIT(defn([AC_OUTPUT_FILES_SUB1]))
|
||||
|
||||
define(GENERATE_HEADER_NOSPLIT, [
|
||||
define([AC_OUTPUT_HEADER], [
|
||||
patsubst($@, [-e "s%:% \$ac_given_srcdir/%g"], [])
|
||||
])
|
||||
])
|
||||
GENERATE_HEADER_NOSPLIT(defn([AC_OUTPUT_HEADER]))
|
||||
|
||||
define(GENERATE_SUBDIRS_ABS, [
|
||||
define([AC_OUTPUT_SUBDIRS], [
|
||||
patsubst($@, [/\*)], [/* | ?:/*)])
|
||||
])
|
||||
])
|
||||
GENERATE_SUBDIRS_ABS(defn([AC_OUTPUT_SUBDIRS]))
|
||||
51
build/autoconf/alloc.m4
Normal file
51
build/autoconf/alloc.m4
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
dnl Check for the existence of various allocation headers/functions
|
||||
AC_DEFUN([MOZ_CHECK_ALLOCATOR],[
|
||||
|
||||
MALLOC_HEADERS="malloc.h malloc_np.h malloc/malloc.h sys/malloc.h"
|
||||
MALLOC_H=
|
||||
|
||||
for file in $MALLOC_HEADERS; do
|
||||
MOZ_CHECK_HEADER($file, [MALLOC_H=$file])
|
||||
if test "$MALLOC_H" != ""; then
|
||||
AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
AC_CHECK_FUNCS(strndup posix_memalign memalign)
|
||||
|
||||
AC_CHECK_FUNCS(malloc_usable_size)
|
||||
MALLOC_USABLE_SIZE_CONST_PTR=const
|
||||
if test -n "$HAVE_MALLOC_H"; then
|
||||
AC_MSG_CHECKING([whether malloc_usable_size definition can use const argument])
|
||||
AC_TRY_COMPILE([#include <malloc.h>
|
||||
#include <stddef.h>
|
||||
size_t malloc_usable_size(const void *ptr);],
|
||||
[return malloc_usable_size(0);],
|
||||
AC_MSG_RESULT([yes]),
|
||||
AC_MSG_RESULT([no])
|
||||
MALLOC_USABLE_SIZE_CONST_PTR=)
|
||||
fi
|
||||
AC_DEFINE_UNQUOTED([MALLOC_USABLE_SIZE_CONST_PTR],[$MALLOC_USABLE_SIZE_CONST_PTR])
|
||||
|
||||
|
||||
dnl In newer bionic headers, valloc is built but not defined,
|
||||
dnl so we check more carefully here.
|
||||
AC_MSG_CHECKING([for valloc in malloc.h])
|
||||
AC_EGREP_HEADER(valloc, malloc.h,
|
||||
AC_DEFINE(HAVE_VALLOC)
|
||||
AC_MSG_RESULT([yes]),
|
||||
AC_MSG_RESULT([no]))
|
||||
|
||||
AC_MSG_CHECKING([for valloc in unistd.h])
|
||||
AC_EGREP_HEADER(valloc, unistd.h,
|
||||
AC_DEFINE(HAVE_VALLOC)
|
||||
AC_MSG_RESULT([yes]),
|
||||
AC_MSG_RESULT([no]))
|
||||
|
||||
|
||||
])
|
||||
95
build/autoconf/altoptions.m4
Normal file
95
build/autoconf/altoptions.m4
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
dnl altoptions.m4 - An alternative way of specifying command-line options.
|
||||
dnl These macros are needed to support a menu-based configurator.
|
||||
dnl This file also includes the macro, AM_READ_MYCONFIG, for reading
|
||||
dnl the 'myconfig.m4' file.
|
||||
|
||||
dnl Send comments, improvements, bugs to Steve Lamm (slamm@netscape.com).
|
||||
|
||||
|
||||
dnl MOZ_ARG_ENABLE_BOOL( NAME, HELP, IF-YES [, IF-NO [, ELSE]])
|
||||
dnl MOZ_ARG_DISABLE_BOOL( NAME, HELP, IF-NO [, IF-YES [, ELSE]])
|
||||
dnl MOZ_ARG_ENABLE_STRING( NAME, HELP, IF-SET [, ELSE])
|
||||
dnl MOZ_ARG_ENABLE_BOOL_OR_STRING( NAME, HELP, IF-YES, IF-NO, IF-SET[, ELSE]]])
|
||||
dnl MOZ_ARG_WITH_BOOL( NAME, HELP, IF-YES [, IF-NO [, ELSE])
|
||||
dnl MOZ_ARG_WITHOUT_BOOL( NAME, HELP, IF-NO [, IF-YES [, ELSE])
|
||||
dnl MOZ_ARG_WITH_STRING( NAME, HELP, IF-SET [, ELSE])
|
||||
dnl MOZ_ARG_HEADER(Comment)
|
||||
dnl MOZ_READ_MYCONFIG() - Read in 'myconfig.sh' file
|
||||
|
||||
define([MOZ_DIVERSION_ARGS], 12)
|
||||
|
||||
AC_DEFUN([MOZ_ARG],[dnl
|
||||
AC_DIVERT_PUSH(MOZ_DIVERSION_ARGS)dnl
|
||||
'$1',
|
||||
AC_DIVERT_POP()dnl
|
||||
])
|
||||
AC_DEFUN([MOZ_AC_ARG_ENABLE],[MOZ_ARG([--enable-]translit([$1],[_],[-]))AC_ARG_ENABLE([$1], [$2], [$3], [$4])])
|
||||
AC_DEFUN([MOZ_AC_ARG_WITH],[MOZ_ARG([--with-]translit([$1],[_],[-]))AC_ARG_WITH([$1], [$2], [$3], [$4])])
|
||||
|
||||
dnl MOZ_TWO_STRING_TEST(NAME, VAL, STR1, IF-STR1, STR2, IF-STR2 [, ELSE])
|
||||
AC_DEFUN([MOZ_TWO_STRING_TEST],
|
||||
[if test "[$2]" = "[$3]"; then
|
||||
ifelse([$4], , :, [$4])
|
||||
elif test "[$2]" = "[$5]"; then
|
||||
ifelse([$6], , :, [$6])
|
||||
else
|
||||
ifelse([$7], ,
|
||||
[AC_MSG_ERROR([Option, [$1], does not take an argument ([$2]).])],
|
||||
[$7])
|
||||
fi])
|
||||
|
||||
dnl MOZ_ARG_ENABLE_BOOL(NAME, HELP, IF-YES [, IF-NO [, ELSE]])
|
||||
AC_DEFUN([MOZ_ARG_ENABLE_BOOL],
|
||||
[MOZ_AC_ARG_ENABLE([$1], [$2],
|
||||
[MOZ_TWO_STRING_TEST([$1], [$enableval], yes, [$3], no, [$4])],
|
||||
[$5])])
|
||||
|
||||
dnl MOZ_ARG_DISABLE_BOOL(NAME, HELP, IF-NO [, IF-YES [, ELSE]])
|
||||
AC_DEFUN([MOZ_ARG_DISABLE_BOOL],
|
||||
[MOZ_AC_ARG_ENABLE([$1], [$2],
|
||||
[MOZ_TWO_STRING_TEST([$1], [$enableval], no, [$3], yes, [$4])],
|
||||
[$5])])
|
||||
|
||||
dnl MOZ_ARG_ENABLE_STRING(NAME, HELP, IF-SET [, ELSE])
|
||||
AC_DEFUN([MOZ_ARG_ENABLE_STRING],
|
||||
[MOZ_AC_ARG_ENABLE([$1], [$2], [$3], [$4])])
|
||||
|
||||
dnl MOZ_ARG_ENABLE_BOOL_OR_STRING(NAME, HELP, IF-YES, IF-NO, IF-SET[, ELSE]]])
|
||||
AC_DEFUN([MOZ_ARG_ENABLE_BOOL_OR_STRING],
|
||||
[ifelse([$5], ,
|
||||
[errprint([Option, $1, needs an "IF-SET" argument.
|
||||
])
|
||||
m4exit(1)],
|
||||
[MOZ_AC_ARG_ENABLE([$1], [$2],
|
||||
[MOZ_TWO_STRING_TEST([$1], [$enableval], yes, [$3], no, [$4], [$5])],
|
||||
[$6])])])
|
||||
|
||||
dnl MOZ_ARG_WITH_BOOL(NAME, HELP, IF-YES [, IF-NO [, ELSE])
|
||||
AC_DEFUN([MOZ_ARG_WITH_BOOL],
|
||||
[MOZ_AC_ARG_WITH([$1], [$2],
|
||||
[MOZ_TWO_STRING_TEST([$1], [$withval], yes, [$3], no, [$4])],
|
||||
[$5])])
|
||||
|
||||
dnl MOZ_ARG_WITHOUT_BOOL(NAME, HELP, IF-NO [, IF-YES [, ELSE])
|
||||
AC_DEFUN([MOZ_ARG_WITHOUT_BOOL],
|
||||
[MOZ_AC_ARG_WITH([$1], [$2],
|
||||
[MOZ_TWO_STRING_TEST([$1], [$withval], no, [$3], yes, [$4])],
|
||||
[$5])])
|
||||
|
||||
dnl MOZ_ARG_WITH_STRING(NAME, HELP, IF-SET [, ELSE])
|
||||
AC_DEFUN([MOZ_ARG_WITH_STRING],
|
||||
[MOZ_AC_ARG_WITH([$1], [$2], [$3], [$4])])
|
||||
|
||||
dnl MOZ_ARG_HEADER(Comment)
|
||||
dnl This is used by webconfig to group options
|
||||
define(MOZ_ARG_HEADER, [# $1])
|
||||
|
||||
dnl MOZ_READ_MYCONFIG() - Read in 'myconfig.sh' file
|
||||
AC_DEFUN([MOZ_READ_MOZCONFIG],
|
||||
[AC_REQUIRE([AC_INIT_BINSH])dnl
|
||||
. ./old-configure.vars
|
||||
])
|
||||
376
build/autoconf/android.m4
Normal file
376
build/autoconf/android.m4
Normal file
|
|
@ -0,0 +1,376 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
AC_DEFUN([MOZ_ANDROID_NDK],
|
||||
[
|
||||
|
||||
MOZ_ARG_WITH_STRING(android-cxx-stl,
|
||||
[ --with-android-cxx-stl=VALUE
|
||||
use the specified C++ STL (libstdc++, libc++)],
|
||||
android_cxx_stl=$withval,
|
||||
android_cxx_stl=libc++)
|
||||
|
||||
case "$target" in
|
||||
*-android*|*-linuxandroid*)
|
||||
dnl $android_platform will be set for us by Python configure.
|
||||
CPPFLAGS="-idirafter $android_platform/usr/include $CPPFLAGS"
|
||||
CFLAGS="-fno-short-enums -fno-exceptions $CFLAGS"
|
||||
CXXFLAGS="-fno-short-enums -fno-exceptions $CXXFLAGS"
|
||||
ASFLAGS="-idirafter $android_platform/usr/include -DANDROID $ASFLAGS"
|
||||
|
||||
dnl Add --allow-shlib-undefined, because libGLESv2 links to an
|
||||
dnl undefined symbol (present on the hardware, just not in the
|
||||
dnl NDK.)
|
||||
LDFLAGS="-L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform -Wl,--allow-shlib-undefined $LDFLAGS"
|
||||
dnl Add -llog by default, since we use it all over the place.
|
||||
LIBS="-llog $LIBS"
|
||||
ANDROID_PLATFORM="${android_platform}"
|
||||
|
||||
AC_DEFINE(ANDROID)
|
||||
AC_SUBST(ANDROID_PLATFORM)
|
||||
|
||||
;;
|
||||
esac
|
||||
|
||||
])
|
||||
|
||||
AC_DEFUN([MOZ_ANDROID_CPU_ARCH],
|
||||
[
|
||||
|
||||
if test "$OS_TARGET" = "Android"; then
|
||||
case "${CPU_ARCH}-${MOZ_ARCH}" in
|
||||
arm-armv7*)
|
||||
ANDROID_CPU_ARCH=armeabi-v7a
|
||||
;;
|
||||
arm-*)
|
||||
ANDROID_CPU_ARCH=armeabi
|
||||
;;
|
||||
x86-*)
|
||||
ANDROID_CPU_ARCH=x86
|
||||
;;
|
||||
mips32-*) # When target_cpu is mipsel, CPU_ARCH is mips32
|
||||
ANDROID_CPU_ARCH=mips
|
||||
;;
|
||||
aarch64-*)
|
||||
ANDROID_CPU_ARCH=arm64-v8a
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_SUBST(ANDROID_CPU_ARCH)
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([MOZ_ANDROID_STLPORT],
|
||||
[
|
||||
|
||||
if test "$OS_TARGET" = "Android"; then
|
||||
cpu_arch_dir="$ANDROID_CPU_ARCH"
|
||||
# NDK r12 removed the arm/thumb library split and just made everything
|
||||
# thumb by default. Attempt to compensate.
|
||||
if test "$MOZ_THUMB2" = 1 -a -d "$cpu_arch_dir/thumb"; then
|
||||
cpu_arch_dir="$cpu_arch_dir/thumb"
|
||||
fi
|
||||
|
||||
if test -z "$STLPORT_CPPFLAGS$STLPORT_LIBS"; then
|
||||
case "$android_cxx_stl" in
|
||||
libstdc++)
|
||||
# android-ndk-r8b and later
|
||||
ndk_base="$android_ndk/sources/cxx-stl/gnu-libstdc++/$android_gnu_compiler_version"
|
||||
ndk_libs_include="$ndk_base/libs/$ANDROID_CPU_ARCH"
|
||||
ndk_libs="$ndk_base/libs/$cpu_arch_dir"
|
||||
ndk_include="$ndk_base/include"
|
||||
|
||||
if ! test -e "$ndk_libs/libgnustl_static.a"; then
|
||||
AC_MSG_ERROR([Couldn't find path to gnu-libstdc++ in the android ndk])
|
||||
fi
|
||||
|
||||
STLPORT_LIBS="-L$ndk_libs -lgnustl_static"
|
||||
STLPORT_CPPFLAGS="-I$ndk_include -I$ndk_include/backward -I$ndk_libs_include/include"
|
||||
;;
|
||||
libc++)
|
||||
# android-ndk-r8b and later
|
||||
ndk_base="$android_ndk/sources/cxx-stl"
|
||||
cxx_base="$ndk_base/llvm-libc++"
|
||||
cxx_libs="$cxx_base/libs/$cpu_arch_dir"
|
||||
cxx_include="$cxx_base/libcxx/include"
|
||||
cxxabi_base="$ndk_base/llvm-libc++abi"
|
||||
cxxabi_include="$cxxabi_base/libcxxabi/include"
|
||||
|
||||
if ! test -e "$cxx_libs/libc++_static.a"; then
|
||||
AC_MSG_ERROR([Couldn't find path to llvm-libc++ in the android ndk])
|
||||
fi
|
||||
|
||||
STLPORT_LIBS="-L$cxx_libs -lc++_static"
|
||||
# NDK r12 split the libc++ runtime libraries into pieces.
|
||||
for lib in c++abi unwind android_support; do
|
||||
if test -e "$cxx_libs/lib${lib}.a"; then
|
||||
STLPORT_LIBS="$STLPORT_LIBS -l${lib}"
|
||||
fi
|
||||
done
|
||||
# Add android/support/include/ for prototyping long double math
|
||||
# functions, locale-specific C library functions, multibyte support,
|
||||
# etc.
|
||||
STLPORT_CPPFLAGS="-I$android_ndk/sources/android/support/include -I$cxx_include -I$cxxabi_include"
|
||||
;;
|
||||
*)
|
||||
AC_MSG_ERROR([Bad value for --enable-android-cxx-stl])
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
CXXFLAGS="$CXXFLAGS $STLPORT_CPPFLAGS"
|
||||
fi
|
||||
MOZ_ANDROID_CXX_STL=$android_cxx_stl
|
||||
AC_SUBST([MOZ_ANDROID_CXX_STL])
|
||||
AC_SUBST([STLPORT_LIBS])
|
||||
|
||||
])
|
||||
|
||||
|
||||
AC_DEFUN([concat],[$1$2$3$4])
|
||||
|
||||
dnl Find a component of an AAR.
|
||||
dnl Arg 1: variable name to expose, like ANDROID_SUPPORT_V4_LIB.
|
||||
dnl Arg 2: path to component.
|
||||
dnl Arg 3: if non-empty, expect and require component.
|
||||
AC_DEFUN([MOZ_ANDROID_AAR_COMPONENT], [
|
||||
ifelse([$3], ,
|
||||
[
|
||||
if test -e "$$1" ; then
|
||||
AC_MSG_ERROR([Found unexpected exploded $1!])
|
||||
fi
|
||||
],
|
||||
[
|
||||
AC_MSG_CHECKING([for $1])
|
||||
$1="$2"
|
||||
if ! test -e "$$1" ; then
|
||||
AC_MSG_ERROR([Could not find required exploded $1!])
|
||||
fi
|
||||
AC_MSG_RESULT([$$1])
|
||||
AC_SUBST($1)
|
||||
])
|
||||
])
|
||||
|
||||
dnl Find an AAR and expose variables representing its exploded components.
|
||||
dnl AC_SUBSTs ANDROID_NAME_{AAR,AAR_RES,AAR_LIB,AAR_INTERNAL_LIB}.
|
||||
dnl Arg 1: name, like play-services-base
|
||||
dnl Arg 2: version, like 7.8.0
|
||||
dnl Arg 3: extras subdirectory, either android or google
|
||||
dnl Arg 4: package subdirectory, like com/google/android/gms
|
||||
dnl Arg 5: if non-empty, expect and require internal_impl JAR.
|
||||
dnl Arg 6: if non-empty, expect and require assets/ directory.
|
||||
AC_DEFUN([MOZ_ANDROID_AAR],[
|
||||
define([local_aar_var_base], translit($1, [-a-z], [_A-Z]))
|
||||
define([local_aar_var], concat(ANDROID_, local_aar_var_base, _AAR))
|
||||
local_aar_var="$ANDROID_SDK_ROOT/extras/$3/m2repository/$4/$1/$2/$1-$2.aar"
|
||||
AC_MSG_CHECKING([for $1 AAR])
|
||||
if ! test -e "$local_aar_var" ; then
|
||||
AC_MSG_ERROR([You must download the $1 AAR. Run the Android SDK tool and install the Android and Google Support Repositories under Extras. See https://developer.android.com/tools/extras/support-library.html for more info. (Looked for $local_aar_var)])
|
||||
fi
|
||||
AC_SUBST(local_aar_var)
|
||||
AC_MSG_RESULT([$local_aar_var])
|
||||
|
||||
if ! $PYTHON -m mozbuild.action.explode_aar --destdir=$MOZ_BUILD_ROOT/dist/exploded-aar $local_aar_var ; then
|
||||
AC_MSG_ERROR([Could not explode $local_aar_var!])
|
||||
fi
|
||||
|
||||
define([root], $MOZ_BUILD_ROOT/dist/exploded-aar/$1-$2/)
|
||||
MOZ_ANDROID_AAR_COMPONENT(concat(local_aar_var, _LIB), concat(root, $1-$2-classes.jar), REQUIRED)
|
||||
MOZ_ANDROID_AAR_COMPONENT(concat(local_aar_var, _RES), concat(root, res), REQUIRED)
|
||||
MOZ_ANDROID_AAR_COMPONENT(concat(local_aar_var, _INTERNAL_LIB), concat(root, libs/$1-$2-internal_impl-$2.jar), $5)
|
||||
MOZ_ANDROID_AAR_COMPONENT(concat(local_aar_var, _ASSETS), concat(root, assets), $6)
|
||||
])
|
||||
|
||||
AC_DEFUN([MOZ_ANDROID_GOOGLE_PLAY_SERVICES],
|
||||
[
|
||||
|
||||
if test -n "$MOZ_NATIVE_DEVICES" ; then
|
||||
AC_SUBST(MOZ_NATIVE_DEVICES)
|
||||
|
||||
MOZ_ANDROID_AAR(play-services-base, $ANDROID_GOOGLE_PLAY_SERVICES_VERSION, google, com/google/android/gms)
|
||||
MOZ_ANDROID_AAR(play-services-basement, $ANDROID_GOOGLE_PLAY_SERVICES_VERSION, google, com/google/android/gms)
|
||||
MOZ_ANDROID_AAR(play-services-cast, $ANDROID_GOOGLE_PLAY_SERVICES_VERSION, google, com/google/android/gms)
|
||||
MOZ_ANDROID_AAR(mediarouter-v7, $ANDROID_SUPPORT_LIBRARY_VERSION, android, com/android/support, REQUIRED_INTERNAL_IMPL)
|
||||
fi
|
||||
|
||||
])
|
||||
|
||||
AC_DEFUN([MOZ_ANDROID_GOOGLE_CLOUD_MESSAGING],
|
||||
[
|
||||
|
||||
if test -n "$MOZ_ANDROID_GCM" ; then
|
||||
MOZ_ANDROID_AAR(play-services-base, $ANDROID_GOOGLE_PLAY_SERVICES_VERSION, google, com/google/android/gms)
|
||||
MOZ_ANDROID_AAR(play-services-basement, $ANDROID_GOOGLE_PLAY_SERVICES_VERSION, google, com/google/android/gms)
|
||||
MOZ_ANDROID_AAR(play-services-gcm, $ANDROID_GOOGLE_PLAY_SERVICES_VERSION, google, com/google/android/gms)
|
||||
MOZ_ANDROID_AAR(play-services-measurement, $ANDROID_GOOGLE_PLAY_SERVICES_VERSION, google, com/google/android/gms)
|
||||
fi
|
||||
|
||||
])
|
||||
|
||||
AC_DEFUN([MOZ_ANDROID_INSTALL_TRACKING],
|
||||
[
|
||||
|
||||
if test -n "$MOZ_INSTALL_TRACKING"; then
|
||||
AC_SUBST(MOZ_INSTALL_TRACKING)
|
||||
MOZ_ANDROID_AAR(play-services-ads, $ANDROID_GOOGLE_PLAY_SERVICES_VERSION, google, com/google/android/gms)
|
||||
MOZ_ANDROID_AAR(play-services-basement, $ANDROID_GOOGLE_PLAY_SERVICES_VERSION, google, com/google/android/gms)
|
||||
fi
|
||||
|
||||
])
|
||||
|
||||
dnl Configure an Android SDK.
|
||||
dnl Arg 1: target SDK version, like 23.
|
||||
dnl Arg 2: list of build-tools versions, like "23.0.3 23.0.1".
|
||||
AC_DEFUN([MOZ_ANDROID_SDK],
|
||||
[
|
||||
|
||||
MOZ_ARG_WITH_STRING(android-sdk,
|
||||
[ --with-android-sdk=DIR
|
||||
location where the Android SDK can be found (like ~/.mozbuild/android-sdk-linux)],
|
||||
android_sdk_root=$withval)
|
||||
|
||||
android_sdk_root=${withval%/platforms/android-*}
|
||||
|
||||
case "$target" in
|
||||
*-android*|*-linuxandroid*)
|
||||
if test -z "$android_sdk_root" ; then
|
||||
AC_MSG_ERROR([You must specify --with-android-sdk=/path/to/sdk when targeting Android.])
|
||||
fi
|
||||
|
||||
# We were given an old-style
|
||||
# --with-android-sdk=/path/to/sdk/platforms/android-*. We could warn, but
|
||||
# we'll get compliance by forcing the issue.
|
||||
if test -e "$withval"/source.properties ; then
|
||||
AC_MSG_ERROR([Including platforms/android-* in --with-android-sdk arguments is deprecated. Use --with-android-sdk=$android_sdk_root.])
|
||||
fi
|
||||
|
||||
android_target_sdk=$1
|
||||
AC_MSG_CHECKING([for Android SDK platform version $android_target_sdk])
|
||||
android_sdk=$android_sdk_root/platforms/android-$android_target_sdk
|
||||
if ! test -e "$android_sdk/source.properties" ; then
|
||||
AC_MSG_ERROR([You must download Android SDK platform version $android_target_sdk. Try |mach bootstrap|. (Looked for $android_sdk)])
|
||||
fi
|
||||
AC_MSG_RESULT([$android_sdk])
|
||||
|
||||
AC_MSG_CHECKING([for Android build-tools])
|
||||
android_build_tools_base="$android_sdk_root"/build-tools
|
||||
android_build_tools_version=""
|
||||
for version in $2; do
|
||||
android_build_tools="$android_build_tools_base"/$version
|
||||
if test -d "$android_build_tools" -a -f "$android_build_tools/aapt"; then
|
||||
android_build_tools_version=$version
|
||||
AC_MSG_RESULT([$android_build_tools])
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test "$android_build_tools_version" = ""; then
|
||||
version=$(echo $2 | cut -d" " -f1)
|
||||
AC_MSG_ERROR([You must install the Android build-tools version $version. Try |mach bootstrap|. (Looked for "$android_build_tools_base"/$version)])
|
||||
fi
|
||||
|
||||
MOZ_PATH_PROG(ZIPALIGN, zipalign, :, [$android_build_tools])
|
||||
MOZ_PATH_PROG(DX, dx, :, [$android_build_tools])
|
||||
MOZ_PATH_PROG(AAPT, aapt, :, [$android_build_tools])
|
||||
MOZ_PATH_PROG(AIDL, aidl, :, [$android_build_tools])
|
||||
if test -z "$ZIPALIGN" -o "$ZIPALIGN" = ":"; then
|
||||
AC_MSG_ERROR([The program zipalign was not found. Try |mach bootstrap|.])
|
||||
fi
|
||||
if test -z "$DX" -o "$DX" = ":"; then
|
||||
AC_MSG_ERROR([The program dx was not found. Try |mach bootstrap|.])
|
||||
fi
|
||||
if test -z "$AAPT" -o "$AAPT" = ":"; then
|
||||
AC_MSG_ERROR([The program aapt was not found. Try |mach bootstrap|.])
|
||||
fi
|
||||
if test -z "$AIDL" -o "$AIDL" = ":"; then
|
||||
AC_MSG_ERROR([The program aidl was not found. Try |mach bootstrap|.])
|
||||
fi
|
||||
|
||||
android_platform_tools="$android_sdk_root"/platform-tools
|
||||
AC_MSG_CHECKING([for Android platform-tools])
|
||||
if test -d "$android_platform_tools" -a -f "$android_platform_tools/adb"; then
|
||||
AC_MSG_RESULT([$android_platform_tools])
|
||||
else
|
||||
AC_MSG_ERROR([You must install the Android platform-tools. Try |mach bootstrap|. (Looked for $android_platform_tools)])
|
||||
fi
|
||||
|
||||
MOZ_PATH_PROG(ADB, adb, :, [$android_platform_tools])
|
||||
if test -z "$ADB" -o "$ADB" = ":"; then
|
||||
AC_MSG_ERROR([The program adb was not found. Try |mach bootstrap|.])
|
||||
fi
|
||||
|
||||
android_tools="$android_sdk_root"/tools
|
||||
AC_MSG_CHECKING([for Android tools])
|
||||
if test -d "$android_tools" -a -f "$android_tools/emulator"; then
|
||||
AC_MSG_RESULT([$android_tools])
|
||||
else
|
||||
AC_MSG_ERROR([You must install the Android tools. Try |mach bootstrap|. (Looked for $android_tools)])
|
||||
fi
|
||||
|
||||
MOZ_PATH_PROG(EMULATOR, emulator, :, [$android_tools])
|
||||
if test -z "$EMULATOR" -o "$EMULATOR" = ":"; then
|
||||
AC_MSG_ERROR([The program emulator was not found. Try |mach bootstrap|.])
|
||||
fi
|
||||
|
||||
ANDROID_TARGET_SDK="${android_target_sdk}"
|
||||
ANDROID_SDK="${android_sdk}"
|
||||
ANDROID_SDK_ROOT="${android_sdk_root}"
|
||||
ANDROID_TOOLS="${android_tools}"
|
||||
ANDROID_BUILD_TOOLS_VERSION="$android_build_tools_version"
|
||||
AC_DEFINE_UNQUOTED(ANDROID_TARGET_SDK,$ANDROID_TARGET_SDK)
|
||||
AC_SUBST(ANDROID_TARGET_SDK)
|
||||
AC_SUBST(ANDROID_SDK_ROOT)
|
||||
AC_SUBST(ANDROID_SDK)
|
||||
AC_SUBST(ANDROID_TOOLS)
|
||||
AC_SUBST(ANDROID_BUILD_TOOLS_VERSION)
|
||||
|
||||
MOZ_ANDROID_AAR(customtabs, $ANDROID_SUPPORT_LIBRARY_VERSION, android, com/android/support)
|
||||
MOZ_ANDROID_AAR(appcompat-v7, $ANDROID_SUPPORT_LIBRARY_VERSION, android, com/android/support)
|
||||
MOZ_ANDROID_AAR(support-vector-drawable, $ANDROID_SUPPORT_LIBRARY_VERSION, android, com/android/support)
|
||||
MOZ_ANDROID_AAR(animated-vector-drawable, $ANDROID_SUPPORT_LIBRARY_VERSION, android, com/android/support)
|
||||
MOZ_ANDROID_AAR(cardview-v7, $ANDROID_SUPPORT_LIBRARY_VERSION, android, com/android/support)
|
||||
MOZ_ANDROID_AAR(design, $ANDROID_SUPPORT_LIBRARY_VERSION, android, com/android/support)
|
||||
MOZ_ANDROID_AAR(recyclerview-v7, $ANDROID_SUPPORT_LIBRARY_VERSION, android, com/android/support)
|
||||
MOZ_ANDROID_AAR(support-v4, $ANDROID_SUPPORT_LIBRARY_VERSION, android, com/android/support, REQUIRED_INTERNAL_IMPL)
|
||||
MOZ_ANDROID_AAR(palette-v7, $ANDROID_SUPPORT_LIBRARY_VERSION, android, com/android/support)
|
||||
|
||||
ANDROID_SUPPORT_ANNOTATIONS_JAR="$ANDROID_SDK_ROOT/extras/android/m2repository/com/android/support/support-annotations/$ANDROID_SUPPORT_LIBRARY_VERSION/support-annotations-$ANDROID_SUPPORT_LIBRARY_VERSION.jar"
|
||||
AC_MSG_CHECKING([for support-annotations JAR])
|
||||
if ! test -e $ANDROID_SUPPORT_ANNOTATIONS_JAR ; then
|
||||
AC_MSG_ERROR([You must download the support-annotations lib. Run the Android SDK tool and install the Android Support Repository under Extras. See https://developer.android.com/tools/extras/support-library.html for more info. (looked for $ANDROID_SUPPORT_ANNOTATIONS_JAR)])
|
||||
fi
|
||||
AC_MSG_RESULT([$ANDROID_SUPPORT_ANNOTATIONS_JAR])
|
||||
AC_SUBST(ANDROID_SUPPORT_ANNOTATIONS_JAR)
|
||||
ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB=$ANDROID_SUPPORT_ANNOTATIONS_JAR
|
||||
AC_SUBST(ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB)
|
||||
;;
|
||||
esac
|
||||
|
||||
MOZ_ARG_WITH_STRING(android-min-sdk,
|
||||
[ --with-android-min-sdk=[VER] Impose a minimum Firefox for Android SDK version],
|
||||
[ MOZ_ANDROID_MIN_SDK_VERSION=$withval ])
|
||||
|
||||
MOZ_ARG_WITH_STRING(android-max-sdk,
|
||||
[ --with-android-max-sdk=[VER] Impose a maximum Firefox for Android SDK version],
|
||||
[ MOZ_ANDROID_MAX_SDK_VERSION=$withval ])
|
||||
|
||||
if test -n "$MOZ_ANDROID_MIN_SDK_VERSION"; then
|
||||
if test -n "$MOZ_ANDROID_MAX_SDK_VERSION"; then
|
||||
if test $MOZ_ANDROID_MAX_SDK_VERSION -lt $MOZ_ANDROID_MIN_SDK_VERSION ; then
|
||||
AC_MSG_ERROR([--with-android-max-sdk must be at least the value of --with-android-min-sdk.])
|
||||
fi
|
||||
fi
|
||||
|
||||
if test $MOZ_ANDROID_MIN_SDK_VERSION -gt $ANDROID_TARGET_SDK ; then
|
||||
AC_MSG_ERROR([--with-android-min-sdk is expected to be less than $ANDROID_TARGET_SDK])
|
||||
fi
|
||||
|
||||
AC_DEFINE_UNQUOTED(MOZ_ANDROID_MIN_SDK_VERSION, $MOZ_ANDROID_MIN_SDK_VERSION)
|
||||
AC_SUBST(MOZ_ANDROID_MIN_SDK_VERSION)
|
||||
fi
|
||||
|
||||
if test -n "$MOZ_ANDROID_MAX_SDK_VERSION"; then
|
||||
AC_DEFINE_UNQUOTED(MOZ_ANDROID_MAX_SDK_VERSION, $MOZ_ANDROID_MAX_SDK_VERSION)
|
||||
AC_SUBST(MOZ_ANDROID_MAX_SDK_VERSION)
|
||||
fi
|
||||
|
||||
])
|
||||
254
build/autoconf/arch.m4
Normal file
254
build/autoconf/arch.m4
Normal file
|
|
@ -0,0 +1,254 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
AC_DEFUN([MOZ_ARCH_OPTS],
|
||||
[
|
||||
|
||||
dnl ========================================================
|
||||
dnl = ARM toolchain tweaks
|
||||
dnl ========================================================
|
||||
|
||||
MOZ_THUMB=toolchain-default
|
||||
MOZ_THUMB_INTERWORK=toolchain-default
|
||||
MOZ_FPU=toolchain-default
|
||||
MOZ_FLOAT_ABI=toolchain-default
|
||||
MOZ_SOFT_FLOAT=toolchain-default
|
||||
MOZ_ALIGN=toolchain-default
|
||||
|
||||
MOZ_ARG_WITH_STRING(arch,
|
||||
[ --with-arch=[[type|toolchain-default]]
|
||||
Use specific CPU features (-march=type). Resets
|
||||
thumb, fpu, float-abi, etc. defaults when set],
|
||||
if test -z "$GNU_CC"; then
|
||||
AC_MSG_ERROR([--with-arch is not supported on non-GNU toolchains])
|
||||
fi
|
||||
MOZ_ARCH=$withval)
|
||||
|
||||
if test -z "$MOZ_ARCH"; then
|
||||
dnl Defaults
|
||||
case "${CPU_ARCH}-${OS_TARGET}" in
|
||||
arm-Android)
|
||||
MOZ_THUMB=yes
|
||||
MOZ_ARCH=armv7-a
|
||||
MOZ_FPU=vfp
|
||||
MOZ_FLOAT_ABI=softfp
|
||||
MOZ_ALIGN=no
|
||||
;;
|
||||
arm-Darwin)
|
||||
MOZ_ARCH=toolchain-default
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if test "$MOZ_ARCH" = "armv6" -a "$OS_TARGET" = "Android"; then
|
||||
MOZ_FPU=vfp
|
||||
MOZ_FLOAT_ABI=softfp
|
||||
fi
|
||||
|
||||
MOZ_ARG_WITH_STRING(thumb,
|
||||
[ --with-thumb[[=yes|no|toolchain-default]]]
|
||||
[ Use Thumb instruction set (-mthumb)],
|
||||
if test -z "$GNU_CC"; then
|
||||
AC_MSG_ERROR([--with-thumb is not supported on non-GNU toolchains])
|
||||
fi
|
||||
MOZ_THUMB=$withval)
|
||||
|
||||
MOZ_ARG_WITH_STRING(thumb-interwork,
|
||||
[ --with-thumb-interwork[[=yes|no|toolchain-default]]
|
||||
Use Thumb/ARM instuctions interwork (-mthumb-interwork)],
|
||||
if test -z "$GNU_CC"; then
|
||||
AC_MSG_ERROR([--with-thumb-interwork is not supported on non-GNU toolchains])
|
||||
fi
|
||||
MOZ_THUMB_INTERWORK=$withval)
|
||||
|
||||
MOZ_ARG_WITH_STRING(fpu,
|
||||
[ --with-fpu=[[type|toolchain-default]]
|
||||
Use specific FPU type (-mfpu=type)],
|
||||
if test -z "$GNU_CC"; then
|
||||
AC_MSG_ERROR([--with-fpu is not supported on non-GNU toolchains])
|
||||
fi
|
||||
MOZ_FPU=$withval)
|
||||
|
||||
MOZ_ARG_WITH_STRING(float-abi,
|
||||
[ --with-float-abi=[[type|toolchain-default]]
|
||||
Use specific arm float ABI (-mfloat-abi=type)],
|
||||
if test -z "$GNU_CC"; then
|
||||
AC_MSG_ERROR([--with-float-abi is not supported on non-GNU toolchains])
|
||||
fi
|
||||
MOZ_FLOAT_ABI=$withval)
|
||||
|
||||
MOZ_ARG_WITH_STRING(soft-float,
|
||||
[ --with-soft-float[[=yes|no|toolchain-default]]
|
||||
Use soft float library (-msoft-float)],
|
||||
if test -z "$GNU_CC"; then
|
||||
AC_MSG_ERROR([--with-soft-float is not supported on non-GNU toolchains])
|
||||
fi
|
||||
MOZ_SOFT_FLOAT=$withval)
|
||||
|
||||
case "$MOZ_ARCH" in
|
||||
toolchain-default|"")
|
||||
arch_flag=""
|
||||
;;
|
||||
*)
|
||||
arch_flag="-march=$MOZ_ARCH"
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$MOZ_THUMB" in
|
||||
yes)
|
||||
MOZ_THUMB2=1
|
||||
thumb_flag="-mthumb"
|
||||
;;
|
||||
no)
|
||||
MOZ_THUMB2=
|
||||
thumb_flag="-marm"
|
||||
;;
|
||||
*)
|
||||
_SAVE_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$arch_flag"
|
||||
AC_TRY_COMPILE([],[return sizeof(__thumb2__);],
|
||||
MOZ_THUMB2=1,
|
||||
MOZ_THUMB2=)
|
||||
CFLAGS="$_SAVE_CFLAGS"
|
||||
thumb_flag=""
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "$MOZ_THUMB2" = 1; then
|
||||
AC_DEFINE(MOZ_THUMB2)
|
||||
fi
|
||||
|
||||
case "$MOZ_THUMB_INTERWORK" in
|
||||
yes)
|
||||
thumb_interwork_flag="-mthumb-interwork"
|
||||
;;
|
||||
no)
|
||||
thumb_interwork_flag="-mno-thumb-interwork"
|
||||
;;
|
||||
*) # toolchain-default
|
||||
thumb_interwork_flag=""
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$MOZ_FPU" in
|
||||
toolchain-default|"")
|
||||
fpu_flag=""
|
||||
;;
|
||||
*)
|
||||
fpu_flag="-mfpu=$MOZ_FPU"
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$MOZ_FLOAT_ABI" in
|
||||
toolchain-default|"")
|
||||
float_abi_flag=""
|
||||
;;
|
||||
*)
|
||||
float_abi_flag="-mfloat-abi=$MOZ_FLOAT_ABI"
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$MOZ_SOFT_FLOAT" in
|
||||
yes)
|
||||
soft_float_flag="-msoft-float"
|
||||
;;
|
||||
no)
|
||||
soft_float_flag="-mno-soft-float"
|
||||
;;
|
||||
*) # toolchain-default
|
||||
soft_float_flag=""
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$MOZ_ALIGN" in
|
||||
no)
|
||||
align_flag="-mno-unaligned-access"
|
||||
;;
|
||||
yes)
|
||||
align_flag="-munaligned-access"
|
||||
;;
|
||||
*)
|
||||
align_flag=""
|
||||
;;
|
||||
esac
|
||||
|
||||
if test -n "$align_flag"; then
|
||||
_SAVE_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $align_flag"
|
||||
AC_MSG_CHECKING(whether alignment flag ($align_flag) is supported)
|
||||
AC_TRY_COMPILE([],[],,align_flag="")
|
||||
CFLAGS="$_SAVE_CFLAGS"
|
||||
fi
|
||||
|
||||
dnl Use echo to avoid accumulating space characters
|
||||
all_flags=`echo $arch_flag $thumb_flag $thumb_interwork_flag $fpu_flag $float_abi_flag $soft_float_flag $align_flag`
|
||||
if test -n "$all_flags"; then
|
||||
_SAVE_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$all_flags"
|
||||
AC_MSG_CHECKING(whether the chosen combination of compiler flags ($all_flags) works)
|
||||
AC_TRY_COMPILE([],[return 0;],
|
||||
AC_MSG_RESULT([yes]),
|
||||
AC_MSG_ERROR([no]))
|
||||
|
||||
CFLAGS="$_SAVE_CFLAGS $all_flags"
|
||||
CXXFLAGS="$CXXFLAGS $all_flags"
|
||||
ASFLAGS="$ASFLAGS $all_flags"
|
||||
if test -n "$thumb_flag"; then
|
||||
LDFLAGS="$LDFLAGS $thumb_flag"
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(MOZ_THUMB2)
|
||||
|
||||
if test "$CPU_ARCH" = "arm"; then
|
||||
NEON_FLAGS="-mfpu=neon"
|
||||
AC_MSG_CHECKING(for ARM SIMD support in compiler)
|
||||
# We try to link so that this also fails when
|
||||
# building with LTO.
|
||||
AC_TRY_LINK([],
|
||||
[asm("uqadd8 r1, r1, r2");],
|
||||
result="yes", result="no")
|
||||
AC_MSG_RESULT("$result")
|
||||
if test "$result" = "yes"; then
|
||||
AC_DEFINE(HAVE_ARM_SIMD)
|
||||
HAVE_ARM_SIMD=1
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING(ARM version support in compiler)
|
||||
dnl Determine the target ARM architecture (5 for ARMv5, v5T, v5E, etc.; 6 for ARMv6, v6K, etc.)
|
||||
ARM_ARCH=`${CC-cc} ${CFLAGS} -dM -E - < /dev/null | sed -n 's/.*__ARM_ARCH_\([[0-9]][[0-9]]*\).*/\1/p'`
|
||||
AC_MSG_RESULT("$ARM_ARCH")
|
||||
|
||||
AC_MSG_CHECKING(for ARM NEON support in compiler)
|
||||
# We try to link so that this also fails when
|
||||
# building with LTO.
|
||||
AC_TRY_LINK([],
|
||||
[asm(".fpu neon\n vadd.i8 d0, d0, d0");],
|
||||
result="yes", result="no")
|
||||
AC_MSG_RESULT("$result")
|
||||
if test "$result" = "yes"; then
|
||||
AC_DEFINE(HAVE_ARM_NEON)
|
||||
HAVE_ARM_NEON=1
|
||||
|
||||
dnl We don't need to build NEON support if we're targetting a non-NEON device.
|
||||
dnl This matches media/webrtc/trunk/webrtc/build/common.gypi.
|
||||
if test -n "$ARM_ARCH"; then
|
||||
if test "$ARM_ARCH" -lt 7; then
|
||||
BUILD_ARM_NEON=
|
||||
else
|
||||
AC_DEFINE(BUILD_ARM_NEON)
|
||||
BUILD_ARM_NEON=1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
fi # CPU_ARCH = arm
|
||||
|
||||
AC_SUBST(HAVE_ARM_SIMD)
|
||||
AC_SUBST(HAVE_ARM_NEON)
|
||||
AC_SUBST(BUILD_ARM_NEON)
|
||||
AC_SUBST(ARM_ARCH)
|
||||
AC_SUBST_LIST(NEON_FLAGS)
|
||||
|
||||
])
|
||||
162
build/autoconf/clang-plugin.m4
Normal file
162
build/autoconf/clang-plugin.m4
Normal file
|
|
@ -0,0 +1,162 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
AC_DEFUN([MOZ_CONFIG_CLANG_PLUGIN], [
|
||||
|
||||
MOZ_ARG_ENABLE_BOOL(clang-plugin,
|
||||
[ --enable-clang-plugin Enable building with the mozilla clang plugin ],
|
||||
ENABLE_CLANG_PLUGIN=1,
|
||||
ENABLE_CLANG_PLUGIN= )
|
||||
if test -n "$ENABLE_CLANG_PLUGIN"; then
|
||||
if test -z "${CLANG_CC}${CLANG_CL}"; then
|
||||
AC_MSG_ERROR([Can't use clang plugin without clang.])
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([for llvm-config])
|
||||
if test -z "$LLVMCONFIG"; then
|
||||
if test -n "$CLANG_CL"; then
|
||||
CXX_COMPILER="$(dirname "$CXX")/clang"
|
||||
else
|
||||
CXX_COMPILER="${CXX}"
|
||||
fi
|
||||
LLVMCONFIG=`$CXX_COMPILER -print-prog-name=llvm-config`
|
||||
fi
|
||||
|
||||
if test -z "$LLVMCONFIG"; then
|
||||
LLVMCONFIG=`which llvm-config`
|
||||
fi
|
||||
|
||||
if test ! -x "$LLVMCONFIG"; then
|
||||
AC_MSG_RESULT([not found])
|
||||
AC_MSG_ERROR([Cannot find an llvm-config binary for building a clang plugin])
|
||||
fi
|
||||
|
||||
AC_MSG_RESULT([$LLVMCONFIG])
|
||||
|
||||
if test -z "$LLVMCONFIG"; then
|
||||
AC_MSG_ERROR([Cannot find an llvm-config binary for building a clang plugin])
|
||||
fi
|
||||
dnl For some reason the llvm-config downloaded from clang.llvm.org for clang3_8
|
||||
dnl produces a -isysroot flag for a sysroot which might not ship when passed
|
||||
dnl --cxxflags. We use sed to remove this argument so that builds work on OSX
|
||||
LLVM_CXXFLAGS=`$LLVMCONFIG --cxxflags | sed -e 's/-isysroot [[^ ]]*//'`
|
||||
|
||||
dnl We are loaded into clang, so we don't need to link to very many things,
|
||||
dnl we just need to link to clangASTMatchers because it is not used by clang
|
||||
LLVM_LDFLAGS=`$LLVMCONFIG --ldflags | tr '\n' ' '`
|
||||
|
||||
if test "${HOST_OS_ARCH}" = "Darwin"; then
|
||||
dnl We need to make sure that we use the symbols coming from the clang
|
||||
dnl binary. In order to do this, we need to pass -flat_namespace and
|
||||
dnl -undefined suppress to the linker. This makes sure that we link the
|
||||
dnl symbols into the flat namespace provided by clang, and thus get
|
||||
dnl access to all of the symbols which are undefined in our dylib as we
|
||||
dnl are building it right now, and also that we don't fail the build
|
||||
dnl due to undefined symbols (which will be provided by clang).
|
||||
CLANG_LDFLAGS="-Wl,-flat_namespace -Wl,-undefined,suppress -lclangASTMatchers"
|
||||
elif test "${HOST_OS_ARCH}" = "WINNT"; then
|
||||
CLANG_LDFLAGS="clangASTMatchers.lib"
|
||||
else
|
||||
CLANG_LDFLAGS="-lclangASTMatchers"
|
||||
fi
|
||||
|
||||
if test -n "$CLANG_CL"; then
|
||||
dnl The llvm-config coming with clang-cl may give us arguments in the
|
||||
dnl /ARG form, which in msys will be interpreted as a path name. So we
|
||||
dnl need to split the args and convert the leading slashes that we find
|
||||
dnl into a dash.
|
||||
LLVM_REPLACE_CXXFLAGS=''
|
||||
for arg in $LLVM_CXXFLAGS; do
|
||||
dnl The following expression replaces a leading slash with a dash.
|
||||
dnl Also replace any backslashes with forward slash.
|
||||
arg=`echo "$arg"|sed -e 's/^\//-/' -e 's/\\\\/\//g'`
|
||||
LLVM_REPLACE_CXXFLAGS="$LLVM_REPLACE_CXXFLAGS $arg"
|
||||
done
|
||||
LLVM_CXXFLAGS="$LLVM_REPLACE_CXXFLAGS"
|
||||
|
||||
LLVM_REPLACE_LDFLAGS=''
|
||||
for arg in $LLVM_LDFLAGS; do
|
||||
dnl The following expression replaces a leading slash with a dash.
|
||||
dnl Also replace any backslashes with forward slash.
|
||||
arg=`echo "$arg"|sed -e 's/^\//-/' -e 's/\\\\/\//g'`
|
||||
LLVM_REPLACE_LDFLAGS="$LLVM_REPLACE_LDFLAGS $arg"
|
||||
done
|
||||
LLVM_LDFLAGS="$LLVM_REPLACE_LDFLAGS"
|
||||
|
||||
CLANG_REPLACE_LDFLAGS=''
|
||||
for arg in $CLANG_LDFLAGS; do
|
||||
dnl The following expression replaces a leading slash with a dash.
|
||||
dnl Also replace any backslashes with forward slash.
|
||||
arg=`echo "$arg"|sed -e 's/^\//-/' -e 's/\\\\/\//g'`
|
||||
CLANG_REPLACE_LDFLAGS="$CLANG_REPLACE_LDFLAGS $arg"
|
||||
done
|
||||
CLANG_LDFLAGS="$CLANG_REPLACE_LDFLAGS"
|
||||
fi
|
||||
|
||||
dnl Check for the new ASTMatcher API names. Since this happened in the
|
||||
dnl middle of the 3.8 cycle, our CLANG_VERSION_FULL is impossible to use
|
||||
dnl correctly, so we have to detect this at configure time.
|
||||
AC_CACHE_CHECK(for new ASTMatcher API,
|
||||
ac_cv_have_new_ASTMatcher_api,
|
||||
[
|
||||
AC_LANG_SAVE
|
||||
AC_LANG_CPLUSPLUS
|
||||
_SAVE_CXXFLAGS="$CXXFLAGS"
|
||||
_SAVE_CXX="$CXX"
|
||||
_SAVE_MACOSX_DEPLOYMENT_TARGET="$MACOSX_DEPLOYMENT_TARGET"
|
||||
unset MACOSX_DEPLOYMENT_TARGET
|
||||
CXXFLAGS="${LLVM_CXXFLAGS}"
|
||||
CXX="${HOST_CXX}"
|
||||
AC_TRY_COMPILE([#include "clang/ASTMatchers/ASTMatchers.h"],
|
||||
[clang::ast_matchers::cxxConstructExpr();],
|
||||
ac_cv_have_new_ASTMatcher_names="yes",
|
||||
ac_cv_have_new_ASTMatcher_names="no")
|
||||
CXX="$_SAVE_CXX"
|
||||
CXXFLAGS="$_SAVE_CXXFLAGS"
|
||||
export MACOSX_DEPLOYMENT_TARGET="$_SAVE_MACOSX_DEPLOYMENT_TARGET"
|
||||
AC_LANG_RESTORE
|
||||
])
|
||||
if test "$ac_cv_have_new_ASTMatcher_names" = "yes"; then
|
||||
LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DHAVE_NEW_ASTMATCHER_NAMES"
|
||||
fi
|
||||
|
||||
dnl Check if we can compile has(ignoringParenImpCasts()) because
|
||||
dnl before 3.9 that ignoringParenImpCasts was done internally by "has".
|
||||
dnl See https://www.mail-archive.com/cfe-commits@lists.llvm.org/msg25234.html
|
||||
AC_CACHE_CHECK(for has with ignoringParenImpCasts,
|
||||
ac_cv_has_accepts_ignoringParenImpCasts,
|
||||
[
|
||||
AC_LANG_SAVE
|
||||
AC_LANG_CPLUSPLUS
|
||||
_SAVE_CXXFLAGS="$CXXFLAGS"
|
||||
_SAVE_CXX="$CXX"
|
||||
_SAVE_MACOSX_DEPLOYMENT_TARGET="$MACOSX_DEPLOYMENT_TARGET"
|
||||
unset MACOSX_DEPLOYMENT_TARGET
|
||||
CXXFLAGS="${LLVM_CXXFLAGS}"
|
||||
CXX="${HOST_CXX}"
|
||||
AC_TRY_COMPILE([#include "clang/ASTMatchers/ASTMatchers.h"],
|
||||
[using namespace clang::ast_matchers;
|
||||
expr(has(ignoringParenImpCasts(declRefExpr())));
|
||||
],
|
||||
ac_cv_has_accepts_ignoringParenImpCasts="yes",
|
||||
ac_cv_has_accepts_ignoringParenImpCasts="no")
|
||||
CXX="$_SAVE_CXX"
|
||||
CXXFLAGS="$_SAVE_CXXFLAGS"
|
||||
export MACOSX_DEPLOYMENT_TARGET="$_SAVE_MACOSX_DEPLOYMENT_TARGET"
|
||||
AC_LANG_RESTORE
|
||||
])
|
||||
if test "$ac_cv_has_accepts_ignoringParenImpCasts" = "yes"; then
|
||||
LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DHAS_ACCEPTS_IGNORINGPARENIMPCASTS"
|
||||
fi
|
||||
|
||||
AC_DEFINE(MOZ_CLANG_PLUGIN)
|
||||
fi
|
||||
|
||||
AC_SUBST(LLVM_CXXFLAGS)
|
||||
AC_SUBST(LLVM_LDFLAGS)
|
||||
AC_SUBST(CLANG_LDFLAGS)
|
||||
|
||||
AC_SUBST(ENABLE_CLANG_PLUGIN)
|
||||
|
||||
])
|
||||
25
build/autoconf/codeset.m4
Normal file
25
build/autoconf/codeset.m4
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# codeset.m4 serial AM1 (gettext-0.10.40)
|
||||
dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
|
||||
dnl This file is free software, distributed under the terms of the GNU
|
||||
dnl General Public License. As a special exception to the GNU General
|
||||
dnl Public License, this file may be distributed as part of a program
|
||||
dnl that contains a configuration script generated by Autoconf, under
|
||||
dnl the same distribution terms as the rest of that program.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
|
||||
AC_DEFUN([AM_LANGINFO_CODESET],
|
||||
[
|
||||
AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
|
||||
[AC_TRY_LINK([#include <langinfo.h>],
|
||||
[char* cs = nl_langinfo(CODESET);],
|
||||
am_cv_langinfo_codeset=yes,
|
||||
am_cv_langinfo_codeset=no)
|
||||
])
|
||||
if test $am_cv_langinfo_codeset = yes; then
|
||||
AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
|
||||
[Define if you have <langinfo.h> and nl_langinfo(CODESET).])
|
||||
HAVE_LANGINFO_CODESET=1
|
||||
fi
|
||||
AC_SUBST(HAVE_LANGINFO_CODESET)
|
||||
])
|
||||
316
build/autoconf/compiler-opts.m4
Normal file
316
build/autoconf/compiler-opts.m4
Normal file
|
|
@ -0,0 +1,316 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
dnl Add compiler specific options
|
||||
|
||||
AC_DEFUN([MOZ_DEFAULT_COMPILER],
|
||||
[
|
||||
dnl set DEVELOPER_OPTIONS early; MOZ_DEFAULT_COMPILER is usually the first non-setup directive
|
||||
if test -z "$MOZILLA_OFFICIAL"; then
|
||||
DEVELOPER_OPTIONS=1
|
||||
fi
|
||||
MOZ_ARG_ENABLE_BOOL(release,
|
||||
[ --enable-release Build with more conservative, release engineering-oriented options.
|
||||
This may slow down builds.],
|
||||
DEVELOPER_OPTIONS=,
|
||||
DEVELOPER_OPTIONS=1)
|
||||
|
||||
dnl Default to MSVC for win32 and gcc-4.2 for darwin
|
||||
dnl ==============================================================
|
||||
if test -z "$CROSS_COMPILE"; then
|
||||
case "$target" in
|
||||
*-mingw*)
|
||||
if test -z "$CPP"; then CPP="$CC -E -nologo"; fi
|
||||
if test -z "$CXXCPP"; then CXXCPP="$CXX -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
|
||||
if test -z "$AS"; then
|
||||
case "${target_cpu}" in
|
||||
i*86)
|
||||
AS=ml;
|
||||
;;
|
||||
x86_64)
|
||||
AS=ml64;
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if test -z "$MIDL"; then MIDL=midl; fi
|
||||
|
||||
# need override this flag since we don't use $(LDFLAGS) for this.
|
||||
if test -z "$HOST_LDFLAGS" ; then
|
||||
HOST_LDFLAGS=" "
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
])
|
||||
|
||||
dnl ============================================================================
|
||||
dnl C++ rtti
|
||||
dnl We don't use it in the code, but it can be usefull for debugging, so give
|
||||
dnl the user the option of enabling it.
|
||||
dnl ============================================================================
|
||||
AC_DEFUN([MOZ_RTTI],
|
||||
[
|
||||
MOZ_ARG_ENABLE_BOOL(cpp-rtti,
|
||||
[ --enable-cpp-rtti Enable C++ RTTI ],
|
||||
[ _MOZ_USE_RTTI=1 ],
|
||||
[ _MOZ_USE_RTTI= ])
|
||||
|
||||
if test -z "$_MOZ_USE_RTTI"; then
|
||||
if test "$GNU_CC"; then
|
||||
CXXFLAGS="$CXXFLAGS -fno-rtti"
|
||||
else
|
||||
case "$target" in
|
||||
*-mingw*)
|
||||
CXXFLAGS="$CXXFLAGS -GR-"
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
dnl ========================================================
|
||||
dnl =
|
||||
dnl = Debugging Options
|
||||
dnl =
|
||||
dnl ========================================================
|
||||
AC_DEFUN([MOZ_DEBUGGING_OPTS],
|
||||
[
|
||||
|
||||
if test -z "$MOZ_DEBUG" -o -n "$MOZ_ASAN"; then
|
||||
MOZ_NO_DEBUG_RTL=1
|
||||
fi
|
||||
|
||||
AC_SUBST(MOZ_NO_DEBUG_RTL)
|
||||
|
||||
MOZ_DEBUG_ENABLE_DEFS="DEBUG TRACING"
|
||||
MOZ_ARG_WITH_STRING(debug-label,
|
||||
[ --with-debug-label=LABELS
|
||||
Define DEBUG_<value> for each comma-separated
|
||||
value given.],
|
||||
[ for option in `echo $withval | sed 's/,/ /g'`; do
|
||||
MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS DEBUG_${option}"
|
||||
done])
|
||||
|
||||
if test -n "$MOZ_DEBUG"; then
|
||||
if test -n "$COMPILE_ENVIRONMENT"; then
|
||||
AC_MSG_CHECKING([for valid debug flags])
|
||||
_SAVE_CFLAGS=$CFLAGS
|
||||
CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
|
||||
AC_TRY_COMPILE([#include <stdio.h>],
|
||||
[printf("Hello World\n");],
|
||||
_results=yes,
|
||||
_results=no)
|
||||
AC_MSG_RESULT([$_results])
|
||||
if test "$_results" = "no"; then
|
||||
AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
|
||||
fi
|
||||
CFLAGS=$_SAVE_CFLAGS
|
||||
fi
|
||||
|
||||
MOZ_DEBUG_DEFINES="$MOZ_DEBUG_ENABLE_DEFS"
|
||||
else
|
||||
MOZ_DEBUG_DEFINES="NDEBUG TRIMMED"
|
||||
fi
|
||||
|
||||
AC_SUBST_LIST(MOZ_DEBUG_DEFINES)
|
||||
|
||||
])
|
||||
|
||||
dnl A high level macro for selecting compiler options.
|
||||
AC_DEFUN([MOZ_COMPILER_OPTS],
|
||||
[
|
||||
MOZ_DEBUGGING_OPTS
|
||||
MOZ_RTTI
|
||||
if test "$CLANG_CXX"; then
|
||||
## We disable return-type-c-linkage because jsval is defined as a C++ type but is
|
||||
## returned by C functions. This is possible because we use knowledge about the ABI
|
||||
## to typedef it to a C type with the same layout when the headers are included
|
||||
## from C.
|
||||
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-unknown-warning-option -Wno-return-type-c-linkage"
|
||||
fi
|
||||
|
||||
if test -n "$DEVELOPER_OPTIONS"; then
|
||||
MOZ_FORCE_GOLD=1
|
||||
fi
|
||||
|
||||
MOZ_ARG_ENABLE_BOOL(gold,
|
||||
[ --enable-gold Enable GNU Gold Linker when it is not already the default],
|
||||
MOZ_FORCE_GOLD=1,
|
||||
MOZ_FORCE_GOLD=
|
||||
)
|
||||
|
||||
if test "$GNU_CC" -a -n "$MOZ_FORCE_GOLD"; then
|
||||
dnl if the default linker is BFD ld, check if gold is available and try to use it
|
||||
dnl for local builds only.
|
||||
if $CC -Wl,--version 2>&1 | grep -q "GNU ld"; then
|
||||
GOLD=$($CC -print-prog-name=ld.gold)
|
||||
case "$GOLD" in
|
||||
/*)
|
||||
;;
|
||||
*)
|
||||
GOLD=$(which $GOLD)
|
||||
;;
|
||||
esac
|
||||
if test -n "$GOLD"; then
|
||||
mkdir -p $_objdir/build/unix/gold
|
||||
rm -f $_objdir/build/unix/gold/ld
|
||||
ln -s "$GOLD" $_objdir/build/unix/gold/ld
|
||||
if $CC -B $_objdir/build/unix/gold -Wl,--version 2>&1 | grep -q "GNU gold"; then
|
||||
LDFLAGS="$LDFLAGS -B $_objdir/build/unix/gold"
|
||||
else
|
||||
rm -rf $_objdir/build/unix/gold
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test "$GNU_CC"; then
|
||||
if $CC $LDFLAGS -Wl,--version 2>&1 | grep -q "GNU ld"; then
|
||||
LD_IS_BFD=1
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST([LD_IS_BFD])
|
||||
|
||||
if test "$GNU_CC"; then
|
||||
if test -z "$DEVELOPER_OPTIONS"; then
|
||||
CFLAGS="$CFLAGS -ffunction-sections -fdata-sections"
|
||||
CXXFLAGS="$CXXFLAGS -ffunction-sections -fdata-sections"
|
||||
fi
|
||||
CFLAGS="$CFLAGS -fno-math-errno"
|
||||
CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-math-errno"
|
||||
|
||||
if test -z "$CLANG_CC"; then
|
||||
case "$CC_VERSION" in
|
||||
4.*)
|
||||
;;
|
||||
*)
|
||||
# Lifetime Dead Store Elimination level 2 (default in GCC6+) breaks Gecko.
|
||||
# Ideally, we'd use -flifetime-dse=1, but that means we'd forcefully
|
||||
# enable it on optimization levels where it would otherwise not be enabled.
|
||||
# So we disable it entirely. But since that would mean inconsistency with
|
||||
# GCC5, which has level 1 depending on optimization level, disable it on
|
||||
# GCC5 as well, because better safe than sorry.
|
||||
# Add it first so that a mozconfig can override by setting CFLAGS/CXXFLAGS.
|
||||
CFLAGS="-fno-lifetime-dse $CFLAGS"
|
||||
CXXFLAGS="-fno-lifetime-dse $CXXFLAGS"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl ========================================================
|
||||
dnl = Identical Code Folding
|
||||
dnl ========================================================
|
||||
|
||||
MOZ_ARG_DISABLE_BOOL(icf,
|
||||
[ --disable-icf Disable Identical Code Folding],
|
||||
MOZ_DISABLE_ICF=1,
|
||||
MOZ_DISABLE_ICF= )
|
||||
|
||||
if test "$GNU_CC" -a "$GCC_USE_GNU_LD" -a -z "$MOZ_DISABLE_ICF" -a -z "$DEVELOPER_OPTIONS"; then
|
||||
AC_CACHE_CHECK([whether the linker supports Identical Code Folding],
|
||||
LD_SUPPORTS_ICF,
|
||||
[echo 'int foo() {return 42;}' \
|
||||
'int bar() {return 42;}' \
|
||||
'int main() {return foo() - bar();}' > conftest.${ac_ext}
|
||||
# If the linker supports ICF, foo and bar symbols will have
|
||||
# the same address
|
||||
if AC_TRY_COMMAND([${CC-cc} -o conftest${ac_exeext} $LDFLAGS -Wl,--icf=safe -ffunction-sections conftest.${ac_ext} $LIBS 1>&2]) &&
|
||||
test -s conftest${ac_exeext} &&
|
||||
objdump -t conftest${ac_exeext} | awk changequote(<<, >>)'{a[<<$>>6] = <<$>>1} END {if (a["foo"] && (a["foo"] != a["bar"])) { exit 1 }}'changequote([, ]); then
|
||||
LD_SUPPORTS_ICF=yes
|
||||
else
|
||||
LD_SUPPORTS_ICF=no
|
||||
fi
|
||||
rm -rf conftest*])
|
||||
if test "$LD_SUPPORTS_ICF" = yes; then
|
||||
_SAVE_LDFLAGS="$LDFLAGS -Wl,--icf=safe"
|
||||
LDFLAGS="$LDFLAGS -Wl,--icf=safe -Wl,--print-icf-sections"
|
||||
AC_TRY_LINK([], [],
|
||||
[LD_PRINT_ICF_SECTIONS=-Wl,--print-icf-sections],
|
||||
[LD_PRINT_ICF_SECTIONS=])
|
||||
AC_SUBST([LD_PRINT_ICF_SECTIONS])
|
||||
LDFLAGS="$_SAVE_LDFLAGS"
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl ========================================================
|
||||
dnl = Automatically remove dead symbols
|
||||
dnl ========================================================
|
||||
|
||||
if test "$GNU_CC" -a "$GCC_USE_GNU_LD" -a -z "$DEVELOPER_OPTIONS"; then
|
||||
if test -n "$MOZ_DEBUG_FLAGS"; then
|
||||
dnl See bug 670659
|
||||
AC_CACHE_CHECK([whether removing dead symbols breaks debugging],
|
||||
GC_SECTIONS_BREAKS_DEBUG_RANGES,
|
||||
[echo 'int foo() {return 42;}' \
|
||||
'int bar() {return 1;}' \
|
||||
'int main() {return foo();}' > conftest.${ac_ext}
|
||||
if AC_TRY_COMMAND([${CC-cc} -o conftest.${ac_objext} $CFLAGS $MOZ_DEBUG_FLAGS -c conftest.${ac_ext} 1>&2]) &&
|
||||
AC_TRY_COMMAND([${CC-cc} -o conftest${ac_exeext} $LDFLAGS $MOZ_DEBUG_FLAGS -Wl,--gc-sections conftest.${ac_objext} $LIBS 1>&2]) &&
|
||||
test -s conftest${ac_exeext} -a -s conftest.${ac_objext}; then
|
||||
if test "`$PYTHON -m mozbuild.configure.check_debug_ranges conftest.${ac_objext} conftest.${ac_ext}`" = \
|
||||
"`$PYTHON -m mozbuild.configure.check_debug_ranges conftest${ac_exeext} conftest.${ac_ext}`"; then
|
||||
GC_SECTIONS_BREAKS_DEBUG_RANGES=no
|
||||
else
|
||||
GC_SECTIONS_BREAKS_DEBUG_RANGES=yes
|
||||
fi
|
||||
else
|
||||
dnl We really don't expect to get here, but just in case
|
||||
GC_SECTIONS_BREAKS_DEBUG_RANGES="no, but it's broken in some other way"
|
||||
fi
|
||||
rm -rf conftest*])
|
||||
if test "$GC_SECTIONS_BREAKS_DEBUG_RANGES" = no; then
|
||||
DSO_LDOPTS="$DSO_LDOPTS -Wl,--gc-sections"
|
||||
fi
|
||||
else
|
||||
DSO_LDOPTS="$DSO_LDOPTS -Wl,--gc-sections"
|
||||
fi
|
||||
fi
|
||||
|
||||
# bionic in Android < 4.1 doesn't support PIE
|
||||
# On OSX, the linker defaults to building PIE programs when targetting OSX 10.7+,
|
||||
# but not when targetting OSX < 10.7. OSX < 10.7 doesn't support running PIE
|
||||
# programs, so as long as support for OSX 10.6 is kept, we can't build PIE.
|
||||
# Even after dropping 10.6 support, MOZ_PIE would not be useful since it's the
|
||||
# default (and clang says the -pie option is not used).
|
||||
# On other Unix systems, some file managers (Nautilus) can't start PIE programs
|
||||
if test -n "$gonkdir" && test "$ANDROID_VERSION" -ge 16; then
|
||||
MOZ_PIE=1
|
||||
else
|
||||
MOZ_PIE=
|
||||
fi
|
||||
|
||||
MOZ_ARG_ENABLE_BOOL(pie,
|
||||
[ --enable-pie Enable Position Independent Executables],
|
||||
MOZ_PIE=1,
|
||||
MOZ_PIE= )
|
||||
|
||||
if test "$GNU_CC" -a -n "$MOZ_PIE"; then
|
||||
AC_MSG_CHECKING([for PIE support])
|
||||
_SAVE_LDFLAGS=$LDFLAGS
|
||||
LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS -pie"
|
||||
AC_TRY_LINK(,,AC_MSG_RESULT([yes])
|
||||
[MOZ_PROGRAM_LDFLAGS="$MOZ_PROGRAM_LDFLAGS -pie"],
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([--enable-pie requires PIE support from the linker.]))
|
||||
LDFLAGS=$_SAVE_LDFLAGS
|
||||
fi
|
||||
|
||||
AC_SUBST(MOZ_PROGRAM_LDFLAGS)
|
||||
|
||||
dnl ASan assumes no symbols are being interposed, and when that happens,
|
||||
dnl it's not happy with it. Unconveniently, since Firefox is exporting
|
||||
dnl libffi symbols and Gtk+3 pulls system libffi via libwayland-client,
|
||||
dnl system libffi interposes libffi symbols that ASan assumes are in
|
||||
dnl libxul, so it barfs about buffer overflows.
|
||||
dnl Using -Wl,-Bsymbolic ensures no exported symbol can be interposed.
|
||||
if test -n "$GCC_USE_GNU_LD"; then
|
||||
case "$LDFLAGS" in
|
||||
*-fsanitize=address*)
|
||||
LDFLAGS="$LDFLAGS -Wl,-Bsymbolic"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
])
|
||||
1454
build/autoconf/config.guess
vendored
Normal file
1454
build/autoconf/config.guess
vendored
Normal file
File diff suppressed because it is too large
Load diff
182
build/autoconf/config.status.m4
Normal file
182
build/autoconf/config.status.m4
Normal file
|
|
@ -0,0 +1,182 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
dnl For use in AC_SUBST replacement
|
||||
define([MOZ_DIVERSION_SUBST], 11)
|
||||
|
||||
dnl Replace AC_SUBST to store values in a format suitable for python.
|
||||
dnl The necessary comma after the tuple can't be put here because it
|
||||
dnl can mess around with things like:
|
||||
dnl AC_SOMETHING(foo,AC_SUBST(),bar)
|
||||
define([AC_SUBST],
|
||||
[ifdef([AC_SUBST_SET_$1], [m4_fatal([Cannot use AC_SUBST and AC_SUBST_SET on the same variable ($1)])],
|
||||
[ifdef([AC_SUBST_LIST_$1], [m4_fatal([Cannot use AC_SUBST and AC_SUBST_LIST on the same variable ($1)])],
|
||||
[ifdef([AC_SUBST_$1], ,
|
||||
[define([AC_SUBST_$1], )dnl
|
||||
AC_DIVERT_PUSH(MOZ_DIVERSION_SUBST)dnl
|
||||
(''' $1 ''', r''' [$]$1 ''')
|
||||
AC_DIVERT_POP()dnl
|
||||
])])])])
|
||||
|
||||
dnl Like AC_SUBST, but makes the value available as a set in python,
|
||||
dnl with values got from the value of the environment variable, split on
|
||||
dnl whitespaces.
|
||||
define([AC_SUBST_SET],
|
||||
[ifdef([AC_SUBST_$1], [m4_fatal([Cannot use AC_SUBST and AC_SUBST_SET on the same variable ($1)])],
|
||||
[ifdef([AC_SUBST_LIST$1], [m4_fatal([Cannot use AC_SUBST_LIST and AC_SUBST_SET on the same variable ($1)])],
|
||||
[ifdef([AC_SUBST_SET_$1], ,
|
||||
[define([AC_SUBST_SET_$1], )dnl
|
||||
AC_DIVERT_PUSH(MOZ_DIVERSION_SUBST)dnl
|
||||
(''' $1 ''', unique_list(r''' [$]$1 '''.split()))
|
||||
AC_DIVERT_POP()dnl
|
||||
])])])])
|
||||
|
||||
dnl Like AC_SUBST, but makes the value available as a list in python,
|
||||
dnl with values got from the value of the environment variable, split on
|
||||
dnl whitespaces.
|
||||
define([AC_SUBST_LIST],
|
||||
[ifdef([AC_SUBST_$1], [m4_fatal([Cannot use AC_SUBST and AC_SUBST_LIST on the same variable ($1)])],
|
||||
[ifdef([AC_SUBST_SET_$1], [m4_fatal([Cannot use AC_SUBST_SET and AC_SUBST_LIST on the same variable ($1)])],
|
||||
[ifdef([AC_SUBST_LIST_$1], ,
|
||||
[define([AC_SUBST_LIST_$1], )dnl
|
||||
AC_DIVERT_PUSH(MOZ_DIVERSION_SUBST)dnl
|
||||
(''' $1 ''', list(r''' [$]$1 '''.split()))
|
||||
AC_DIVERT_POP()dnl
|
||||
])])])])
|
||||
|
||||
dnl Ignore AC_SUBSTs for variables we don't have use for but that autoconf
|
||||
dnl itself exports.
|
||||
define([AC_SUBST_CFLAGS], )
|
||||
define([AC_SUBST_CPPFLAGS], )
|
||||
define([AC_SUBST_CXXFLAGS], )
|
||||
define([AC_SUBST_FFLAGS], )
|
||||
define([AC_SUBST_DEFS], )
|
||||
define([AC_SUBST_LDFLAGS], )
|
||||
define([AC_SUBST_LIBS], )
|
||||
|
||||
dnl Wrap AC_DEFINE to store values in a format suitable for python.
|
||||
dnl autoconf's AC_DEFINE still needs to be used to fill confdefs.h,
|
||||
dnl which is #included during some compile checks.
|
||||
dnl The necessary comma after the tuple can't be put here because it
|
||||
dnl can mess around with things like:
|
||||
dnl AC_SOMETHING(foo,AC_DEFINE(),bar)
|
||||
define([_MOZ_AC_DEFINE], defn([AC_DEFINE]))
|
||||
define([AC_DEFINE],
|
||||
[cat >> confdefs.pytmp <<\EOF
|
||||
(''' $1 ''', ifelse($#, 2, [r''' $2 '''], $#, 3, [r''' $2 '''], ' 1 '))
|
||||
EOF
|
||||
ifelse($#, 2, _MOZ_AC_DEFINE([$1], [$2]), $#, 3, _MOZ_AC_DEFINE([$1], [$2], [$3]),_MOZ_AC_DEFINE([$1]))dnl
|
||||
])
|
||||
|
||||
dnl Wrap AC_DEFINE_UNQUOTED to store values in a format suitable for
|
||||
dnl python.
|
||||
define([_MOZ_AC_DEFINE_UNQUOTED], defn([AC_DEFINE_UNQUOTED]))
|
||||
define([AC_DEFINE_UNQUOTED],
|
||||
[cat >> confdefs.pytmp <<EOF
|
||||
(''' $1 ''', ifelse($#, 2, [r''' $2 '''], $#, 3, [r''' $2 '''], ' 1 '))
|
||||
EOF
|
||||
ifelse($#, 2, _MOZ_AC_DEFINE_UNQUOTED($1, $2), $#, 3, _MOZ_AC_DEFINE_UNQUOTED($1, $2, $3),_MOZ_AC_DEFINE_UNQUOTED($1))dnl
|
||||
])
|
||||
|
||||
dnl Replace AC_OUTPUT to create and call a python config.status
|
||||
define([MOZ_CREATE_CONFIG_STATUS],
|
||||
[dnl Top source directory in Windows format (as opposed to msys format).
|
||||
WIN_TOP_SRC=
|
||||
case "$host_os" in
|
||||
mingw*)
|
||||
WIN_TOP_SRC=`cd $srcdir; pwd -W`
|
||||
;;
|
||||
esac
|
||||
AC_SUBST(WIN_TOP_SRC)
|
||||
|
||||
dnl Used in all Makefile.in files
|
||||
top_srcdir=$srcdir
|
||||
AC_SUBST(top_srcdir)
|
||||
|
||||
dnl Picked from autoconf 2.13
|
||||
trap '' 1 2 15
|
||||
AC_CACHE_SAVE
|
||||
|
||||
trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
|
||||
: ${CONFIG_STATUS=./config.data}
|
||||
|
||||
dnl We're going to need [ ] for python syntax.
|
||||
changequote(<<<, >>>)dnl
|
||||
echo creating $CONFIG_STATUS
|
||||
|
||||
cat > $CONFIG_STATUS <<EOF
|
||||
def unique_list(l):
|
||||
result = []
|
||||
for i in l:
|
||||
if l not in result:
|
||||
result.append(i)
|
||||
return result
|
||||
|
||||
dnl All defines and substs are stored with an additional space at the beginning
|
||||
dnl and at the end of the string, to avoid any problem with values starting or
|
||||
dnl ending with quotes.
|
||||
defines = [
|
||||
EOF
|
||||
|
||||
dnl confdefs.pytmp contains AC_DEFINEs, in the expected format, but
|
||||
dnl lacks the final comma (see above).
|
||||
sed 's/$/,/' confdefs.pytmp >> $CONFIG_STATUS
|
||||
rm confdefs.pytmp confdefs.h
|
||||
|
||||
cat >> $CONFIG_STATUS <<\EOF
|
||||
]
|
||||
|
||||
substs = [
|
||||
EOF
|
||||
|
||||
dnl The MOZ_DIVERSION_SUBST output diversion contains AC_SUBSTs, in the
|
||||
dnl expected format, but lacks the final comma (see above).
|
||||
sed 's/$/,/' >> $CONFIG_STATUS <<EOF
|
||||
undivert(MOZ_DIVERSION_SUBST)dnl
|
||||
EOF
|
||||
|
||||
dnl Add in the output from the subconfigure script
|
||||
for ac_subst_arg in $_subconfigure_ac_subst_args; do
|
||||
variable='$'$ac_subst_arg
|
||||
echo " (''' $ac_subst_arg ''', r''' `eval echo $variable` ''')," >> $CONFIG_STATUS
|
||||
done
|
||||
|
||||
cat >> $CONFIG_STATUS <<\EOF
|
||||
]
|
||||
|
||||
dnl List of AC_DEFINEs that aren't to be exposed in ALLDEFINES
|
||||
non_global_defines = [
|
||||
EOF
|
||||
|
||||
if test -n "$_NON_GLOBAL_ACDEFINES"; then
|
||||
for var in $_NON_GLOBAL_ACDEFINES; do
|
||||
echo " '$var'," >> $CONFIG_STATUS
|
||||
done
|
||||
fi
|
||||
|
||||
cat >> $CONFIG_STATUS <<EOF
|
||||
]
|
||||
|
||||
flags = [
|
||||
undivert(MOZ_DIVERSION_ARGS)dnl
|
||||
]
|
||||
EOF
|
||||
|
||||
changequote([, ])
|
||||
])
|
||||
|
||||
define([m4_fatal],[
|
||||
errprint([$1
|
||||
])
|
||||
m4exit(1)
|
||||
])
|
||||
|
||||
define([AC_OUTPUT], [ifelse($#_$1, 1_, [MOZ_CREATE_CONFIG_STATUS()
|
||||
MOZ_RUN_CONFIG_STATUS()],
|
||||
[m4_fatal([Use CONFIGURE_SUBST_FILES in moz.build files to create substituted files.])]
|
||||
)])
|
||||
|
||||
define([AC_CONFIG_HEADER],
|
||||
[m4_fatal([Use CONFIGURE_DEFINE_FILES in moz.build files to produce header files.])
|
||||
])
|
||||
1815
build/autoconf/config.sub
vendored
Normal file
1815
build/autoconf/config.sub
vendored
Normal file
File diff suppressed because it is too large
Load diff
66
build/autoconf/expandlibs.m4
Normal file
66
build/autoconf/expandlibs.m4
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
AC_DEFUN([MOZ_EXPAND_LIBS],
|
||||
[
|
||||
dnl ========================================================
|
||||
dnl =
|
||||
dnl = Check what kind of list files are supported by the
|
||||
dnl = linker
|
||||
dnl =
|
||||
dnl ========================================================
|
||||
|
||||
AC_CACHE_CHECK(what kind of list files are supported by the linker,
|
||||
EXPAND_LIBS_LIST_STYLE,
|
||||
[echo "int main() {return 0;}" > conftest.${ac_ext}
|
||||
if AC_TRY_COMMAND(${CC-cc} -o conftest.${OBJ_SUFFIX} -c $CFLAGS $CPPFLAGS conftest.${ac_ext} 1>&5) && test -s conftest.${OBJ_SUFFIX}; then
|
||||
echo "INPUT(conftest.${OBJ_SUFFIX})" > conftest.list
|
||||
if AC_TRY_COMMAND(${CC-cc} -o conftest${ac_exeext} $LDFLAGS conftest.list $LIBS 1>&5) && test -s conftest${ac_exeext}; then
|
||||
EXPAND_LIBS_LIST_STYLE=linkerscript
|
||||
else
|
||||
echo "conftest.${OBJ_SUFFIX}" > conftest.list
|
||||
dnl -filelist is for the OS X linker. We need to try -filelist
|
||||
dnl first because clang understands @file, but may pass an
|
||||
dnl oversized argument list to the linker depending on the
|
||||
dnl contents of @file.
|
||||
if AC_TRY_COMMAND(${CC-cc} -o conftest${ac_exeext} $LDFLAGS [-Wl,-filelist,conftest.list] $LIBS 1>&5) && test -s conftest${ac_exeext}; then
|
||||
EXPAND_LIBS_LIST_STYLE=filelist
|
||||
elif AC_TRY_COMMAND(${CC-cc} -o conftest${ac_exeext} $LDFLAGS @conftest.list $LIBS 1>&5) && test -s conftest${ac_exeext}; then
|
||||
EXPAND_LIBS_LIST_STYLE=list
|
||||
else
|
||||
EXPAND_LIBS_LIST_STYLE=none
|
||||
fi
|
||||
fi
|
||||
else
|
||||
dnl We really don't expect to get here, but just in case
|
||||
AC_ERROR([couldn't compile a simple C file])
|
||||
fi
|
||||
rm -rf conftest*])
|
||||
|
||||
LIBS_DESC_SUFFIX=desc
|
||||
AC_SUBST(LIBS_DESC_SUFFIX)
|
||||
AC_SUBST(EXPAND_LIBS_LIST_STYLE)
|
||||
|
||||
if test "$GCC_USE_GNU_LD"; then
|
||||
AC_CACHE_CHECK(what kind of ordering can be done with the linker,
|
||||
EXPAND_LIBS_ORDER_STYLE,
|
||||
[> conftest.order
|
||||
_SAVE_LDFLAGS="$LDFLAGS"
|
||||
LDFLAGS="${LDFLAGS} -Wl,--section-ordering-file,conftest.order"
|
||||
AC_TRY_LINK([], [],
|
||||
EXPAND_LIBS_ORDER_STYLE=section-ordering-file,
|
||||
EXPAND_LIBS_ORDER_STYLE=)
|
||||
LDFLAGS="$_SAVE_LDFLAGS"
|
||||
if test -z "$EXPAND_LIBS_ORDER_STYLE"; then
|
||||
if AC_TRY_COMMAND(${CC-cc} ${DSO_LDOPTS} ${LDFLAGS} -o ${DLL_PREFIX}conftest${DLL_SUFFIX} -Wl,--verbose 2> /dev/null | sed -n '/^===/,/^===/p' | grep '\.text'); then
|
||||
EXPAND_LIBS_ORDER_STYLE=linkerscript
|
||||
else
|
||||
EXPAND_LIBS_ORDER_STYLE=none
|
||||
fi
|
||||
rm -f ${DLL_PREFIX}conftest${DLL_SUFFIX}
|
||||
fi])
|
||||
fi
|
||||
AC_SUBST(EXPAND_LIBS_ORDER_STYLE)
|
||||
|
||||
])
|
||||
44
build/autoconf/frameptr.m4
Normal file
44
build/autoconf/frameptr.m4
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
dnl Set MOZ_FRAMEPTR_FLAGS to the flags that should be used for enabling or
|
||||
dnl disabling frame pointers in this architecture based on the configure
|
||||
dnl options
|
||||
|
||||
AC_DEFUN([MOZ_SET_FRAMEPTR_FLAGS], [
|
||||
case "$target" in
|
||||
*android*)
|
||||
unwind_tables="-funwind-tables"
|
||||
;;
|
||||
esac
|
||||
if test "$GNU_CC"; then
|
||||
MOZ_ENABLE_FRAME_PTR="-fno-omit-frame-pointer $unwind_tables"
|
||||
MOZ_DISABLE_FRAME_PTR="-fomit-frame-pointer"
|
||||
if test "$CPU_ARCH" = arm; then
|
||||
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54398
|
||||
MOZ_ENABLE_FRAME_PTR="$unwind_tables"
|
||||
fi
|
||||
else
|
||||
case "$target" in
|
||||
dnl Oy (Frame-Pointer Omission) is only support on x86 compilers
|
||||
*-mingw32*)
|
||||
MOZ_ENABLE_FRAME_PTR="-Oy-"
|
||||
MOZ_DISABLE_FRAME_PTR="-Oy"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# If we are debugging, profiling, using sanitizers, or on win32 we want a
|
||||
# frame pointer.
|
||||
if test -z "$MOZ_OPTIMIZE" -o \
|
||||
-n "$MOZ_PROFILING" -o \
|
||||
-n "$MOZ_DEBUG" -o \
|
||||
-n "$MOZ_MSAN" -o \
|
||||
-n "$MOZ_ASAN" -o \
|
||||
"$OS_ARCH:$CPU_ARCH" = "WINNT:x86"; then
|
||||
MOZ_FRAMEPTR_FLAGS="$MOZ_ENABLE_FRAME_PTR"
|
||||
else
|
||||
MOZ_FRAMEPTR_FLAGS="$MOZ_DISABLE_FRAME_PTR"
|
||||
fi
|
||||
])
|
||||
82
build/autoconf/hooks.m4
Normal file
82
build/autoconf/hooks.m4
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
dnl Wrap AC_INIT_PREPARE to add the above trap.
|
||||
define([_MOZ_AC_INIT_PREPARE], defn([AC_INIT_PREPARE]))
|
||||
define([AC_INIT_PREPARE],
|
||||
[_MOZ_AC_INIT_PREPARE($1)
|
||||
|
||||
test "x$prefix" = xNONE && prefix=$ac_default_prefix
|
||||
# Let make expand exec_prefix.
|
||||
test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
|
||||
|
||||
> subconfigures
|
||||
> skip_subconfigures
|
||||
])
|
||||
|
||||
define([AC_OUTPUT_SUBDIRS],
|
||||
[for moz_config_dir in $1; do
|
||||
_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
|
||||
case "$moz_config_dir" in
|
||||
*:*)
|
||||
objdir=$(echo $moz_config_dir | awk -F: '{print [$]2}')
|
||||
;;
|
||||
*)
|
||||
objdir=$moz_config_dir
|
||||
;;
|
||||
esac
|
||||
dnl Because config.status, storing AC_SUBSTs, is written before any
|
||||
dnl subconfigure runs, we need to use a file. Moreover, some subconfigures
|
||||
dnl are started from a subshell, and variable modifications from a subshell
|
||||
dnl wouldn't be preserved.
|
||||
echo $objdir >> subconfigures
|
||||
|
||||
dumpenv="true | "
|
||||
case "$host" in
|
||||
*-mingw*)
|
||||
_CONFIG_SHELL=$(cd $(dirname $_CONFIG_SHELL); pwd -W)/$(basename $_CONFIG_SHELL)
|
||||
if test ! -e "$_CONFIG_SHELL" -a -e "${_CONFIG_SHELL}.exe"; then
|
||||
_CONFIG_SHELL="${_CONFIG_SHELL}.exe"
|
||||
fi
|
||||
dnl Yes, this is horrible. But since msys doesn't preserve environment
|
||||
dnl variables and command line arguments as they are when transitioning
|
||||
dnl from msys (this script) to python (below), we have to resort to hacks,
|
||||
dnl storing the environment and command line arguments from a msys process
|
||||
dnl (perl), and reading it from python.
|
||||
dumpenv="$PERL $_topsrcdir/build/win32/dumpenv4python.pl $ac_configure_args | "
|
||||
;;
|
||||
esac
|
||||
|
||||
eval $dumpenv $PYTHON $_topsrcdir/build/subconfigure.py --prepare "$srcdir" "$moz_config_dir" "$_CONFIG_SHELL" $ac_configure_args ifelse($2,,,--cache-file="$2")
|
||||
|
||||
dnl Actual subconfigure execution happens in MOZ_RUN_CONFIG_STATUS
|
||||
done
|
||||
])
|
||||
|
||||
define([AC_OUTPUT_SUBDIRS_NOW],
|
||||
[
|
||||
for moz_config_dir_ in $1; do
|
||||
AC_OUTPUT_SUBDIRS($moz_config_dir_,$2)
|
||||
tail -1 subconfigures >> skip_subconfigures
|
||||
MOZ_RUN_SUBCONFIGURES(`tail -1 skip_subconfigures`)
|
||||
done
|
||||
])
|
||||
|
||||
define([MOZ_RUN_SUBCONFIGURES],
|
||||
[dnl Execute subconfigure, unless --no-recursion was passed to configure.
|
||||
if test "$no_recursion" != yes; then
|
||||
trap '' EXIT
|
||||
if ! $PYTHON $_topsrcdir/build/subconfigure.py $1; then
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
define([MOZ_RUN_ALL_SUBCONFIGURES],[
|
||||
MOZ_RUN_SUBCONFIGURES([--list subconfigures --skip skip_subconfigures])
|
||||
])
|
||||
|
||||
dnl Print error messages in config.log as well as stderr
|
||||
define([AC_MSG_ERROR],
|
||||
[{ echo "configure: error: $1" 1>&2; echo "configure: error: $1" 1>&5; exit 1; }])
|
||||
23
build/autoconf/hotfixes.m4
Normal file
23
build/autoconf/hotfixes.m4
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
dnl Set of hotfixes to address issues in autoconf 2.13
|
||||
|
||||
dnl Divert AC_CHECK_FUNC so that the #includes it uses can't interfere
|
||||
dnl with the function it tests.
|
||||
dnl So, when testing e.g. posix_memalign, any #include that AC_CHECK_FUNC
|
||||
dnl prints is replaced with:
|
||||
dnl #define posix_memalign innocuous_posix_memalign
|
||||
dnl #include "theinclude"
|
||||
dnl #undef posix_memalign
|
||||
dnl This avoids double declaration of that function when the header normally
|
||||
dnl declares it, while the test itself is just expecting the function not to be
|
||||
dnl declared at all, and declares it differently (which doesn't matter for the
|
||||
dnl test itself).
|
||||
dnl More recent versions of autoconf are essentially doing this.
|
||||
define([_AC_CHECK_FUNC],defn([AC_CHECK_FUNC]))dnl
|
||||
define([AC_CHECK_FUNC], [dnl
|
||||
patsubst(_AC_CHECK_FUNC($@), [#include.*$], [#define $1 innocuous_$1
|
||||
\&
|
||||
#undef $1])])dnl
|
||||
111
build/autoconf/icu.m4
Normal file
111
build/autoconf/icu.m4
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
dnl Set the MOZ_ICU_VERSION variable to denote the current version of the
|
||||
dnl ICU library, as well as a few other things.
|
||||
|
||||
AC_DEFUN([MOZ_CONFIG_ICU], [
|
||||
|
||||
ICU_LIB_NAMES=
|
||||
MOZ_SYSTEM_ICU=
|
||||
MOZ_ARG_WITH_BOOL(system-icu,
|
||||
[ --with-system-icu
|
||||
Use system ICU (located with pkgconfig)],
|
||||
MOZ_SYSTEM_ICU=1)
|
||||
|
||||
if test -n "$MOZ_SYSTEM_ICU"; then
|
||||
PKG_CHECK_MODULES(MOZ_ICU, icu-i18n >= 58.1)
|
||||
CFLAGS="$CFLAGS $MOZ_ICU_CFLAGS"
|
||||
CXXFLAGS="$CXXFLAGS $MOZ_ICU_CFLAGS"
|
||||
fi
|
||||
|
||||
AC_SUBST(MOZ_SYSTEM_ICU)
|
||||
|
||||
MOZ_ARG_WITH_STRING(intl-api,
|
||||
[ --with-intl-api, --with-intl-api=build, --without-intl-api
|
||||
Determine the status of the ECMAScript Internationalization API. The first
|
||||
(or lack of any of these) builds and exposes the API. The second builds it
|
||||
but doesn't use ICU or expose the API to script. The third doesn't build
|
||||
ICU at all.],
|
||||
_INTL_API=$withval)
|
||||
|
||||
ENABLE_INTL_API=
|
||||
EXPOSE_INTL_API=
|
||||
case "$_INTL_API" in
|
||||
no)
|
||||
;;
|
||||
build)
|
||||
ENABLE_INTL_API=1
|
||||
;;
|
||||
yes)
|
||||
ENABLE_INTL_API=1
|
||||
EXPOSE_INTL_API=1
|
||||
;;
|
||||
*)
|
||||
AC_MSG_ERROR([Invalid value passed to --with-intl-api: $_INTL_API])
|
||||
;;
|
||||
esac
|
||||
|
||||
if test -n "$ENABLE_INTL_API"; then
|
||||
USE_ICU=1
|
||||
fi
|
||||
|
||||
if test -n "$EXPOSE_INTL_API"; then
|
||||
AC_DEFINE(EXPOSE_INTL_API)
|
||||
fi
|
||||
|
||||
if test -n "$ENABLE_INTL_API"; then
|
||||
AC_DEFINE(ENABLE_INTL_API)
|
||||
fi
|
||||
|
||||
dnl Settings for the implementation of the ECMAScript Internationalization API
|
||||
if test -n "$USE_ICU"; then
|
||||
icudir="$_topsrcdir/intl/icu/source"
|
||||
if test ! -d "$icudir"; then
|
||||
icudir="$_topsrcdir/../../intl/icu/source"
|
||||
if test ! -d "$icudir"; then
|
||||
AC_MSG_ERROR([Cannot find the ICU directory])
|
||||
fi
|
||||
fi
|
||||
|
||||
version=`sed -n 's/^[[[:space:]]]*#[[:space:]]*define[[:space:]][[:space:]]*U_ICU_VERSION_MAJOR_NUM[[:space:]][[:space:]]*\([0-9][0-9]*\)[[:space:]]*$/\1/p' "$icudir/common/unicode/uvernum.h"`
|
||||
if test x"$version" = x; then
|
||||
AC_MSG_ERROR([cannot determine icu version number from uvernum.h header file $lineno])
|
||||
fi
|
||||
MOZ_ICU_VERSION="$version"
|
||||
|
||||
# TODO: the l is actually endian-dependent
|
||||
# We could make this set as 'l' or 'b' for little or big, respectively,
|
||||
# but we'd need to check in a big-endian version of the file.
|
||||
ICU_DATA_FILE="icudt${version}l.dat"
|
||||
|
||||
dnl We won't build ICU data as a separate file when building
|
||||
dnl JS standalone so that embedders don't have to deal with it.
|
||||
dnl We also don't do it on Windows because sometimes the file goes
|
||||
dnl missing -- possibly due to overzealous antivirus software? --
|
||||
dnl which prevents the browser from starting up :(
|
||||
if test -z "$JS_STANDALONE" -a -z "$MOZ_SYSTEM_ICU" -a "$OS_TARGET" != WINNT -a "$MOZ_WIDGET_TOOLKIT" != "android"; then
|
||||
MOZ_ICU_DATA_ARCHIVE=1
|
||||
else
|
||||
MOZ_ICU_DATA_ARCHIVE=
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(MOZ_ICU_VERSION)
|
||||
AC_SUBST(ENABLE_INTL_API)
|
||||
AC_SUBST(USE_ICU)
|
||||
AC_SUBST(ICU_DATA_FILE)
|
||||
AC_SUBST(MOZ_ICU_DATA_ARCHIVE)
|
||||
|
||||
if test -n "$USE_ICU" -a -z "$MOZ_SYSTEM_ICU"; then
|
||||
if test -z "$YASM" -a -z "$GNU_AS" -a "$COMPILE_ENVIRONMENT"; then
|
||||
AC_MSG_ERROR([Building ICU requires either yasm or a GNU assembler. If you do not have either of those available for this platform you must use --without-intl-api])
|
||||
fi
|
||||
dnl We build ICU as a static library.
|
||||
AC_DEFINE(U_STATIC_IMPLEMENTATION)
|
||||
dnl Source files that use ICU should have control over which parts of the ICU
|
||||
dnl namespace they want to use.
|
||||
AC_DEFINE(U_USING_ICU_NAMESPACE,0)
|
||||
fi
|
||||
])
|
||||
123
build/autoconf/install-sh
Normal file
123
build/autoconf/install-sh
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
#!/bin/sh
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
|
||||
#
|
||||
# install - install a program, script, or datafile
|
||||
# This comes from X11R5; it is not part of GNU.
|
||||
#
|
||||
# $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $
|
||||
#
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch.
|
||||
#
|
||||
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit="${DOITPROG-}"
|
||||
|
||||
|
||||
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||
|
||||
mvprog="${MVPROG-mv}"
|
||||
cpprog="${CPPROG-cp}"
|
||||
chmodprog="${CHMODPROG-chmod}"
|
||||
chownprog="${CHOWNPROG-chown}"
|
||||
chgrpprog="${CHGRPPROG-chgrp}"
|
||||
stripprog="${STRIPPROG-strip}"
|
||||
rmprog="${RMPROG-rm}"
|
||||
|
||||
instcmd="$mvprog"
|
||||
chmodcmd=""
|
||||
chowncmd=""
|
||||
chgrpcmd=""
|
||||
stripcmd=""
|
||||
rmcmd="$rmprog -f"
|
||||
mvcmd="$mvprog"
|
||||
src=""
|
||||
dst=""
|
||||
|
||||
while [ x"$1" != x ]; do
|
||||
case $1 in
|
||||
-c) instcmd="$cpprog"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-m) chmodcmd="$chmodprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-s) stripcmd="$stripprog"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
*) if [ x"$src" = x ]
|
||||
then
|
||||
src=$1
|
||||
else
|
||||
dst=$1
|
||||
fi
|
||||
shift
|
||||
continue;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ x"$src" = x ]
|
||||
then
|
||||
echo "install: no input file specified"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ x"$dst" = x ]
|
||||
then
|
||||
echo "install: no destination specified"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
# If destination is a directory, append the input filename; if your system
|
||||
# does not like double slashes in filenames, you may need to add some logic
|
||||
|
||||
if [ -d $dst ]
|
||||
then
|
||||
dst="$dst"/`basename $src`
|
||||
fi
|
||||
|
||||
# Make a temp file name in the proper directory.
|
||||
|
||||
dstdir=`dirname $dst`
|
||||
dsttmp=$dstdir/#inst.$$#
|
||||
|
||||
# Move or copy the file name to the temp name
|
||||
|
||||
$doit $instcmd $src $dsttmp
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; fi
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; fi
|
||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; fi
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; fi
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
|
||||
$doit $rmcmd $dst
|
||||
$doit $mvcmd $dsttmp $dst
|
||||
|
||||
|
||||
exit 0
|
||||
108
build/autoconf/ios.m4
Normal file
108
build/autoconf/ios.m4
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
AC_DEFUN([MOZ_IOS_PATH_PROG],
|
||||
[
|
||||
changequote({,})
|
||||
_prog_name=ifelse($2, {}, `echo $1 | tr "[:upper:]" "[:lower:]"`, $2)
|
||||
changequote([,])
|
||||
AC_CACHE_CHECK([for $_prog_name in iOS SDK],
|
||||
ac_cv_ios_path_$1,
|
||||
[
|
||||
_path=`xcrun --sdk $ios_sdk --find $_prog_name 2>/dev/null`
|
||||
_res=$?
|
||||
if test $_res -ne 0; then
|
||||
AC_MSG_ERROR([Could not find '$_prog_name' in the iOS SDK])
|
||||
fi
|
||||
ac_cv_ios_path_$1=$_path
|
||||
])
|
||||
$1="${ac_cv_ios_path_$1}$3"
|
||||
])
|
||||
|
||||
AC_DEFUN([MOZ_IOS_SDK],
|
||||
[
|
||||
|
||||
MOZ_ARG_WITH_STRING(ios-sdk,
|
||||
[ --with-ios-sdk=TYPE
|
||||
Type of iOS SDK to use (iphonesimulator, iphoneos)
|
||||
and optionally version (like iphoneos8.2)],
|
||||
ios_sdk=$withval)
|
||||
|
||||
MOZ_ARG_ENABLE_STRING(ios-target,
|
||||
[ --enable-ios-target=VER (default=8.0)
|
||||
Set the minimum iOS version needed at runtime],
|
||||
[_IOS_TARGET=$enableval])
|
||||
_IOS_TARGET_DEFAULT=8.0
|
||||
|
||||
case "$target" in
|
||||
arm*-apple-darwin*)
|
||||
if test -z "$ios_sdk" -o "$ios_sdk" = "yes"; then
|
||||
ios_sdk=iphoneos
|
||||
fi
|
||||
case "$ios_sdk" in
|
||||
iphoneos*)
|
||||
ios_target_arg="-miphoneos-version-min"
|
||||
;;
|
||||
*)
|
||||
AC_MSG_ERROR([Only 'iphoneos' SDKs are valid when targeting iOS device, don't know what to do with '$ios_sdk'.])
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*-apple-darwin*)
|
||||
ios_target_arg="-mios-simulator-version-min"
|
||||
case "$ios_sdk" in
|
||||
# Empty SDK is okay, this might be an OS X desktop build.
|
||||
""|iphonesimulator*)
|
||||
;;
|
||||
# Default to iphonesimulator
|
||||
yes)
|
||||
ios_sdk=iphonesimulator
|
||||
;;
|
||||
*)
|
||||
AC_MSG_ERROR([Only 'iphonesimulator' SDKs are valid when targeting iOS simulator.])
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
if test -n "$ios_sdk"; then
|
||||
if test -z "$_IOS_TARGET"; then
|
||||
_IOS_TARGET=$_IOS_TARGET_DEFAULT
|
||||
ios_target_arg="${ios_target_arg}=${_IOS_TARGET}"
|
||||
fi
|
||||
# Ensure that xcrun knows where this SDK is.
|
||||
ios_sdk_path=`xcrun --sdk $ios_sdk --show-sdk-path 2>/dev/null`
|
||||
_ret=$?
|
||||
if test $_ret -ne 0; then
|
||||
AC_MSG_ERROR([iOS SDK '$ios_sdk' could not be found.])
|
||||
fi
|
||||
MOZ_IOS=1
|
||||
export HOST_CC=clang
|
||||
export HOST_CXX=clang++
|
||||
# Add isysroot, arch, and ios target arguments
|
||||
case "$target_cpu" in
|
||||
arm*)
|
||||
ARGS="-arch armv7"
|
||||
;;
|
||||
*)
|
||||
# Unfortunately simulator builds need this.
|
||||
export CROSS_COMPILE=1
|
||||
;;
|
||||
esac
|
||||
ARGS=" $ARGS -isysroot $ios_sdk_path $ios_target_arg"
|
||||
# Now find our tools
|
||||
MOZ_IOS_PATH_PROG(CC, clang, $ARGS)
|
||||
MOZ_IOS_PATH_PROG(CXX, clang++, $ARGS)
|
||||
export CPP="$CC -E"
|
||||
export LD="$CXX"
|
||||
MOZ_IOS_PATH_PROG(AR)
|
||||
MOZ_IOS_PATH_PROG(AS, as, $ARGS)
|
||||
MOZ_IOS_PATH_PROG(OTOOL)
|
||||
MOZ_IOS_PATH_PROG(STRIP)
|
||||
export PKG_CONFIG_PATH=${ios_sdk_path}/usr/lib/pkgconfig/
|
||||
fi
|
||||
|
||||
AC_SUBST(MOZ_IOS)
|
||||
])
|
||||
114
build/autoconf/jemalloc.m4
Normal file
114
build/autoconf/jemalloc.m4
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
AC_DEFUN([MOZ_SUBCONFIGURE_JEMALLOC], [
|
||||
|
||||
if test "$MOZ_BUILD_APP" != js -o -n "$JS_STANDALONE"; then
|
||||
|
||||
# Run jemalloc configure script
|
||||
|
||||
if test -z "$MOZ_SYSTEM_JEMALLOC" -a "$MOZ_MEMORY" && test -n "$MOZ_JEMALLOC4" -o -n "$MOZ_REPLACE_MALLOC"; then
|
||||
ac_configure_args="--build=$build --host=$target --enable-stats --with-jemalloc-prefix=je_ --disable-valgrind"
|
||||
# We're using memalign for _aligned_malloc in memory/build/mozmemory_wrap.c
|
||||
# on Windows, so just export memalign on all platforms.
|
||||
ac_configure_args="$ac_configure_args ac_cv_func_memalign=yes"
|
||||
if test -n "$MOZ_REPLACE_MALLOC"; then
|
||||
# When using replace_malloc, we always want valloc exported from jemalloc.
|
||||
ac_configure_args="$ac_configure_args ac_cv_func_valloc=yes"
|
||||
if test "${OS_ARCH}" = Darwin; then
|
||||
# We also need to enable pointer validation on Mac because jemalloc's
|
||||
# zone allocator is not used.
|
||||
ac_configure_args="$ac_configure_args --enable-ivsalloc"
|
||||
fi
|
||||
fi
|
||||
if test -n "$MOZ_JEMALLOC4"; then
|
||||
case "${OS_ARCH}" in
|
||||
WINNT|Darwin)
|
||||
# We want jemalloc functions to be kept hidden on both Mac and Windows
|
||||
# See memory/build/mozmemory_wrap.h for details.
|
||||
ac_configure_args="$ac_configure_args --without-export"
|
||||
;;
|
||||
esac
|
||||
if test "${OS_ARCH}" = WINNT; then
|
||||
# Lazy lock initialization doesn't play well with lazy linking of
|
||||
# mozglue.dll on Windows XP (leads to startup crash), so disable it.
|
||||
ac_configure_args="$ac_configure_args --disable-lazy-lock"
|
||||
|
||||
# 64-bit Windows builds require a minimum 16-byte alignment.
|
||||
if test -n "$HAVE_64BIT_BUILD"; then
|
||||
ac_configure_args="$ac_configure_args --with-lg-tiny-min=4"
|
||||
fi
|
||||
fi
|
||||
elif test "${OS_ARCH}" = Darwin; then
|
||||
# When building as a replace-malloc lib, disabling the zone allocator
|
||||
# forces to use pthread_atfork.
|
||||
ac_configure_args="$ac_configure_args --disable-zone-allocator"
|
||||
fi
|
||||
_MANGLE="malloc posix_memalign aligned_alloc calloc realloc free memalign valloc malloc_usable_size"
|
||||
JEMALLOC_WRAPPER=
|
||||
if test -z "$MOZ_REPLACE_MALLOC"; then
|
||||
case "$OS_ARCH" in
|
||||
Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
|
||||
MANGLE=$_MANGLE
|
||||
;;
|
||||
esac
|
||||
elif test -z "$MOZ_JEMALLOC4"; then
|
||||
MANGLE=$_MANGLE
|
||||
JEMALLOC_WRAPPER=replace_
|
||||
fi
|
||||
if test -n "$MANGLE"; then
|
||||
MANGLED=
|
||||
for mangle in ${MANGLE}; do
|
||||
if test -n "$MANGLED"; then
|
||||
MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle,$MANGLED"
|
||||
else
|
||||
MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle"
|
||||
fi
|
||||
done
|
||||
ac_configure_args="$ac_configure_args --with-mangling=$MANGLED"
|
||||
fi
|
||||
unset CONFIG_FILES
|
||||
if test -z "$MOZ_TLS"; then
|
||||
ac_configure_args="$ac_configure_args --disable-tls"
|
||||
fi
|
||||
EXTRA_CFLAGS="$CFLAGS"
|
||||
for var in AS CC CXX CPP LD AR RANLIB STRIP CPPFLAGS EXTRA_CFLAGS LDFLAGS; do
|
||||
ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'"
|
||||
done
|
||||
|
||||
# jemalloc's configure assumes that if you have CFLAGS set at all, you set
|
||||
# all the flags necessary to configure jemalloc, which is not likely to be
|
||||
# the case on Windows if someone is building Firefox with flags set in
|
||||
# their mozconfig.
|
||||
if test "$_MSC_VER"; then
|
||||
ac_configure_args="$ac_configure_args CFLAGS="
|
||||
fi
|
||||
|
||||
# Force disable DSS support in jemalloc.
|
||||
ac_configure_args="$ac_configure_args ac_cv_func_sbrk=false"
|
||||
|
||||
# Make Linux builds munmap freed chunks instead of recycling them.
|
||||
ac_configure_args="$ac_configure_args --enable-munmap"
|
||||
|
||||
# Disable cache oblivious behavior that appears to have a performance
|
||||
# impact on Firefox.
|
||||
ac_configure_args="$ac_configure_args --disable-cache-oblivious"
|
||||
|
||||
if ! test -e memory/jemalloc; then
|
||||
mkdir -p memory/jemalloc
|
||||
fi
|
||||
|
||||
# jemalloc's configure runs git to determine the version. But when building
|
||||
# from a gecko git clone, the git commands it uses is going to pick gecko's
|
||||
# information, not jemalloc's, which is useless. So pretend we don't have git
|
||||
# at all. That will make jemalloc's configure pick the in-tree VERSION file.
|
||||
(PATH="$srcdir/memory/jemalloc/helper:$PATH";
|
||||
AC_OUTPUT_SUBDIRS(memory/jemalloc/src)
|
||||
) || exit 1
|
||||
ac_configure_args="$_SUBDIR_CONFIG_ARGS"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
])
|
||||
19
build/autoconf/lto.m4
Normal file
19
build/autoconf/lto.m4
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
dnl check if the build is using lto. This is really primitive and only detects llvm based
|
||||
dnl compilers right now.
|
||||
AC_DEFUN([MOZ_DOING_LTO],
|
||||
[
|
||||
cat > conftest.c <<EOF
|
||||
int foo = 1;
|
||||
EOF
|
||||
$1=no
|
||||
if ${CC-cc} ${CFLAGS} -S conftest.c -o conftest.s >/dev/null 2>&1; then
|
||||
if grep '^target triple =' conftest.s; then
|
||||
$1=yes
|
||||
fi
|
||||
fi
|
||||
rm -f conftest.[cs]
|
||||
])
|
||||
32
build/autoconf/mozheader.m4
Normal file
32
build/autoconf/mozheader.m4
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
dnl MOZ_CHECK_HEADER(HEADER-FILE, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, INCLUDES]]])
|
||||
AC_DEFUN([MOZ_CHECK_HEADER],
|
||||
[ dnl Do the transliteration at runtime so arg 1 can be a shell variable.
|
||||
ac_safe=`echo "$1" | sed 'y%./+-%__p_%'`
|
||||
AC_MSG_CHECKING([for $1])
|
||||
AC_CACHE_VAL(ac_cv_header_$ac_safe,
|
||||
[ AC_TRY_COMPILE([$4
|
||||
#include <$1>], ,
|
||||
eval "ac_cv_header_$ac_safe=yes",
|
||||
eval "ac_cv_header_$ac_safe=no") ])
|
||||
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
|
||||
AC_MSG_RESULT(yes)
|
||||
ifelse([$2], , :, [$2])
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
ifelse([$3], , , [$3])
|
||||
fi
|
||||
])
|
||||
|
||||
dnl MOZ_CHECK_HEADERS(HEADER-FILE... [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, INCLUDES]]])
|
||||
AC_DEFUN([MOZ_CHECK_HEADERS],
|
||||
[ for ac_hdr in $1
|
||||
do
|
||||
MOZ_CHECK_HEADER($ac_hdr,
|
||||
[ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
|
||||
AC_DEFINE_UNQUOTED($ac_tr_hdr) $2], $3, [$4])
|
||||
done
|
||||
])
|
||||
42
build/autoconf/mozprog.m4
Normal file
42
build/autoconf/mozprog.m4
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
AC_DEFUN([MOZ_PROG_CHECKMSYS],
|
||||
[AC_REQUIRE([AC_INIT_BINSH])dnl
|
||||
if test `uname -s | grep -c MINGW 2>/dev/null` != "0"; then
|
||||
msyshost=1
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([MOZ_PATH_PROG],
|
||||
[ AC_PATH_PROG($1,$2,$3,$4)
|
||||
if test "$msyshost"; then
|
||||
case "[$]$1" in
|
||||
/*)
|
||||
tmp_DIRNAME=`dirname "[$]$1"`
|
||||
tmp_BASENAME=`basename "[$]$1"`
|
||||
tmp_PWD=`cd "$tmp_DIRNAME" && pwd -W`
|
||||
$1="$tmp_PWD/$tmp_BASENAME"
|
||||
if test -e "[$]$1.exe"; then
|
||||
$1="[$]$1.exe"
|
||||
fi
|
||||
esac
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([MOZ_PATH_PROGS],
|
||||
[ AC_PATH_PROGS($1,$2,$3,$4)
|
||||
if test "$msyshost"; then
|
||||
case "[$]$1" in
|
||||
/*)
|
||||
tmp_DIRNAME=`dirname "[$]$1"`
|
||||
tmp_BASENAME=`basename "[$]$1"`
|
||||
tmp_PWD=`cd "$tmp_DIRNAME" && pwd -W`
|
||||
$1="$tmp_PWD/$tmp_BASENAME"
|
||||
if test -e "[$]$1.exe"; then
|
||||
$1="[$]$1.exe"
|
||||
fi
|
||||
esac
|
||||
fi
|
||||
])
|
||||
200
build/autoconf/nspr-build.m4
Normal file
200
build/autoconf/nspr-build.m4
Normal file
|
|
@ -0,0 +1,200 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
AC_DEFUN([MOZ_CONFIG_NSPR], [
|
||||
|
||||
ifelse([$1],,define(CONFIGURING_JS,yes))
|
||||
|
||||
dnl Possible ways this can be called:
|
||||
dnl from toplevel configure:
|
||||
dnl JS_STANDALONE= MOZ_BUILD_APP!=js
|
||||
dnl from js/src/configure invoked by toplevel configure:
|
||||
dnl JS_STANDALONE= MOZ_BUILD_APP=js
|
||||
dnl from standalone js/src/configure:
|
||||
dnl JS_STANDALONE=1 MOZ_BUILD_APP=js
|
||||
|
||||
dnl ========================================================
|
||||
dnl = Find the right NSPR to use.
|
||||
dnl ========================================================
|
||||
MOZ_ARG_WITH_STRING(nspr-cflags,
|
||||
[ --with-nspr-cflags=FLAGS
|
||||
Pass FLAGS to CC when building code that uses NSPR.
|
||||
Use this when there's no accurate nspr-config
|
||||
script available. This is the case when building
|
||||
SpiderMonkey as part of the Mozilla tree: the
|
||||
top-level configure script computes NSPR flags
|
||||
that accomodate the quirks of that environment.],
|
||||
NSPR_CFLAGS=$withval)
|
||||
MOZ_ARG_WITH_STRING(nspr-libs,
|
||||
[ --with-nspr-libs=LIBS Pass LIBS to LD when linking code that uses NSPR.
|
||||
See --with-nspr-cflags for more details.],
|
||||
NSPR_LIBS=$withval)
|
||||
|
||||
ifdef([CONFIGURING_JS],[
|
||||
MOZ_ARG_ENABLE_BOOL(nspr-build,
|
||||
[ --enable-nspr-build Build NSPR from source tree],
|
||||
MOZ_BUILD_NSPR=1,
|
||||
MOZ_BUILD_NSPR=)
|
||||
])
|
||||
|
||||
if test "$MOZ_BUILD_APP" != js || test -n "$JS_STANDALONE"; then
|
||||
_IS_OUTER_CONFIGURE=1
|
||||
fi
|
||||
|
||||
MOZ_ARG_WITH_BOOL(system-nspr,
|
||||
[ --with-system-nspr Use an NSPR that is already built and installed.
|
||||
Use the 'nspr-config' script in the current path,
|
||||
or look for the script in the directories given with
|
||||
--with-nspr-exec-prefix or --with-nspr-prefix.
|
||||
(Those flags are only checked if you specify
|
||||
--with-system-nspr.)],
|
||||
_USE_SYSTEM_NSPR=1 )
|
||||
|
||||
JS_POSIX_NSPR=unset
|
||||
ifdef([CONFIGURING_JS],[
|
||||
if test -n "$JS_STANDALONE"; then
|
||||
case "$target" in
|
||||
*linux*|*darwin*|*dragonfly*|*freebsd*|*netbsd*|*openbsd*)
|
||||
if test -z "$_HAS_NSPR"; then
|
||||
JS_POSIX_NSPR_DEFAULT=1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
MOZ_ARG_ENABLE_BOOL(posix-nspr-emulation,
|
||||
[ --enable-posix-nspr-emulation
|
||||
Enable emulation of NSPR for POSIX systems],
|
||||
JS_POSIX_NSPR=1,
|
||||
JS_POSIX_NSPR=)
|
||||
])
|
||||
|
||||
dnl Pass at most one of
|
||||
dnl --with-system-nspr
|
||||
dnl --with-nspr-cflags/libs
|
||||
dnl --enable-nspr-build
|
||||
dnl --enable-posix-nspr-emulation
|
||||
|
||||
AC_MSG_CHECKING([NSPR selection])
|
||||
nspr_opts=
|
||||
which_nspr=default
|
||||
if test -n "$_USE_SYSTEM_NSPR"; then
|
||||
nspr_opts="x$nspr_opts"
|
||||
which_nspr="system"
|
||||
fi
|
||||
if test -n "$NSPR_CFLAGS" -o -n "$NSPR_LIBS"; then
|
||||
nspr_opts="x$nspr_opts"
|
||||
which_nspr="command-line"
|
||||
fi
|
||||
if test -n "$MOZ_BUILD_NSPR"; then
|
||||
nspr_opts="x$nspr_opts"
|
||||
which_nspr="source-tree"
|
||||
fi
|
||||
if test "$JS_POSIX_NSPR" = unset; then
|
||||
JS_POSIX_NSPR=
|
||||
else
|
||||
nspr_opts="x$nspr_opts"
|
||||
which_nspr="posix-wrapper"
|
||||
fi
|
||||
|
||||
if test -z "$nspr_opts"; then
|
||||
if test "$MOZ_BUILD_APP" != js; then
|
||||
dnl Toplevel configure defaults to using nsprpub from the source tree
|
||||
MOZ_BUILD_NSPR=1
|
||||
which_nspr="source-tree"
|
||||
else
|
||||
dnl JS configure defaults to emulated NSPR if available, falling back
|
||||
dnl to nsprpub.
|
||||
JS_POSIX_NSPR="$JS_POSIX_NSPR_DEFAULT"
|
||||
if test -z "$JS_POSIX_NSPR"; then
|
||||
MOZ_BUILD_NSPR=1
|
||||
which_nspr="source-tree"
|
||||
else
|
||||
which_nspr="posix-wrapper"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -z "$nspr_opts" || test "$nspr_opts" = x; then
|
||||
AC_MSG_RESULT($which_nspr)
|
||||
else
|
||||
AC_MSG_ERROR([only one way of using NSPR may be selected. See 'configure --help'.])
|
||||
fi
|
||||
|
||||
AC_SUBST(MOZ_BUILD_NSPR)
|
||||
|
||||
if test "$MOZ_BUILD_APP" = js; then
|
||||
if test "$JS_POSIX_NSPR" = 1; then
|
||||
AC_DEFINE(JS_POSIX_NSPR)
|
||||
fi
|
||||
AC_SUBST(JS_POSIX_NSPR)
|
||||
fi
|
||||
|
||||
# A (sub)configure invoked by the toplevel configure will always receive
|
||||
# --with-nspr-libs on the command line. It will never need to figure out
|
||||
# anything itself.
|
||||
if test -n "$_IS_OUTER_CONFIGURE"; then
|
||||
|
||||
if test -n "$_USE_SYSTEM_NSPR"; then
|
||||
AM_PATH_NSPR($NSPR_MINVER, [MOZ_SYSTEM_NSPR=1], [AC_MSG_ERROR([you do not have NSPR installed or your version is older than $NSPR_MINVER.])])
|
||||
fi
|
||||
|
||||
if test -n "$MOZ_SYSTEM_NSPR" -o -n "$NSPR_CFLAGS" -o -n "$NSPR_LIBS"; then
|
||||
_SAVE_CFLAGS=$CFLAGS
|
||||
CFLAGS="$CFLAGS $NSPR_CFLAGS"
|
||||
AC_TRY_COMPILE([#include "prtypes.h"],
|
||||
[#ifndef PR_STATIC_ASSERT
|
||||
#error PR_STATIC_ASSERT not defined or requires including prtypes.h
|
||||
#endif],
|
||||
,
|
||||
AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT or including prtypes.h does not provide it]))
|
||||
AC_TRY_COMPILE([#include "prtypes.h"],
|
||||
[#ifndef PR_UINT64
|
||||
#error PR_UINT64 not defined or requires including prtypes.h
|
||||
#endif],
|
||||
,
|
||||
AC_MSG_ERROR([system NSPR does not support PR_UINT64 or including prtypes.h does not provide it]))
|
||||
CFLAGS=$_SAVE_CFLAGS
|
||||
elif test -z "$JS_POSIX_NSPR"; then
|
||||
NSPR_INCLUDE_DIR="${DIST}/include/nspr"
|
||||
NSPR_CFLAGS="-I${NSPR_INCLUDE_DIR}"
|
||||
if test -n "$GNU_CC"; then
|
||||
if test -n "$MOZ_FOLD_LIBS"; then
|
||||
NSPR_LIB_DIR=${DIST}/lib
|
||||
else
|
||||
NSPR_LIB_DIR=${DIST}/bin
|
||||
fi
|
||||
NSPR_LIBS="-L${NSPR_LIB_DIR} -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
|
||||
else
|
||||
# NSS needs actual static libs to link to, and this is where they are.
|
||||
NSPR_LIBS="${DIST}/lib/nspr${NSPR_VERSION}.lib ${DIST}/lib/plc${NSPR_VERSION}.lib ${DIST}/lib/plds${NSPR_VERSION}.lib "
|
||||
NSPR_LIB_DIR="${DIST}/lib"
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST_LIST(NSPR_CFLAGS)
|
||||
AC_SUBST(NSPR_INCLUDE_DIR)
|
||||
AC_SUBST(NSPR_LIB_DIR)
|
||||
|
||||
PKGCONF_REQUIRES_PRIVATE="Requires.private: nspr"
|
||||
if test -n "$MOZ_SYSTEM_NSPR"; then
|
||||
_SAVE_CFLAGS=$CFLAGS
|
||||
CFLAGS="$CFLAGS $NSPR_CFLAGS"
|
||||
AC_TRY_COMPILE([#include "prlog.h"],
|
||||
[#ifndef PR_STATIC_ASSERT
|
||||
#error PR_STATIC_ASSERT not defined
|
||||
#endif],
|
||||
,
|
||||
AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT]))
|
||||
CFLAGS=$_SAVE_CFLAGS
|
||||
# piggy back on $MOZ_SYSTEM_NSPR to set a variable for the nspr check for js.pc
|
||||
PKGCONF_REQUIRES_PRIVATE="Requires.private: nspr >= $NSPR_MINVER"
|
||||
elif test -n "$JS_POSIX_NSPR"; then
|
||||
PKGCONF_REQUIRES_PRIVATE=
|
||||
fi
|
||||
AC_SUBST([PKGCONF_REQUIRES_PRIVATE])
|
||||
|
||||
fi # _IS_OUTER_CONFIGURE
|
||||
|
||||
])
|
||||
110
build/autoconf/nspr.m4
Normal file
110
build/autoconf/nspr.m4
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
# -*- tab-width: 4; -*-
|
||||
# Configure paths for NSPR
|
||||
# Public domain - Chris Seawood <cls@seawood.org> 2001-04-05
|
||||
# Based upon gtk.m4 (also PD) by Owen Taylor
|
||||
|
||||
dnl AM_PATH_NSPR([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
|
||||
dnl Test for NSPR, and define NSPR_CFLAGS and NSPR_LIBS
|
||||
dnl
|
||||
dnl If the nspr-config script is available, use it to find the
|
||||
dnl appropriate CFLAGS and LIBS, and to check for the required
|
||||
dnl version, and run ACTION-IF-FOUND.
|
||||
dnl
|
||||
dnl Otherwise, if NO_NSPR_CONFIG_SYSTEM_VERSION is set, we use it,
|
||||
dnl NO_NSPR_CONFIG_SYSTEM_CFLAGS, and NO_NSPR_CONFIG_SYSTEM_LIBS to
|
||||
dnl provide default values, and run ACTION-IF-FOUND. (Some systems
|
||||
dnl ship NSPR without nspr-config, but can glean the appropriate flags
|
||||
dnl and version.)
|
||||
dnl
|
||||
dnl Otherwise, run ACTION-IF-NOT-FOUND.
|
||||
AC_DEFUN([AM_PATH_NSPR],
|
||||
[dnl
|
||||
|
||||
AC_ARG_WITH(nspr-prefix,
|
||||
[ --with-nspr-prefix=PFX Prefix where NSPR is installed],
|
||||
nspr_config_prefix="$withval",
|
||||
nspr_config_prefix="")
|
||||
|
||||
AC_ARG_WITH(nspr-exec-prefix,
|
||||
[ --with-nspr-exec-prefix=PFX
|
||||
Exec prefix where NSPR is installed],
|
||||
nspr_config_exec_prefix="$withval",
|
||||
nspr_config_exec_prefix="")
|
||||
|
||||
if test -n "$nspr_config_exec_prefix"; then
|
||||
nspr_config_args="$nspr_config_args --exec-prefix=$nspr_config_exec_prefix"
|
||||
if test -z "$NSPR_CONFIG"; then
|
||||
NSPR_CONFIG=$nspr_config_exec_prefix/bin/nspr-config
|
||||
fi
|
||||
fi
|
||||
if test -n "$nspr_config_prefix"; then
|
||||
nspr_config_args="$nspr_config_args --prefix=$nspr_config_prefix"
|
||||
if test -z "$NSPR_CONFIG"; then
|
||||
NSPR_CONFIG=$nspr_config_prefix/bin/nspr-config
|
||||
fi
|
||||
fi
|
||||
|
||||
unset ac_cv_path_NSPR_CONFIG
|
||||
AC_PATH_PROG(NSPR_CONFIG, nspr-config, no)
|
||||
min_nspr_version=ifelse([$1], ,4.0.0,$1)
|
||||
AC_MSG_CHECKING(for NSPR - version >= $min_nspr_version)
|
||||
|
||||
no_nspr=""
|
||||
if test "$NSPR_CONFIG" != "no"; then
|
||||
NSPR_CFLAGS=`$NSPR_CONFIG $nspr_config_args --cflags`
|
||||
NSPR_LIBS=`$NSPR_CONFIG $nspr_config_args --libs`
|
||||
NSPR_VERSION_STRING=`$NSPR_CONFIG $nspr_config_args --version`
|
||||
elif test -n "${NO_NSPR_CONFIG_SYSTEM_VERSION}"; then
|
||||
NSPR_CFLAGS="${NO_NSPR_CONFIG_SYSTEM_CFLAGS}"
|
||||
NSPR_LIBS="${NO_NSPR_CONFIG_SYSTEM_LDFLAGS}"
|
||||
NSPR_VERSION_STRING="$NO_NSPR_CONFIG_SYSTEM_VERSION"
|
||||
else
|
||||
no_nspr="yes"
|
||||
fi
|
||||
|
||||
if test -z "$no_nspr"; then
|
||||
nspr_config_major_version=`echo $NSPR_VERSION_STRING | \
|
||||
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\(\.\([[0-9]]*\)\)\{0,1\}/\1/'`
|
||||
nspr_config_minor_version=`echo $NSPR_VERSION_STRING | \
|
||||
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\(\.\([[0-9]]*\)\)\{0,1\}/\2/'`
|
||||
nspr_config_micro_version=`echo $NSPR_VERSION_STRING | \
|
||||
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\(\.\([[0-9]]*\)\)\{0,1\}/\4/'`
|
||||
if test -z "$nspr_config_micro_version"; then
|
||||
nspr_config_micro_version="0"
|
||||
fi
|
||||
|
||||
min_nspr_major_version=`echo $min_nspr_version | \
|
||||
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\(\.\([[0-9]]*\)\)\{0,1\}/\1/'`
|
||||
min_nspr_minor_version=`echo $min_nspr_version | \
|
||||
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\(\.\([[0-9]]*\)\)\{0,1\}/\2/'`
|
||||
min_nspr_micro_version=`echo $min_nspr_version | \
|
||||
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\(\.\([[0-9]]*\)\)\{0,1\}/\4/'`
|
||||
if test -z "$min_nspr_micro_version"; then
|
||||
min_nspr_micro_version="0"
|
||||
fi
|
||||
|
||||
if test "$nspr_config_major_version" -ne "$min_nspr_major_version"; then
|
||||
no_nspr="yes"
|
||||
elif test "$nspr_config_major_version" -eq "$min_nspr_major_version" &&
|
||||
test "$nspr_config_minor_version" -lt "$min_nspr_minor_version"; then
|
||||
no_nspr="yes"
|
||||
elif test "$nspr_config_major_version" -eq "$min_nspr_major_version" &&
|
||||
test "$nspr_config_minor_version" -eq "$min_nspr_minor_version" &&
|
||||
test "$nspr_config_micro_version" -lt "$min_nspr_micro_version"; then
|
||||
no_nspr="yes"
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -z "$no_nspr"; then
|
||||
AC_MSG_RESULT(yes)
|
||||
ifelse([$2], , :, [$2])
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
ifelse([$3], , :, [$3])
|
||||
fi
|
||||
|
||||
|
||||
AC_SUBST_LIST(NSPR_CFLAGS)
|
||||
AC_SUBST_LIST(NSPR_LIBS)
|
||||
|
||||
])
|
||||
91
build/autoconf/nss.m4
Normal file
91
build/autoconf/nss.m4
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
# -*- tab-width: 4; -*-
|
||||
# Configure paths for NSS
|
||||
# Public domain - Chris Seawood <cls@seawood.org> 2001-04-05
|
||||
# Based upon gtk.m4 (also PD) by Owen Taylor
|
||||
|
||||
dnl AM_PATH_NSS([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
|
||||
dnl Test for NSS, and define NSS_CFLAGS and NSS_LIBS
|
||||
AC_DEFUN([AM_PATH_NSS],
|
||||
[dnl
|
||||
|
||||
AC_ARG_WITH(nss-prefix,
|
||||
[ --with-nss-prefix=PFX Prefix where NSS is installed],
|
||||
nss_config_prefix="$withval",
|
||||
nss_config_prefix="")
|
||||
|
||||
AC_ARG_WITH(nss-exec-prefix,
|
||||
[ --with-nss-exec-prefix=PFX
|
||||
Exec prefix where NSS is installed],
|
||||
nss_config_exec_prefix="$withval",
|
||||
nss_config_exec_prefix="")
|
||||
|
||||
if test -n "$nss_config_exec_prefix"; then
|
||||
nss_config_args="$nss_config_args --exec-prefix=$nss_config_exec_prefix"
|
||||
if test -z "$NSS_CONFIG"; then
|
||||
NSS_CONFIG=$nss_config_exec_prefix/bin/nss-config
|
||||
fi
|
||||
fi
|
||||
if test -n "$nss_config_prefix"; then
|
||||
nss_config_args="$nss_config_args --prefix=$nss_config_prefix"
|
||||
if test -z "$NSS_CONFIG"; then
|
||||
NSS_CONFIG=$nss_config_prefix/bin/nss-config
|
||||
fi
|
||||
fi
|
||||
|
||||
unset ac_cv_path_NSS_CONFIG
|
||||
AC_PATH_PROG(NSS_CONFIG, nss-config, no)
|
||||
min_nss_version=ifelse([$1], ,3.0.0,$1)
|
||||
AC_MSG_CHECKING(for NSS - version >= $min_nss_version)
|
||||
|
||||
no_nss=""
|
||||
if test "$NSS_CONFIG" = "no"; then
|
||||
no_nss="yes"
|
||||
else
|
||||
NSS_CFLAGS=`$NSS_CONFIG $nss_config_args --cflags`
|
||||
NSS_LIBS=`$NSS_CONFIG $nss_config_args --libs`
|
||||
|
||||
nss_config_major_version=`$NSS_CONFIG $nss_config_args --version | \
|
||||
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\(\.\([[0-9]]*\)\)\{0,1\}/\1/'`
|
||||
nss_config_minor_version=`$NSS_CONFIG $nss_config_args --version | \
|
||||
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\(\.\([[0-9]]*\)\)\{0,1\}/\2/'`
|
||||
nss_config_micro_version=`$NSS_CONFIG $nss_config_args --version | \
|
||||
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\(\.\([[0-9]]*\)\)\{0,1\}/\4/'`
|
||||
if test -z "$nss_config_micro_version"; then
|
||||
nss_config_micro_version="0"
|
||||
fi
|
||||
|
||||
min_nss_major_version=`echo $min_nss_version | \
|
||||
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\(\.\([[0-9]]*\)\)\{0,1\}/\1/'`
|
||||
min_nss_minor_version=`echo $min_nss_version | \
|
||||
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\(\.\([[0-9]]*\)\)\{0,1\}/\2/'`
|
||||
min_nss_micro_version=`echo $min_nss_version | \
|
||||
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\(\.\([[0-9]]*\)\)\{0,1\}/\4/'`
|
||||
if test -z "$min_nss_micro_version"; then
|
||||
min_nss_micro_version="0"
|
||||
fi
|
||||
|
||||
if test "$nss_config_major_version" -lt "$min_nss_major_version"; then
|
||||
no_nss="yes"
|
||||
elif test "$nss_config_major_version" -eq "$min_nss_major_version" &&
|
||||
test "$nss_config_minor_version" -lt "$min_nss_minor_version"; then
|
||||
no_nss="yes"
|
||||
elif test "$nss_config_major_version" -eq "$min_nss_major_version" &&
|
||||
test "$nss_config_minor_version" -eq "$min_nss_minor_version" &&
|
||||
test "$nss_config_micro_version" -lt "$min_nss_micro_version"; then
|
||||
no_nss="yes"
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -z "$no_nss"; then
|
||||
AC_MSG_RESULT(yes)
|
||||
ifelse([$2], , :, [$2])
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
ifelse([$3], , :, [$3])
|
||||
fi
|
||||
|
||||
|
||||
AC_SUBST_LIST(NSS_CFLAGS)
|
||||
AC_SUBST_LIST(NSS_LIBS)
|
||||
|
||||
])
|
||||
61
build/autoconf/pkg.m4
Normal file
61
build/autoconf/pkg.m4
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
# PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
|
||||
# defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
|
||||
# also defines GSTUFF_PKG_ERRORS on error
|
||||
# PKG_CONFIG is set by Python configure, if it is empty here it could not
|
||||
# be found.
|
||||
AC_DEFUN([PKG_CHECK_MODULES],
|
||||
[succeeded=no
|
||||
|
||||
if test -z "$PKG_CONFIG"; then
|
||||
echo "*** The pkg-config script could not be found. Make sure it is"
|
||||
echo "*** in your path, or set the PKG_CONFIG environment variable"
|
||||
echo "*** to the full path to pkg-config."
|
||||
echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
|
||||
else
|
||||
PKG_CONFIG_MIN_VERSION=0.9.0
|
||||
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
|
||||
AC_MSG_CHECKING(for $2)
|
||||
|
||||
if $PKG_CONFIG --exists "$2" ; then
|
||||
AC_MSG_RESULT(yes)
|
||||
succeeded=yes
|
||||
|
||||
AC_MSG_CHECKING($1_CFLAGS)
|
||||
$1_CFLAGS=`$PKG_CONFIG --cflags "$2"`
|
||||
AC_MSG_RESULT($$1_CFLAGS)
|
||||
|
||||
AC_MSG_CHECKING($1_LIBS)
|
||||
## Remove evil flags like -Wl,--export-dynamic
|
||||
$1_LIBS="`$PKG_CONFIG --libs \"$2\" |sed s/-Wl,--export-dynamic//g`"
|
||||
AC_MSG_RESULT($$1_LIBS)
|
||||
else
|
||||
$1_CFLAGS=""
|
||||
$1_LIBS=""
|
||||
## If we have a custom action on failure, don't print errors, but
|
||||
## do set a variable so people can do so.
|
||||
$1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
|
||||
ifelse([$4], ,echo $$1_PKG_ERRORS,)
|
||||
fi
|
||||
|
||||
AC_SUBST_LIST($1_CFLAGS)
|
||||
AC_SUBST_LIST($1_LIBS)
|
||||
else
|
||||
echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
|
||||
echo "*** See http://www.freedesktop.org/software/pkgconfig"
|
||||
fi
|
||||
fi
|
||||
|
||||
if test $succeeded = yes; then
|
||||
ifelse([$3], , :, [$3])
|
||||
else
|
||||
if test "$COMPILE_ENVIRONMENT"; then
|
||||
ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4])
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
106
build/autoconf/sanitize.m4
Normal file
106
build/autoconf/sanitize.m4
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
AC_DEFUN([MOZ_CONFIG_SANITIZE], [
|
||||
|
||||
dnl ========================================================
|
||||
dnl = Use Address Sanitizer
|
||||
dnl ========================================================
|
||||
MOZ_ARG_ENABLE_BOOL(address-sanitizer,
|
||||
[ --enable-address-sanitizer Enable Address Sanitizer (default=no)],
|
||||
MOZ_ASAN=1,
|
||||
MOZ_ASAN= )
|
||||
if test -n "$MOZ_ASAN"; then
|
||||
MOZ_LLVM_HACKS=1
|
||||
if test -n "$CLANG_CL"; then
|
||||
# Look for the ASan runtime binary
|
||||
if test "$CPU_ARCH" = "x86_64"; then
|
||||
MOZ_CLANG_RT_ASAN_LIB=clang_rt.asan_dynamic-x86_64.dll
|
||||
else
|
||||
MOZ_CLANG_RT_ASAN_LIB=clang_rt.asan_dynamic-i386.dll
|
||||
fi
|
||||
# We use MOZ_PATH_PROG in order to get a Windows style path.
|
||||
MOZ_PATH_PROG(MOZ_CLANG_RT_ASAN_LIB_PATH, $MOZ_CLANG_RT_ASAN_LIB)
|
||||
if test -z "$MOZ_CLANG_RT_ASAN_LIB_PATH"; then
|
||||
AC_MSG_ERROR([Couldn't find $MOZ_CLANG_RT_ASAN_LIB. It should be available in the same location as clang-cl.])
|
||||
fi
|
||||
AC_SUBST(MOZ_CLANG_RT_ASAN_LIB_PATH)
|
||||
# Suppressing errors in recompiled code.
|
||||
if test "$OS_ARCH" = "WINNT"; then
|
||||
CFLAGS="-fsanitize-blacklist=$_topsrcdir/build/sanitizers/asan_blacklist_win.txt $CFLAGS"
|
||||
CXXFLAGS="-fsanitize-blacklist=$_topsrcdir/build/sanitizers/asan_blacklist_win.txt $CXXFLAGS"
|
||||
fi
|
||||
fi
|
||||
CFLAGS="-fsanitize=address $CFLAGS"
|
||||
CXXFLAGS="-fsanitize=address $CXXFLAGS"
|
||||
if test -z "$CLANG_CL"; then
|
||||
LDFLAGS="-fsanitize=address $LDFLAGS"
|
||||
fi
|
||||
AC_DEFINE(MOZ_ASAN)
|
||||
MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer)
|
||||
fi
|
||||
AC_SUBST(MOZ_ASAN)
|
||||
|
||||
dnl ========================================================
|
||||
dnl = Use Memory Sanitizer
|
||||
dnl ========================================================
|
||||
MOZ_ARG_ENABLE_BOOL(memory-sanitizer,
|
||||
[ --enable-memory-sanitizer Enable Memory Sanitizer (default=no)],
|
||||
MOZ_MSAN=1,
|
||||
MOZ_MSAN= )
|
||||
if test -n "$MOZ_MSAN"; then
|
||||
MOZ_LLVM_HACKS=1
|
||||
CFLAGS="-fsanitize=memory -fsanitize-memory-track-origins $CFLAGS"
|
||||
CXXFLAGS="-fsanitize=memory -fsanitize-memory-track-origins $CXXFLAGS"
|
||||
if test -z "$CLANG_CL"; then
|
||||
LDFLAGS="-fsanitize=memory -fsanitize-memory-track-origins $LDFLAGS"
|
||||
fi
|
||||
AC_DEFINE(MOZ_MSAN)
|
||||
MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer)
|
||||
fi
|
||||
AC_SUBST(MOZ_MSAN)
|
||||
|
||||
dnl ========================================================
|
||||
dnl = Use Thread Sanitizer
|
||||
dnl ========================================================
|
||||
MOZ_ARG_ENABLE_BOOL(thread-sanitizer,
|
||||
[ --enable-thread-sanitizer Enable Thread Sanitizer (default=no)],
|
||||
MOZ_TSAN=1,
|
||||
MOZ_TSAN= )
|
||||
if test -n "$MOZ_TSAN"; then
|
||||
MOZ_LLVM_HACKS=1
|
||||
CFLAGS="-fsanitize=thread $CFLAGS"
|
||||
CXXFLAGS="-fsanitize=thread $CXXFLAGS"
|
||||
if test -z "$CLANG_CL"; then
|
||||
LDFLAGS="-fsanitize=thread $LDFLAGS"
|
||||
fi
|
||||
AC_DEFINE(MOZ_TSAN)
|
||||
MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer)
|
||||
fi
|
||||
AC_SUBST(MOZ_TSAN)
|
||||
|
||||
# The LLVM symbolizer is used by all sanitizers
|
||||
AC_SUBST(LLVM_SYMBOLIZER)
|
||||
|
||||
dnl ========================================================
|
||||
dnl = Enable hacks required for LLVM instrumentations
|
||||
dnl ========================================================
|
||||
MOZ_ARG_ENABLE_BOOL(llvm-hacks,
|
||||
[ --enable-llvm-hacks Enable workarounds required for several LLVM instrumentations (default=no)],
|
||||
MOZ_LLVM_HACKS=1,
|
||||
MOZ_LLVM_HACKS= )
|
||||
if test -n "$MOZ_LLVM_HACKS"; then
|
||||
MOZ_NO_WLZDEFS=1
|
||||
MOZ_CFLAGS_NSS=1
|
||||
fi
|
||||
AC_SUBST(MOZ_NO_WLZDEFS)
|
||||
AC_SUBST(MOZ_CFLAGS_NSS)
|
||||
|
||||
dnl ========================================================
|
||||
dnl = Test for whether the compiler is compatible with the
|
||||
dnl = given sanitize options.
|
||||
dnl ========================================================
|
||||
AC_TRY_LINK(,,,AC_MSG_ERROR([compiler is incompatible with sanitize options]))
|
||||
|
||||
])
|
||||
46
build/autoconf/subconfigure.m4
Normal file
46
build/autoconf/subconfigure.m4
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
dnl We are not running in a real autoconf environment. So we're using real m4
|
||||
dnl here, not the crazier environment that autoconf provides.
|
||||
|
||||
dnl Autoconf expects [] for quotes; give it to them
|
||||
changequote([, ])
|
||||
|
||||
dnl AC_DEFUN is provided to use instead of define in autoconf. Provide it too.
|
||||
define([AC_DEFUN], [define($1, [$2])])
|
||||
|
||||
dnl AC_ARG_ENABLE(FEATURE, HELP-STRING, IF-TRUE[, IF-FALSE])
|
||||
dnl We have to ignore the help string due to how help works in autoconf...
|
||||
AC_DEFUN([MOZ_AC_ARG_ENABLE],
|
||||
[#] Check whether --enable-[$1] or --disable-[$1] was given.
|
||||
[if test "[${enable_]patsubst([$1], -, _)+set}" = set; then
|
||||
enableval="[$enable_]patsubst([$1], -, _)"
|
||||
$3
|
||||
ifelse([$4], , , [else
|
||||
$4
|
||||
])dnl
|
||||
fi
|
||||
])
|
||||
|
||||
dnl AC_MSG_ERROR(error-description)
|
||||
AC_DEFUN([AC_MSG_ERROR], [{ echo "configure: error: $1" 1>&2; exit 1; }])
|
||||
|
||||
AC_DEFUN([AC_MSG_WARN], [ echo "configure: warning: $1" 1>&2 ])
|
||||
|
||||
dnl Add the variable to the list of substitution variables
|
||||
AC_DEFUN([AC_SUBST],
|
||||
[
|
||||
_subconfigure_ac_subst_args="$_subconfigure_ac_subst_args $1"
|
||||
])
|
||||
|
||||
dnl Override for AC_DEFINE.
|
||||
AC_DEFUN([AC_DEFINE],
|
||||
[
|
||||
cat >>confdefs.h <<\EOF
|
||||
[#define] $1 ifelse($#, 2, [$2], $#, 3, [$2], 1)
|
||||
EOF
|
||||
cat >> confdefs.pytmp <<\EOF
|
||||
(''' $1 ''', ifelse($#, 2, [r''' $2 '''], $#, 3, [r''' $2 '''], ' 1 '))
|
||||
EOF
|
||||
])
|
||||
|
||||
dnl AC_OUTPUT_SUBDIRS(subdirectory)
|
||||
AC_DEFUN([AC_OUTPUT_SUBDIRS], [do_output_subdirs "$1"])
|
||||
126
build/autoconf/toolchain.m4
Normal file
126
build/autoconf/toolchain.m4
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
dnl Several autoconf functions AC_REQUIRE AC_PROG_CPP/AC_PROG_CXXCPP
|
||||
dnl or AC_HEADER_STDC, meaning they are called even when we don't call
|
||||
dnl them explicitly.
|
||||
dnl However, theses checks are not necessary and python configure sets
|
||||
dnl the corresponding variables already, so just skip those tests
|
||||
dnl entirely.
|
||||
define([AC_PROG_CPP],[])
|
||||
define([AC_PROG_CXXCPP],[])
|
||||
define([AC_HEADER_STDC], [])
|
||||
|
||||
AC_DEFUN([MOZ_TOOL_VARIABLES],
|
||||
[
|
||||
GNU_AS=
|
||||
GNU_LD=
|
||||
|
||||
GNU_CC=
|
||||
GNU_CXX=
|
||||
if test "$CC_TYPE" = "gcc"; then
|
||||
GNU_CC=1
|
||||
GNU_CXX=1
|
||||
fi
|
||||
|
||||
if test "`echo | $AS -o conftest.out -v 2>&1 | grep -c GNU`" != "0"; then
|
||||
GNU_AS=1
|
||||
fi
|
||||
rm -f conftest.out
|
||||
if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
|
||||
GNU_LD=1
|
||||
fi
|
||||
|
||||
CLANG_CC=
|
||||
CLANG_CXX=
|
||||
CLANG_CL=
|
||||
if test "$CC_TYPE" = "clang"; then
|
||||
GNU_CC=1
|
||||
GNU_CXX=1
|
||||
CLANG_CC=1
|
||||
CLANG_CXX=1
|
||||
fi
|
||||
if test "$CC_TYPE" = "clang-cl"; then
|
||||
CLANG_CL=1
|
||||
fi
|
||||
|
||||
if test "$GNU_CC"; then
|
||||
if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
|
||||
GCC_USE_GNU_LD=1
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(CLANG_CXX)
|
||||
AC_SUBST(CLANG_CL)
|
||||
])
|
||||
|
||||
AC_DEFUN([MOZ_CROSS_COMPILER],
|
||||
[
|
||||
echo "cross compiling from $host to $target"
|
||||
|
||||
if test -z "$HOST_AR_FLAGS"; then
|
||||
HOST_AR_FLAGS="$AR_FLAGS"
|
||||
fi
|
||||
AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
|
||||
AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
|
||||
|
||||
dnl AC_CHECK_PROGS manually goes through $PATH, and as such fails to handle
|
||||
dnl absolute or relative paths. Relative paths wouldn't work anyways, but
|
||||
dnl absolute paths would. Trick AC_CHECK_PROGS into working in that case by
|
||||
dnl adding / to PATH. This is temporary until this moves to moz.configure
|
||||
dnl (soon).
|
||||
_SAVE_PATH=$PATH
|
||||
case "${TOOLCHAIN_PREFIX}" in
|
||||
/*)
|
||||
PATH="/:$PATH"
|
||||
;;
|
||||
esac
|
||||
AC_PROG_CC
|
||||
AC_PROG_CXX
|
||||
|
||||
AC_CHECK_PROGS(RANLIB, "${TOOLCHAIN_PREFIX}ranlib", :)
|
||||
AC_CHECK_PROGS(AR, "${TOOLCHAIN_PREFIX}ar", :)
|
||||
AC_CHECK_PROGS(AS, "${TOOLCHAIN_PREFIX}as", :)
|
||||
AC_CHECK_PROGS(LD, "${TOOLCHAIN_PREFIX}ld", :)
|
||||
AC_CHECK_PROGS(LIPO, "${TOOLCHAIN_PREFIX}lipo", :)
|
||||
AC_CHECK_PROGS(STRIP, "${TOOLCHAIN_PREFIX}strip", :)
|
||||
AC_CHECK_PROGS(WINDRES, "${TOOLCHAIN_PREFIX}windres", :)
|
||||
AC_CHECK_PROGS(OTOOL, "${TOOLCHAIN_PREFIX}otool", :)
|
||||
AC_CHECK_PROGS(OBJCOPY, "${TOOLCHAIN_PREFIX}objcopy", :)
|
||||
PATH=$_SAVE_PATH
|
||||
])
|
||||
|
||||
AC_DEFUN([MOZ_CXX11],
|
||||
[
|
||||
dnl Updates to the test below should be duplicated further below for the
|
||||
dnl cross-compiling case.
|
||||
AC_LANG_CPLUSPLUS
|
||||
if test "$GNU_CXX"; then
|
||||
AC_CACHE_CHECK([whether 64-bits std::atomic requires -latomic],
|
||||
ac_cv_needs_atomic,
|
||||
AC_TRY_LINK(
|
||||
[#include <cstdint>
|
||||
#include <atomic>],
|
||||
[ std::atomic<uint64_t> foo; foo = 1; ],
|
||||
ac_cv_needs_atomic=no,
|
||||
_SAVE_LIBS="$LIBS"
|
||||
LIBS="$LIBS -latomic"
|
||||
AC_TRY_LINK(
|
||||
[#include <cstdint>
|
||||
#include <atomic>],
|
||||
[ std::atomic<uint64_t> foo; foo = 1; ],
|
||||
ac_cv_needs_atomic=yes,
|
||||
ac_cv_needs_atomic="do not know; assuming no")
|
||||
LIBS="$_SAVE_LIBS"
|
||||
)
|
||||
)
|
||||
if test "$ac_cv_needs_atomic" = yes; then
|
||||
MOZ_NEEDS_LIBATOMIC=1
|
||||
else
|
||||
MOZ_NEEDS_LIBATOMIC=
|
||||
fi
|
||||
AC_SUBST(MOZ_NEEDS_LIBATOMIC)
|
||||
fi
|
||||
AC_LANG_C
|
||||
])
|
||||
54
build/autoconf/zlib.m4
Normal file
54
build/autoconf/zlib.m4
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
dnl Usage: MOZ_ZLIB_CHECK([version])
|
||||
|
||||
AC_DEFUN([MOZ_ZLIB_CHECK],
|
||||
[
|
||||
|
||||
MOZZLIB=$1
|
||||
|
||||
MOZ_ARG_WITH_STRING(system-zlib,
|
||||
[ --with-system-zlib[=PFX]
|
||||
Use system libz [installed at prefix PFX]],
|
||||
ZLIB_DIR=$withval)
|
||||
|
||||
if test -z "$MOZ_ZLIB_LIBS$MOZ_ZLIB_CFLAGS$SKIP_LIBRARY_CHECKS"; then
|
||||
_SAVE_CFLAGS=$CFLAGS
|
||||
_SAVE_LDFLAGS=$LDFLAGS
|
||||
_SAVE_LIBS=$LIBS
|
||||
|
||||
if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
|
||||
MOZ_ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
|
||||
MOZ_ZLIB_LIBS="-L${ZLIB_DIR}/lib"
|
||||
CFLAGS="$MOZ_ZLIB_CFLAGS $CFLAGS"
|
||||
LDFLAGS="$MOZ_ZLIB_LIBS $LDFLAGS"
|
||||
fi
|
||||
if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
|
||||
MOZ_SYSTEM_ZLIB=
|
||||
else
|
||||
AC_CHECK_LIB(z, gzread, [MOZ_SYSTEM_ZLIB=1 MOZ_ZLIB_LIBS="$MOZ_ZLIB_LIBS -lz"],
|
||||
[MOZ_SYSTEM_ZLIB=])
|
||||
if test "$MOZ_SYSTEM_ZLIB" = 1; then
|
||||
MOZZLIBNUM=`echo $MOZZLIB | awk -F. changequote(<<, >>)'{printf "0x%x\n", (((<<$>>1 * 16 + <<$>>2) * 16) + <<$>>3) * 16 + <<$>>4}'changequote([, ])`
|
||||
AC_TRY_COMPILE([ #include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <zlib.h> ],
|
||||
[ #if ZLIB_VERNUM < $MOZZLIBNUM
|
||||
#error "Insufficient zlib version ($MOZZLIBNUM required)."
|
||||
#endif ],
|
||||
MOZ_SYSTEM_ZLIB=1,
|
||||
AC_MSG_ERROR([Insufficient zlib version for --with-system-zlib ($MOZZLIB required)]))
|
||||
fi
|
||||
fi
|
||||
CFLAGS=$_SAVE_CFLAGS
|
||||
LDFLAGS=$_SAVE_LDFLAGS
|
||||
LIBS=$_SAVE_LIBS
|
||||
fi
|
||||
|
||||
AC_SUBST_LIST(MOZ_ZLIB_CFLAGS)
|
||||
AC_SUBST_LIST(MOZ_ZLIB_LIBS)
|
||||
AC_SUBST(MOZ_SYSTEM_ZLIB)
|
||||
|
||||
])
|
||||
Loading…
Add table
Add a link
Reference in a new issue