$NetBSD: patch-aa,v 1.1 2015/07/09 14:13:51 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 2015-05-04 00:43:23.000000000 +0000 +++ configure.in @@ -1794,7 +1794,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= ;; @@ -1898,7 +1904,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}" ;; @@ -2022,7 +2028,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 @@ -2641,8 +2646,7 @@ 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" -a "$OS_TARGET" != WINNT; then AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE) @@ -3663,6 +3667,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 ======================================================== @@ -3690,11 +3702,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 @@ -4392,6 +4400,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" @@ -4408,7 +4420,7 @@ fi if test "$COMPILE_ENVIRONMENT"; then if test "$MOZ_ENABLE_GTK3"; then - PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 atk-bridge-2.0 $GDK_PACKAGES) + PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 $GDK_PACKAGES) MOZ_GTK3_CFLAGS="-I${_topsrcdir}/widget/gtk/compat-gtk3 $MOZ_GTK3_CFLAGS" dnl Contrary to MOZ_GTK2_LIBS, MOZ_GTK3_LIBS needs to be literally added to TK_LIBS instead dnl of a make reference because of how TK_LIBS is mangled in toolkit/library/moz.build @@ -5149,6 +5161,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) @@ -5252,6 +5267,157 @@ 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) + +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.5) +fi + +AC_SUBST(MOZ_NATIVE_VORBIS) + +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) + +dnl ======================================================== +dnl Check for libcelt +dnl ======================================================== + +MOZ_ARG_WITH_BOOL(system-celt, +[ --with-system-celt Use system libcelt (located with pkgconfig)], +MOZ_NATIVE_CELT=1, +MOZ_NATIVE_CELT=) + +if test -n "$MOZ_NATIVE_CELT"; then + PKG_CHECK_MODULES(MOZ_CELT, celt) +else + MOZ_CELT_CFLAGS='-I$(topsrcdir)/media/libopus' +fi + +AC_SUBST(MOZ_NATIVE_CELT) + +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) + +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) + +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) + +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) + +dnl ======================================================== dnl = Disable VP8 decoder support dnl ======================================================== MOZ_ARG_DISABLE_BOOL(webm, @@ -5606,6 +5772,67 @@ fi AC_SUBST(MOZ_WEBM_ENCODER) dnl ================================== +dnl = Check OSS availability +dnl ================================== + +dnl If using Linux, Solaris or BSDs, ensure that OSS is available +case "$OS_TARGET" in +Linux|SunOS|DragonFly|FreeBSD|NetBSD|GNU/kFreeBSD) + MOZ_OSS=1 + ;; +esac + +MOZ_ARG_WITH_STRING(oss, +[ --with-oss[=PFX] Enable OpenSoundSystem support [installed at prefix PFX]], + OSSPREFIX=$withval) + +if test -n "$OSSPREFIX"; then + if test "$OSSPREFIX" != "no"; then + MOZ_OSS=1 + else + MOZ_OSS= + fi +fi + +_SAVE_CFLAGS=$CFLAGS +_SAVE_LIBS=$LIBS +if test -n "$MOZ_OSS"; then + dnl Prefer 4Front implementation + AC_MSG_CHECKING([MOZ_OSS_CFLAGS]) + if test "$OSSPREFIX" != "yes"; then + oss_conf=${OSSPREFIX%/usr}/etc/oss.conf + if test -f "$oss_conf"; then + . "$oss_conf" + else + OSSLIBDIR=$OSSPREFIX/lib/oss + fi + if test -d "$OSSLIBDIR"; then + MOZ_OSS_CFLAGS="$MOZ_OSS_CFLAGS -I$OSSLIBDIR/include" + fi + fi + AC_MSG_RESULT([$MOZ_OSS_CFLAGS]) + + CFLAGS="$CFLAGS $MOZ_OSS_CFLAGS" + MOZ_CHECK_HEADERS(sys/soundcard.h soundcard.h) + + if test "$ac_cv_header_sys_soundcard_h" != "yes" -a \ + "$ac_cv_header_soundcard_h" != "yes"; then + AC_MSG_ERROR([Need OSS for Ogg, Wave or WebM decoding on $OS_TARGET. Disable with --disable-ogg --disable-wave --disable-webm.]) + fi + + dnl Assume NetBSD implementation over SunAudio + AC_CHECK_LIB(ossaudio, _oss_ioctl, + [AC_DEFINE_UNQUOTED(CUBEB_OSS_DEFAULT_OUTPUT, "/dev/sound") + MOZ_OSS_LIBS="$MOZ_OSS_LIBS -lossaudio"]) +fi +CFLAGS=$_SAVE_CFLAGS +LIBS=$_SAVE_LIBS + +AC_SUBST(MOZ_OSS) +AC_SUBST_LIST(MOZ_OSS_CFLAGS) +AC_SUBST_LIST(MOZ_OSS_LIBS) + +dnl ================================== dnl = Check alsa availability on Linux dnl ================================== @@ -5619,12 +5846,23 @@ MOZ_ARG_ENABLE_BOOL(alsa, MOZ_ALSA=1, MOZ_ALSA=) +MOZ_ARG_DISABLE_BOOL(alsa-dlopen, +[ --disable-alsa-dlopen Disable runtime linking of libasound.so], + DISABLE_LIBASOUND_DLOPEN=1, + DISABLE_LIBASOUND_DLOPEN=) + if test -n "$MOZ_ALSA"; then PKG_CHECK_MODULES(MOZ_ALSA, alsa, , [echo "$MOZ_ALSA_PKG_ERRORS" AC_MSG_ERROR([Need alsa for audio output on Linux. (On Ubuntu, you might try installing the package libasound2-dev.)])]) fi +if test -n "$DISABLE_LIBASOUND_DLOPEN"; then + AC_DEFINE(DISABLE_LIBASOUND_DLOPEN) +else + MOZ_ALSA_LIBS= +fi + AC_SUBST(MOZ_ALSA) dnl ======================================================== @@ -6046,7 +6284,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) MOZ_GAMEPAD_BACKEND=windows @@ -8066,6 +8306,49 @@ 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.34) +fi + +AC_SUBST(MOZ_NATIVE_HARFBUZZ) + +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) + +dnl ======================================================== dnl Check for pixman and cairo dnl ========================================================