# $Id: Portfile 55652 2009-08-16 07:51:16Z jeremyhu@macports.org $

PortSystem	1.0

name		xulrunner
version		1.9.0.13
categories	devel
maintainers	jeremyhu openmaintainer
platforms	darwin
description	Mozilla runtime package that can be used to bootstrap XUL+XPCOM applications

long_description ${description}

homepage	http://developer.mozilla.org/en/docs/XULRunner
master_sites	http://mozilla.isc.org/pub/mozilla.org/xulrunner/releases/${version}/source

distname	${name}-${version}-source
use_bzip2	yes

checksums           md5     040d01a1e22a1ec1b28188479df06007 \
                    sha1    28adda0a6f31442ccf6a9faae73ad7286f330148 \
                    rmd160  5f750249c5ab81c09d1a75fa92657e77388b4e09

# nspr and nss aren't universal
universal_variant no

worksrcdir	mozilla

depends_lib \
	port:heimdal \
	port:lcms \
	port:gconf \
	port:esound \
	port:libcanberra \
	port:findutils \
	port:nss \
	port:nspr \
	port:gtk2 \
	port:xorg-libXt

configure.args \
	--with-xulrunner-stub-name=xulrunner-stub \
	--disable-static \
	--enable-shared \
	--with-distribution-id=org.macports \
	--enable-default-toolkit=cairo-gtk2 \
	--x-includes=${prefix}/include \
	--x-libraries=${prefix}/lib \
	--with-system-nspr \
	--with-nspr-prefix=${prefix} \
	--with-system-nss \
	--with-nss-prefix=${prefix} \
	--with-system-bzip2=${prefix} \
	--with-system-jpeg=${prefix} \
	--with-system-zlib=${prefix} \
	--enable-system-lcms \
	--enable-system-cairo \
	--enable-system-sqlite \
	--with-default-mozilla-five-home=${prefix}/lib/${name} \
	--enable-oji \
	--enable-plugins \
	--enable-mathml \
	--enable-extensions="default,spellcheck" \
	--enable-permissions \
	--enable-cookie \
	--enable-image-decoders=all \
	--enable-image-encoder=all \
	--enable-canvas \
	--enable-jsd \
	--enable-xpctools \
	--enable-crypto \
	--enable-pango \
	--enable-svg \
	--enable-svg-renderer=cairo \
	--enable-xinerama \
	--with-pthreads \
	--disable-gnomevfs \
	--disable-gnomeui \
	--enable-postscript \
	--enable-safe-browsing \
	--disable-crashreporter \
	--enable-optimize='-O2' \
	--disable-prebinding \
	--enable-strip \
	--enable-install-strip \
	--disable-debug \
	--disable-installer \
	--disable-updater \
	--disable-pedantic \
	--disable-tests \
	--disable-mochitest

variant debug description "build with debugging symbols" {
    configure.args-delete   --disable-debug \
                            --disable-mochitest \
                            --enable-optimize='-O2' \
                            --enable-strip \
                            --enable-install-strip

    configure.args-append   --enable-debug='-ggdb3' \
                            --enable-mochitest \
                            --disable-optimize \
                            --disable-strip \
                            --disable-install-strip
}

variant gnome description {use gnome libraries where appropriate} {
    depends_lib-append \
	port:gnome-vfs \
	port:libgnomeui \
	port:libgnome \
	port:gnome-icon-theme

    configure.args-delete --disable-gnomevfs \
                          --disable-gnomeui

    configure.args-append --enable-gnomevfs \
                          --enable-gnomeui
}

post-extract {
    # https://bugzilla.mozilla.org/show_bug.cgi?id=484353
    move ${worksrcpath}/modules/libjar/nsWildCard.cpp ${worksrcpath}/modules/libjar/nsWildCard_jar.cpp
}

# Upstream bugs (http://bugzilla.mozilla.org)
# #485827 (xpcom-Makefile)
# #485856 (configure)
# #485862 (system-nss)
# #486036 (make-install)
# #485863 (icon-Makefile)
# NOTFILED (nsFilePicker)
# #486892 (plugins)
# #487367 (browser-xulrunner-stub)
# #487371 (xulrunner-app-Makefile)
# Previous firefox-x11 port (patch-dylib_file.diff patch-pthread.diff)
patchfiles configure.patch xpcom-Makefile.patch system-nss.patch make-install.patch patch-dylib_file.diff  patch-pthread.diff icon-Makefile.patch nsFilePicker.patch plugins.patch browser-xulrunner-stub.patch xulrunner-app-Makefile.patch

