$NetBSD: patch-aa,v 1.1 2014/11/03 12:18:32 ryoon Exp $ * The profiler does not support Darwin/PPC so don't try to enable it on that platform. * Cocoa gamepad backend can only be used if the toolkit is cocoa too. * The preprocessor macro XP_MACOSX is misused everywhere. They tend to say "#if defined(XP_MACOSX)" to actually mean "#if defined(MOZ_WIDGET_COCOA)". It's okay to equate XP_MACOSX with XP_DARWIN but equating it with MOZ_WIDGET_COCOA is just wrong. As a result, cairo-gtk2 build on Darwin is completely broken and needs heavy patching. Ideally they should be fixed individually but that will be an extremely hard work, so don't define XP_MACOSX for now. --- configure.in.orig 2014-07-17 01:45:08.000000000 +0000 +++ configure.in @@ -962,7 +962,7 @@ MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH MOZ_PNG_CFLAGS="-I$_objdir/dist/include" # needed for freetype compilation MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/media/libpng)' -MOZ_JS_STATIC_LIBS='$(call EXPAND_LIBNAME_PATH,js_static,$(LIBXUL_DIST)/lib)' +MOZ_JS_STATIC_LIBS='$(call EXPAND_LIBNAME_PATH,js_static,$(DEPTH)/js/src)' MOZ_JS_SHARED_LIBS='$(call EXPAND_LIBNAME_PATH,mozjs,$(LIBXUL_DIST)/lib)' MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib' XPCOM_FROZEN_LDOPTS='$(call EXPAND_LIBNAME_PATH,xul mozalloc,$(LIBXUL_DIST)/bin)' @@ -1676,7 +1676,13 @@ Linux) MOZ_ENABLE_PROFILER_SPS= esac ;; -WINNT|Darwin) ;; +WINNT|Darwin) + case "${CPU_ARCH}" in + x86 | x86_64) ;; + *) + MOZ_ENABLE_PROFILER_SPS= + esac + ;; *) MOZ_ENABLE_PROFILER_SPS= ;; @@ -1780,7 +1786,7 @@ case "$host" in ;; *-darwin*) - HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11" + HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX" HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"' HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}" ;; @@ -1912,7 +1918,6 @@ case "$target" in AC_DEFINE(XP_DARWIN) _PLATFORM_DEFAULT_TOOLKIT='cairo-uikit' else - AC_DEFINE(XP_MACOSX) AC_DEFINE(XP_DARWIN) _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa' # The ExceptionHandling framework is needed for Objective-C exception @@ -2522,118 +2527,15 @@ MOZ_CXX11 AC_LANG_C -dnl Check for .hidden assembler directive and visibility attribute. -dnl Borrowed from glibc configure.in +dnl Setup default hidden visibility and wrapped system headers. dnl =============================================================== if test "$GNU_CC"; then - AC_CACHE_CHECK(for visibility(hidden) attribute, - ac_cv_visibility_hidden, - [cat > conftest.c </dev/null 2>&1; then - if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then - ac_cv_visibility_hidden=yes - fi - fi - rm -f conftest.[cs] - ]) - if test "$ac_cv_visibility_hidden" = "yes"; then - AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE) - - AC_CACHE_CHECK(for visibility(default) attribute, - ac_cv_visibility_default, - [cat > conftest.c </dev/null 2>&1; then - if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then - ac_cv_visibility_default=yes - fi - fi - rm -f conftest.[cs] - ]) - if test "$ac_cv_visibility_default" = "yes"; then - AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE) - - AC_CACHE_CHECK(for visibility pragma support, - ac_cv_visibility_pragma, - [cat > conftest.c </dev/null 2>&1; then - if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then - if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then - ac_cv_visibility_pragma=yes - fi - fi - fi - rm -f conftest.[cs] - ]) - if test "$ac_cv_visibility_pragma" = "yes"; then - AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905), - ac_cv_have_visibility_class_bug, - [cat > conftest.c < /dev/null 2>&1 ; then - ac_cv_have_visibility_class_bug=yes - else - if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then - ac_cv_have_visibility_class_bug=yes - fi - fi - rm -rf conftest.{c,S} - ]) - - AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297), - ac_cv_have_visibility_builtin_bug, - [cat > conftest.c < -#pragma GCC visibility pop - -__attribute__ ((visibility ("default"))) void Func() { - char c[[100]]; - memset(c, 0, sizeof(c)); -} -EOF - ac_cv_have_visibility_builtin_bug=no - if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then - ac_cv_have_visibility_builtin_bug=yes - else - if test `grep -c "@PLT" conftest.S` = 0; then - ac_cv_visibility_builtin_bug=yes - fi - fi - rm -f conftest.{c,S} - ]) - if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \ - "$ac_cv_have_visibility_class_bug" = "no"; then - VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h' - WRAP_SYSTEM_INCLUDES=1 - STL_FLAGS='-I$(DIST)/stl_wrappers' - WRAP_STL_INCLUDES=1 - else - VISIBILITY_FLAGS='-fvisibility=hidden' - fi # have visibility pragma bug - fi # have visibility pragma - fi # have visibility(default) attribute - fi # have visibility(hidden) attribute + AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE) + AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE) + VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h' + WRAP_SYSTEM_INCLUDES=1 + STL_FLAGS='-I$(DIST)/stl_wrappers' + WRAP_STL_INCLUDES=1 fi # GNU_CC # visibility hidden flag for Sun Studio on Solaris @@ -3004,7 +2906,7 @@ dnl Checks for library functions. dnl ======================================================== AC_PROG_GCC_TRADITIONAL AC_FUNC_MEMCMP -AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize localtime_r) +AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize localtime_r arc4random arc4random_buf) dnl check for clock_gettime(), the CLOCK_MONOTONIC clock AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC), @@ -3691,6 +3593,14 @@ if test -n "$YASM"; then _YASM_BUILD=` echo ${YASM_VERSION} | $AWK -F\. '{ print $4 }'` fi +if test -n "${LIBXUL_SDK_DIR}"; then + AC_MSG_WARN([pkgsrc: LIBXUL_SDK_DIR is set; assuming we want nss and nspr from xulrunner.]) + NSPR_CFLAGS="-I${prefix}/include/xulrunner/unstable `pkg-config --cflags nspr`" + NSPR_LIBS="`pkg-config --libs nspr`" + NSS_CFLAGS="`pkg-config --cflags nss`" + NSS_LIBS="`pkg-config --libs nss`" +fi + if test -z "$SKIP_LIBRARY_CHECKS"; then dnl system JPEG support dnl ======================================================== @@ -3718,11 +3628,7 @@ if test "$MOZ_NATIVE_JPEG" = 1; then #include ], [ #if JPEG_LIB_VERSION < $MOZJPEG #error "Insufficient JPEG library version ($MOZJPEG required)." - #endif - #ifndef JCS_EXTENSIONS - #error "libjpeg-turbo JCS_EXTENSIONS required" - #endif - ], + #endif ], MOZ_NATIVE_JPEG=1, AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg])) fi @@ -4387,6 +4293,10 @@ cairo-gonk) esac +if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then + AC_DEFINE(XP_MACOSX) +fi + AC_SUBST(MOZ_PDF_PRINTING) if test "$MOZ_PDF_PRINTING"; then PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1" @@ -5106,6 +5016,9 @@ if test -n "$MOZ_WEBRTC"; then MOZ_VPX=1 MOZ_VPX_ERROR_CONCEALMENT=1 + dnl with libv4l2 we can support more cameras + PKG_CHECK_MODULES(MOZ_LIBV4L2, libv4l2) + dnl enable once Signaling lands MOZ_WEBRTC_SIGNALING=1 AC_DEFINE(MOZ_WEBRTC_SIGNALING) @@ -5190,6 +5106,63 @@ if test "${ac_cv_c_attribute_aligned}" ! fi dnl ======================================================== +dnl Check for libogg +dnl ======================================================== + +MOZ_ARG_WITH_BOOL(system-ogg, +[ --with-system-ogg Use system libogg (located with pkgconfig)], +MOZ_NATIVE_OGG=1, +MOZ_NATIVE_OGG=) + +if test -n "$MOZ_NATIVE_OGG"; then + PKG_CHECK_MODULES(MOZ_OGG, ogg >= 1.2.1) + + _SAVE_LIBS=$LIBS + LIBS="$LIBS $MOZ_OGG_LIBS" + AC_CHECK_FUNC(ogg_set_mem_functions, [], + [AC_DEFINE(MOZ_OGG_NO_MEM_REPORTING)]) + LIBS=$_SAVE_LIBS +fi + +AC_SUBST(MOZ_NATIVE_OGG) +AC_SUBST(MOZ_OGG_CFLAGS) +AC_SUBST(MOZ_OGG_LIBS) + +dnl ======================================================== +dnl Check for libvorbis +dnl ======================================================== + +MOZ_ARG_WITH_BOOL(system-vorbis, +[ --with-system-vorbis Use system libvorbis (located with pkgconfig)], +MOZ_NATIVE_VORBIS=1, +MOZ_NATIVE_VORBIS=) + +if test -n "$MOZ_NATIVE_VORBIS"; then + PKG_CHECK_MODULES(MOZ_VORBIS, vorbis vorbisenc >= 1.3.4) +fi + +AC_SUBST(MOZ_NATIVE_VORBIS) +AC_SUBST(MOZ_VORBIS_CFLAGS) +AC_SUBST(MOZ_VORBIS_LIBS) + +dnl ======================================================== +dnl Check for integer-only libvorbis aka tremor +dnl ======================================================== + +MOZ_ARG_WITH_BOOL(system-tremor, +[ --with-system-tremor Use system libtremor (located with pkgconfig)], +MOZ_NATIVE_TREMOR=1, +MOZ_NATIVE_TREMOR=) + +if test -n "$MOZ_NATIVE_TREMOR"; then + PKG_CHECK_MODULES(MOZ_TREMOR, vorbisidec >= 1.2.1) +fi + +AC_SUBST(MOZ_NATIVE_TREMOR) +AC_SUBST(MOZ_TREMOR_CFLAGS) +AC_SUBST(MOZ_TREMOR_LIBS) + +dnl ======================================================== dnl = Disable Opus audio codec support dnl ======================================================== MOZ_ARG_DISABLE_BOOL(opus, @@ -5198,6 +5171,97 @@ MOZ_ARG_DISABLE_BOOL(opus, MOZ_OPUS=1) dnl ======================================================== +dnl Check for libopus +dnl ======================================================== + +MOZ_ARG_WITH_BOOL(system-opus, +[ --with-system-opus Use system libopus (located with pkgconfig)], +MOZ_NATIVE_OPUS=1, +MOZ_NATIVE_OPUS=) + +if test -n "$MOZ_NATIVE_OPUS"; then + PKG_CHECK_MODULES(MOZ_OPUS, opus >= 1.1) +else + MOZ_OPUS_CFLAGS='-I$(topsrcdir)/media/libopus/include' +fi + +AC_SUBST(MOZ_NATIVE_OPUS) +AC_SUBST(MOZ_OPUS_CFLAGS) +AC_SUBST(MOZ_OPUS_LIBS) + +dnl ======================================================== +dnl Check for libtheora +dnl ======================================================== + +MOZ_ARG_WITH_BOOL(system-theora, +[ --with-system-theora Use system libtheora (located with pkgconfig)], +MOZ_NATIVE_THEORA=1, +MOZ_NATIVE_THEORA=) + +if test -n "$MOZ_NATIVE_THEORA"; then + PKG_CHECK_MODULES(MOZ_THEORA, theora >= 1.2) +fi + +AC_SUBST(MOZ_NATIVE_THEORA) +AC_SUBST(MOZ_THEORA_CFLAGS) +AC_SUBST(MOZ_THEORA_LIBS) + +dnl ======================================================== +dnl Check for libspeex resampler +dnl ======================================================== + +MOZ_ARG_WITH_BOOL(system-speex, +[ --with-system-speex Use system libspeex (located with pkgconfig)], +MOZ_NATIVE_SPEEX=1, +MOZ_NATIVE_SPEEX=) + +if test -n "$MOZ_NATIVE_SPEEX"; then + PKG_CHECK_MODULES(MOZ_SPEEX, speexdsp >= 1.2) +fi + +AC_SUBST(MOZ_NATIVE_SPEEX) +AC_SUBST(MOZ_SPEEX_CFLAGS) +AC_SUBST(MOZ_SPEEX_LIBS) + +dnl ======================================================== +dnl Check for libsoundtouch +dnl ======================================================== + +MOZ_ARG_WITH_BOOL(system-soundtouch, +[ --with-system-soundtouch Use system libsoundtouch (located with pkgconfig)], +MOZ_NATIVE_SOUNDTOUCH=1, +MOZ_NATIVE_SOUNDTOUCH=) + +if test -n "$MOZ_NATIVE_SOUNDTOUCH"; then + PKG_CHECK_MODULES(MOZ_SOUNDTOUCH, soundtouch >= 1.8.0) + + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + _SAVE_CXXFLAGS=$CXXFLAGS + CXXFLAGS="$CXXFLAGS $MOZ_SOUNDTOUCH_CFLAGS" + AC_CACHE_CHECK(for soundtouch sample type, + ac_cv_soundtouch_sample_type, + [AC_TRY_COMPILE([#include + #ifndef SOUNDTOUCH_INTEGER_SAMPLES + #error soundtouch expects float samples + #endif], + [], + [ac_cv_soundtouch_sample_type=short], + [ac_cv_soundtouch_sample_type=float])]) + CXXFLAGS=$_SAVE_CXXFLAGS + AC_LANG_RESTORE + + if test \( -n "$MOZ_SAMPLE_TYPE_S16" -a "$ac_cv_soundtouch_sample_type" != short \) \ + -o \( -n "$MOZ_SAMPLE_TYPE_FLOAT32" -a "$ac_cv_soundtouch_sample_type" != float \) ; then + AC_MSG_ERROR([SoundTouch library is built with incompatible sample type. Either rebuild the library with/without --enable-integer-samples, chase default Mozilla sample type or remove --with-system-soundtouch.]) + fi +fi + +AC_SUBST(MOZ_NATIVE_SOUNDTOUCH) +AC_SUBST(MOZ_SOUNDTOUCH_CFLAGS) +AC_SUBST(MOZ_SOUNDTOUCH_LIBS) + +dnl ======================================================== dnl = Disable VP8 decoder support dnl ======================================================== MOZ_ARG_DISABLE_BOOL(webm, @@ -5938,7 +6002,9 @@ MOZ_ARG_DISABLE_BOOL(gamepad, if test "$MOZ_GAMEPAD"; then case "$OS_TARGET" in Darwin) - MOZ_GAMEPAD_BACKEND=cocoa + if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then + MOZ_GAMEPAD_BACKEND=cocoa + fi ;; WINNT) if test -z "$MOZ_HAS_WINSDK_WITH_D3D"; then @@ -8036,6 +8102,52 @@ if test "$USE_FC_FREETYPE"; then fi dnl ======================================================== +dnl Check for harfbuzz +dnl ======================================================== + +MOZ_ARG_WITH_BOOL(system-harfbuzz, +[ --with-system-harfbuzz Use system harfbuzz (located with pkgconfig)], +MOZ_NATIVE_HARFBUZZ=1, +MOZ_NATIVE_HARFBUZZ=) + +if test -n "$MOZ_NATIVE_HARFBUZZ"; then + PKG_CHECK_MODULES(MOZ_HARFBUZZ, harfbuzz >= 0.9.25) +fi + +AC_SUBST(MOZ_NATIVE_HARFBUZZ) +AC_SUBST(MOZ_HARFBUZZ_CFLAGS) +AC_SUBST(MOZ_HARFBUZZ_LIBS) + +dnl ======================================================== +dnl Check for graphite2 +dnl ======================================================== +MOZ_ARG_WITH_BOOL(system-graphite2, +[ --with-system-graphite2 Use system graphite2 (located with pkgconfig)], +MOZ_NATIVE_GRAPHITE2=1, +MOZ_NATIVE_GRAPHITE2=) + +if test -n "$MOZ_NATIVE_GRAPHITE2"; then + PKG_CHECK_MODULES(MOZ_GRAPHITE2, graphite2) + + dnl graphite2.pc has bogus version, check manually + AC_TRY_COMPILE([ #include + #define GR2_VERSION_REQUIRE(major,minor,bugfix) \ + ( GR2_VERSION_MAJOR * 10000 + GR2_VERSION_MINOR \ + * 100 + GR2_VERSION_BUGFIX >= \ + (major) * 10000 + (minor) * 100 + (bugfix) ) + ], [ + #if !GR2_VERSION_REQUIRE(1,2,4) + #error "Insufficient graphite2 version." + #endif + ], [], + [AC_MSG_ERROR([--with-system-graphite2 requested but no working libgraphite2 found])]) +fi + +AC_SUBST(MOZ_NATIVE_GRAPHITE2) +AC_SUBST(MOZ_GRAPHITE2_CFLAGS) +AC_SUBST(MOZ_GRAPHITE2_LIBS) + +dnl ======================================================== dnl Check for pixman and cairo dnl ========================================================