post-patch {
    # https://bugzilla.mozilla.org/show_bug.cgi?id=485857
    reinplace "s:XP_MACOSX:__APPLE__:g" ${worksrcpath}/xpcom/base/nsStackWalk.cpp 

    # https://bugzilla.mozilla.org/show_bug.cgi?id=484353
    reinplace "s:nsWildCard.cpp:nsWildCard_jar.cpp:g" ${worksrcpath}/modules/libjar/objs.mk

    # https://bugzilla.mozilla.org/show_bug.cgi?id=486034
    # find -xtype -> gfind -xtype
    reinplace "s:find:gfind:g" ${worksrcpath}/toolkit/mozapps/installer/packager.mk

    if {[file exists ${prefix}/lib/pkgconfig/x11.pc]} {
        reinplace "s:/usr/X11R6:${prefix}:" ${worksrcpath}/modules/plugin/base/src/nsPluginsDirUnix.cpp
    }

    # Set the right install_name on the libs
    reinplace "s:@executable_path:${prefix}/lib/${name}:g" ${worksrcpath}/config/rules.mk
    reinplace "s:@executable_path:${prefix}/lib/${name}:g" ${worksrcpath}/config/config.mk
    reinplace "s:@executable_path:${prefix}/lib/${name}:g" ${worksrcpath}/nsprpub/configure.in
    reinplace "s:@executable_path:${prefix}/lib/${name}:g" ${worksrcpath}/nsprpub/configure
    reinplace "s:@executable_path:${prefix}/lib/${name}:g" ${worksrcpath}/security/coreconf/Darwin.mk
    reinplace "s:@executable_path:${prefix}/lib/${name}:g" ${worksrcpath}/security/nss/lib/freebl/config.mk

    # Fix the correct library filenames for loading at runtime
    reinplace "s:libatk-1.0.so.0:${prefix}/lib/libatk-1.0.dylib:" ${worksrcpath}/accessible/src/atk/nsAppRootAccessible.cpp

    reinplace "s:libgssapi_krb5.so.2:${prefix}/heimdal/lib/libgssapi.2.dylib:" ${worksrcpath}/extensions/auth/nsAuthGSSAPI.cpp

    reinplace "s:libgnomeui-2.so.0:${prefix}/lib/libgnomeui-2.dylib:" ${worksrcpath}/modules/libpr0n/decoders/icon/gtk/nsIconChannel.cpp
    reinplace "s:libgnome-2.so.0:${prefix}/lib/libgnome-2.dylib:" ${worksrcpath}/modules/libpr0n/decoders/icon/gtk/nsIconChannel.cpp
    reinplace "s:libgnomevfs-2.so.0:${prefix}/lib/libgnomevfs-2.dylib:" ${worksrcpath}/modules/libpr0n/decoders/icon/gtk/nsIconChannel.cpp

    reinplace "s:libgconf-2.so.4:${prefix}/lib/libgconf-2.dylib:" ${worksrcpath}/extensions/pref/system-pref/src/gconf/nsSystemPrefService.cpp

    reinplace "s:libcups.so.2:/usr/lib/libcups.2.dylib:" ${worksrcpath}/gfx/src/psshared/nsCUPSShim.cpp

    reinplace "s:libgnomeui-2.so.0:${prefix}/lib/libgnomeui-2.dylib:" ${worksrcpath}/toolkit/xre/nsNativeAppSupportUnix.cpp
    reinplace "s:libgnome-2.so.0:${prefix}/lib/libgnome-2.dylib:" ${worksrcpath}/toolkit/xre/nsNativeAppSupportUnix.cpp

    reinplace "s:libgtk-x11-2.0.so.0:${prefix}/lib/libgtk-x11-2.0.dylib:" ${worksrcpath}/widget/src/gtk2/nsBidiKeyboard.cpp
    reinplace "s:libXss.so.1:${prefix}/lib/libXss.1.0.0.dylib:" ${worksrcpath}/widget/src/gtk2/nsIdleServiceGTK.cpp
    reinplace "s:libXinerama.so.1:${prefix}/lib/libXinerama.1.dylib:" ${worksrcpath}/widget/src/gtk2/nsScreenManagerGtk.cpp
    reinplace "s:libesd.so.0:${prefix}/lib/libesd.0.dylib:" ${worksrcpath}/widget/src/gtk2/nsSound.cpp
    reinplace "s:libcanberra.so.0:${prefix}/lib/libcanberra.0.dylib:" ${worksrcpath}/widget/src/gtk2/nsSound.cpp
    reinplace "s:libgtk-x11-2.0.dylib:${prefix}/lib/libgtk-x11-2.0.dylib:" ${worksrcpath}/widget/src/gtk2/nsFilePicker.cpp

    # Set our system plugins path
    reinplace "s:/usr/lib/mozilla/plugins:${prefix}/lib/nsplugins:" ${worksrcpath}/xpcom/io/nsAppFileLocationProvider.cpp

    reinplace "s:/etc/gre\.:${prefix}/etc/gre.:g" \
	${worksrcpath}/xpcom/build/nsXPCOMPrivate.h \
	${worksrcpath}/xulrunner/app/nsRegisterGREUnix.cpp \
	${worksrcpath}/xulrunner/installer/Makefile.in
}

configure.env \
	MOZCONFIG="${worksrcpath}/xulrunner/config/mozconfig" \
	MOZILLA_FIVE_HOME="${prefix}/lib/${name}"

build.args-append \
	includedir="${prefix}/include/${name}" \
	idldir="${prefix}/share/idl/${name}" \
	installdir="${prefix}/lib/${name}" \
	sdkdir="${prefix}/lib/${name}"

destroot.args-append \
	includedir="${prefix}/include/${name}" \
	idldir="${prefix}/share/idl/${name}" \
	installdir="${prefix}/lib/${name}" \
	sdkdir="${prefix}/lib/${name}"

post-destroot {
    # Workaround to get root certs loaded, so https:// works
    ln -s ${prefix}/lib/nss/libnssckbi.dylib ${destroot}${prefix}/lib/${name}/libnssckbi.dylib

    # https://bugzilla.mozilla.org/show_bug.cgi?id=486064
    system "cat ${worksrcpath}/dist/include/gfx/gfxtypes.h ${worksrcpath}/dist/include/thebes/gfxTypes.h > ${destroot}${prefix}/include/${name}/unstable/gfxtypes.h"
}
