summaryrefslogtreecommitdiff
path: root/www/seamonkey
diff options
context:
space:
mode:
authorsalo <salo@pkgsrc.org>2006-09-24 16:21:33 +0000
committersalo <salo@pkgsrc.org>2006-09-24 16:21:33 +0000
commit5d60b45b4a0522f6120a95c858d648c3db47bd9e (patch)
tree6c9bdd19f16aa80f05ac32b518bd598c047d5bd3 /www/seamonkey
parentcfb933575ea34b0dd4041709b848511e7dc8a0b3 (diff)
downloadpkgsrc-5d60b45b4a0522f6120a95c858d648c3db47bd9e.tar.gz
Install pkg-config files so the gecko engine can be used by other
applications, bump PKGREVISION. Sync files with www/mozilla and allow seamonkey to satisfy gecko dependency.
Diffstat (limited to 'www/seamonkey')
-rw-r--r--www/seamonkey/Makefile3
-rw-r--r--www/seamonkey/Makefile.common6
-rw-r--r--www/seamonkey/PLIST10
-rwxr-xr-xwww/seamonkey/files/moz-install70
-rw-r--r--www/seamonkey/files/mozilla-ELF.in4
-rw-r--r--www/seamonkey/files/mozilla-Mach-O.in4
-rw-r--r--www/seamonkey/files/mozilla-a.out.in6
-rw-r--r--www/seamonkey/files/xptcinvoke_asm_sparc64_netbsd.s112
-rw-r--r--www/seamonkey/files/xptcinvoke_sparc64_netbsd.cpp84
-rw-r--r--www/seamonkey/files/xptcstubs_asm_sparc64_netbsd.s66
-rw-r--r--www/seamonkey/files/xptcstubs_sparc64_netbsd.cpp122
-rw-r--r--www/seamonkey/gecko-depends.mk11
-rw-r--r--www/seamonkey/gecko-options.mk5
-rw-r--r--www/seamonkey/options.mk17
14 files changed, 514 insertions, 6 deletions
diff --git a/www/seamonkey/Makefile b/www/seamonkey/Makefile
index 9906fb67fcb..1780456a132 100644
--- a/www/seamonkey/Makefile
+++ b/www/seamonkey/Makefile
@@ -1,6 +1,7 @@
-# $NetBSD: Makefile,v 1.8 2006/09/15 14:05:23 ghen Exp $
+# $NetBSD: Makefile,v 1.9 2006/09/24 16:21:33 salo Exp $
MOZILLA= seamonkey
+PKGREVISION= 1
COMMENT= Full featured gecko-based browser
diff --git a/www/seamonkey/Makefile.common b/www/seamonkey/Makefile.common
index 21826463c5b..cf74c9aff65 100644
--- a/www/seamonkey/Makefile.common
+++ b/www/seamonkey/Makefile.common
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.common,v 1.9 2006/09/15 15:54:04 ghen Exp $
+# $NetBSD: Makefile.common,v 1.10 2006/09/24 16:21:33 salo Exp $
MOZ_VER= 1.0.5
MOZ_DIST_VER?= ${MOZ_VER}
@@ -10,7 +10,7 @@ MASTER_SITES+= http://public.planetmirror.com.au/pub/seamonkey/releases/${MOZ_V
MASTER_SITES+= ftp://public.planetmirror.com.au/pub/seamonkey/releases/${MOZ_VER}/
CATEGORIES= www
EXTRACT_SUFX= .tar.bz2
-
+
MAINTAINER= ghen@NetBSD.org
HOMEPAGE?= http://www.mozilla.org/projects/seamonkey
@@ -18,7 +18,7 @@ MOZILLA_BIN= seamonkey-bin
DISTINFO_FILE= ${.CURDIR}/../../www/seamonkey/distinfo
PATCHDIR= ${.CURDIR}/../../www/seamonkey/patches
-FILESDIR= ${.CURDIR}/../../www/mozilla/files
+FILESDIR= ${.CURDIR}/../../www/seamonkey/files
BUILD_DEPENDS+= zip>=2.3:../../archivers/zip
diff --git a/www/seamonkey/PLIST b/www/seamonkey/PLIST
index a8b1a482949..c4d9da47709 100644
--- a/www/seamonkey/PLIST
+++ b/www/seamonkey/PLIST
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.3 2006/06/07 15:23:21 ghen Exp $
+@comment $NetBSD: PLIST,v 1.4 2006/09/24 16:21:33 salo Exp $
bin/${MOZILLA}
@comment begin PROGRAMS
lib/${MOZILLA}/${MOZILLA_BIN}
@@ -125,6 +125,14 @@ ${SUNOSLIB}lib/${MOZILLA}/libfreebl_hybrid_3.${SO_SUFFIX}
${SUNOSLIB}lib/${MOZILLA}/libfreebl_pure32_3.${SO_SUFFIX}
lib/${MOZILLA}/plugins/libunixprintplugin.${SO_SUFFIX}
@comment end DSO
+@comment begin PKGCONFIG
+lib/pkgconfig/seamonkey-gtkmozembed.pc
+lib/pkgconfig/seamonkey-js.pc
+lib/pkgconfig/seamonkey-nspr.pc
+lib/pkgconfig/seamonkey-nss.pc
+lib/pkgconfig/seamonkey-plugin.pc
+lib/pkgconfig/seamonkey-xpcom.pc
+@comment end PKGCONFIG
@comment begin DATA
lib/${MOZILLA}/LICENSE
lib/${MOZILLA}/README
diff --git a/www/seamonkey/files/moz-install b/www/seamonkey/files/moz-install
new file mode 100755
index 00000000000..56153ba8af6
--- /dev/null
+++ b/www/seamonkey/files/moz-install
@@ -0,0 +1,70 @@
+#!/bin/sh
+#
+# $NetBSD: moz-install,v 1.1 2006/09/24 16:21:33 salo Exp $
+
+${SED} -e "s,@PREFIX@,${PREFIX},g" -e "s,@MOZILLA@,${MOZILLA}," -e "s,@MOZILLA_BIN@,${MOZILLA_BIN}," ${FILESDIR}/mozilla-${OBJECT_FMT}.in > ${PREFIX}/bin/${MOZILLA}
+${CHOWN} ${BINOWN} ${PREFIX}/bin/${MOZILLA}
+${CHGRP} ${BINGRP} ${PREFIX}/bin/${MOZILLA}
+${CHMOD} ${BINMODE} ${PREFIX}/bin/${MOZILLA}
+
+#
+# Substitute variables
+#
+TMP_PLIST=${WRKDIR}/TMP_PLIST.$$
+trap "${RM} -f ${TMP_PLIST}" 1 2 15
+
+${SED} -e "s/\${MOZILLA}/${MOZILLA}/g" -e "s/\${SO_SUFFIX}/${SO_SUFFIX}/" -e "s/\${MOZILLA_BIN}/${MOZILLA_BIN}/g" -e "s/\${SUNOSLIB}/${SUNOSLIB}/" < ${PLIST_SRC} > ${TMP_PLIST}
+
+# make directories
+for i in `${SED} -n -e '/^@comment begin DIRS$/,/^@comment end DIRS$/p' ${TMP_PLIST} | ${EGREP} ^@dirrm | ${SED} -e 's/^@dirrm//'` ; do
+ ${BSD_INSTALL_DATA_DIR} ${PREFIX}/$i
+done
+
+# install programs
+for i in `${SED} -n -e '/^@comment begin PROGRAMS$/,/^@comment end PROGRAMS$/p' ${TMP_PLIST} | ${EGREP} -v ^@comment` ; do
+ src=`echo $i | ${SED} -e "s@lib/${MOZILLA}@dist/bin@"`;
+ ${BSD_INSTALL_PROGRAM} ${WRKSRC}/${src} ${PREFIX}/$i
+done
+
+# install scripts
+for i in `${SED} -n -e '/^@comment begin SCRIPTS$/,/^@comment end SCRIPTS$/p' ${TMP_PLIST} | ${EGREP} -v ^@comment` ; do
+ src=`echo $i | ${SED} -e "s@lib/${MOZILLA}@dist/bin@"`;
+ ${BSD_INSTALL_SCRIPT} ${WRKSRC}/${src} ${PREFIX}/$i
+done
+
+# install DSO
+for i in `${SED} -n -e '/^@comment begin DSO$/,/^@comment end DSO$/p' ${TMP_PLIST} | ${EGREP} -v ^@comment` ; do
+ src=`echo $i | ${SED} -e "s@lib/${MOZILLA}@dist/bin@"`;
+ ${MOZ_INSTALL_LIB} ${WRKSRC}/${src} ${PREFIX}/$i
+done
+
+# install PKGCONFIG
+for i in `${SED} -n -e '/^@comment begin PKGCONFIG$/,/^@comment end PKGCONFIG$/p' ${TMP_PLIST} | ${EGREP} -v ^@comment` ; do
+ src=`echo $i | ${SED} -e "s@lib/pkgconfig@build/unix@"`;
+ ${BSD_INSTALL_DATA} ${WRKSRC}/${src} ${PREFIX}/$i
+done
+
+# install DATA
+for i in `${SED} -n -e '/^@comment begin DATA$/,/^@comment end DATA$/p' ${TMP_PLIST} | ${EGREP} -v ^@comment` ; do
+ src=`echo $i | ${SED} -e "s@lib/${MOZILLA}@dist/bin@"`;
+ ${BSD_INSTALL_DATA} ${WRKSRC}/${src} ${PREFIX}/$i
+done
+
+# install INCLUDE
+for i in `${SED} -n -e '/^@comment begin INCLUDE$/,/^@comment end INCLUDE$/p' ${TMP_PLIST} | ${EGREP} -v ^@comment` ; do
+ src=`echo $i | ${SED} -e "s@include/${MOZILLA}@dist/include@"`;
+ ${BSD_INSTALL_DATA} ${WRKSRC}/${src} ${PREFIX}/$i
+done
+
+# install INCLUDE-PUBLIC
+for i in `${SED} -n -e '/^@comment begin INCLUDE-PUBLIC$/,/^@comment end INCLUDE-PUBLIC$/p' ${TMP_PLIST} | ${EGREP} -v ^@comment` ; do
+ src=`echo $i | ${SED} -e "s@include/${MOZILLA}@dist/public@"`;
+ ${BSD_INSTALL_DATA} ${WRKSRC}/${src} ${PREFIX}/$i
+done
+
+${RM} -f ${TMP_PLIST}
+
+#
+# remove generated user conf directory ${WRKDIR}/.mozilla
+#
+${RM} -rf ${WRKDIR}/.mozilla
diff --git a/www/seamonkey/files/mozilla-ELF.in b/www/seamonkey/files/mozilla-ELF.in
new file mode 100644
index 00000000000..99470536423
--- /dev/null
+++ b/www/seamonkey/files/mozilla-ELF.in
@@ -0,0 +1,4 @@
+#!/bin/sh
+MOZILLA_FIVE_HOME=@PREFIX@/lib/@MOZILLA@
+export MOZILLA_FIVE_HOME
+exec @PREFIX@/lib/@MOZILLA@/@MOZILLA_BIN@ "$@"
diff --git a/www/seamonkey/files/mozilla-Mach-O.in b/www/seamonkey/files/mozilla-Mach-O.in
new file mode 100644
index 00000000000..99470536423
--- /dev/null
+++ b/www/seamonkey/files/mozilla-Mach-O.in
@@ -0,0 +1,4 @@
+#!/bin/sh
+MOZILLA_FIVE_HOME=@PREFIX@/lib/@MOZILLA@
+export MOZILLA_FIVE_HOME
+exec @PREFIX@/lib/@MOZILLA@/@MOZILLA_BIN@ "$@"
diff --git a/www/seamonkey/files/mozilla-a.out.in b/www/seamonkey/files/mozilla-a.out.in
new file mode 100644
index 00000000000..72af99363b6
--- /dev/null
+++ b/www/seamonkey/files/mozilla-a.out.in
@@ -0,0 +1,6 @@
+#!/bin/sh
+MOZILLA_FIVE_HOME=@PREFIX@/lib/@MOZILLA@
+LD_LIBRARY_PATH=@PREFIX@/lib/@MOZILLA@
+export MOZILLA_FIVE_HOME
+export LD_LIBRARY_PATH
+exec @PREFIX@/lib/@MOZILLA@/@MOZILLA_BIN@ "$@"
diff --git a/www/seamonkey/files/xptcinvoke_asm_sparc64_netbsd.s b/www/seamonkey/files/xptcinvoke_asm_sparc64_netbsd.s
new file mode 100644
index 00000000000..a35f0b18d73
--- /dev/null
+++ b/www/seamonkey/files/xptcinvoke_asm_sparc64_netbsd.s
@@ -0,0 +1,112 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+ *
+ * The contents of this file are subject to the Netscape Public
+ * License Version 1.1 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.mozilla.org/NPL/
+ *
+ * Software distributed under the License is distributed on an "AS
+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * rights and limitations under the License.
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is Netscape
+ * Communications Corporation. Portions created by Netscape are
+ * Copyright (C) 1998 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ */
+
+/* Platform specific code to invoke XPCOM methods on native objects */
+ .global XPTC_InvokeByIndex
+ .type XPTC_InvokeByIndex, #function
+/*
+ XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ PRUint32 paramCount, nsXPTCVariant* params);
+
+*/
+/*
+ * Note: To simplify stack handling we allocate an extra stack
+ * frame here. In principle invoke_copy_to_stack() could
+ * save the parameters our caller's frame and we could
+ * reclaim the stackframe and do a tail call to the
+ * function. However, this gets complicated....
+ *
+ * The vtable consist of be:
+ *
+ * struct {
+ * short __delta;
+ * short __index;
+ * union {
+ * P __pfn;
+ * short __delta2;
+ * } __pfn_or_delta2;
+ * };
+ *
+ * See gcc/cp/cp-tree.h
+ */
+
+XPTC_InvokeByIndex:
+ save %sp,-(128 + 64),%sp ! room for the register window and
+ ! struct pointer, rounded up to 0 % 64
+ sll %i2,4,%l0 ! assume the worst case
+ ! paramCount * 2 * 8 bytes
+ cmp %l0, 0 ! are there any args? If not,
+ be .invoke ! no need to copy args to stack
+ nop
+
+ sub %sp,%l0,%sp ! create the additional stack space
+ add %sp,0x7ff+136,%o0 ! step past the register window, the
+ ! struct result pointer and the 'this' slot
+ mov %i2,%o1 ! paramCount
+ call invoke_copy_to_stack
+ mov %i3,%o2 ! params
+
+!
+! load arguments from stack into the outgoing registers
+! BIAS is 0x7ff (2047)
+!
+
+! load the %o1..5 64bit (extended word) output registers registers
+ ldx [%sp + 0x7ff + 136],%o1 ! %i1
+ ldx [%sp + 0x7ff + 144],%o2 ! %i2
+ ldx [%sp + 0x7ff + 152],%o3 ! %i3
+ ldx [%sp + 0x7ff + 160],%o4 ! %i4
+ ldx [%sp + 0x7ff + 168],%o5 ! %i5
+
+! load the even number double registers starting with %f2
+ ldd [%sp + 0x7ff + 136],%f2
+ ldd [%sp + 0x7ff + 144],%f4
+ ldd [%sp + 0x7ff + 152],%f6
+ ldd [%sp + 0x7ff + 160],%f8
+ ldd [%sp + 0x7ff + 168],%f10
+ ldd [%sp + 0x7ff + 176],%f12
+ ldd [%sp + 0x7ff + 184],%f14
+ ldd [%sp + 0x7ff + 192],%f16
+ ldd [%sp + 0x7ff + 200],%f18
+ ldd [%sp + 0x7ff + 208],%f20
+ ldd [%sp + 0x7ff + 216],%f22
+ ldd [%sp + 0x7ff + 224],%f24
+ ldd [%sp + 0x7ff + 232],%f26
+ ldd [%sp + 0x7ff + 240],%f28
+ ldd [%sp + 0x7ff + 248],%f30
+
+!
+! calculate the target address from the vtable
+!
+.invoke:
+ sll %i1,3,%l0 ! index *= 8
+ ldx [%i0],%l1 ! *this --> address of vtable
+ ldx [%l0 + %l1],%l0 ! this->vtable[index] --> address
+
+ jmpl %l0,%o7 ! call the routine
+ mov %i0,%o0 ! move 'this' pointer to out register
+
+ mov %o0,%i0 ! propagate return value
+ ret
+ restore
+
+ .size XPTC_InvokeByIndex, .-XPTC_InvokeByIndex
diff --git a/www/seamonkey/files/xptcinvoke_sparc64_netbsd.cpp b/www/seamonkey/files/xptcinvoke_sparc64_netbsd.cpp
new file mode 100644
index 00000000000..82d7c9cc3b5
--- /dev/null
+++ b/www/seamonkey/files/xptcinvoke_sparc64_netbsd.cpp
@@ -0,0 +1,84 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+ *
+ * The contents of this file are subject to the Netscape Public
+ * License Version 1.1 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.mozilla.org/NPL/
+ *
+ * Software distributed under the License is distributed on an "AS
+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * rights and limitations under the License.
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is Netscape
+ * Communications Corporation. Portions created by Netscape are
+ * Copyright (C) 1998 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ */
+
+/* Platform specific code to invoke XPCOM methods on native objects */
+
+#include "xptcprivate.h"
+
+#if !defined(__sparc64__) && !defined(_LP64)
+#error "This code is for Sparc64 only"
+#endif
+
+extern "C" PRUint32
+invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
+{
+ /*
+ We need to copy the parameters for this function to locals and use them
+ from there since the parameters occupy the same stack space as the stack
+ we're trying to populate.
+ */
+ PRUint64 *l_d = d;
+ nsXPTCVariant *l_s = s;
+ PRUint64 l_paramCount = paramCount;
+ PRUint64 regCount = 0; // return the number of registers to load from the stack
+
+ for(PRUint64 i = 0; i < l_paramCount; i++, l_d++, l_s++)
+ {
+ if (regCount < 5) regCount++;
+
+ if (l_s->IsPtrData())
+ {
+ *l_d = (PRUint64)l_s->ptr;
+ continue;
+ }
+ switch (l_s->type)
+ {
+ case nsXPTType::T_I8 : *((PRInt64*)l_d) = l_s->val.i8; break;
+ case nsXPTType::T_I16 : *((PRInt64*)l_d) = l_s->val.i16; break;
+ case nsXPTType::T_I32 : *((PRInt64*)l_d) = l_s->val.i32; break;
+ case nsXPTType::T_I64 : *((PRInt64*)l_d) = l_s->val.i64; break;
+
+ case nsXPTType::T_U8 : *((PRUint64*)l_d) = l_s->val.u8; break;
+ case nsXPTType::T_U16 : *((PRUint64*)l_d) = l_s->val.u16; break;
+ case nsXPTType::T_U32 : *((PRUint64*)l_d) = l_s->val.u32; break;
+ case nsXPTType::T_U64 : *((PRUint64*)l_d) = l_s->val.u64; break;
+
+ /* in the case of floats, we want to put the bits in to the
+ 64bit space right justified... floats in the paramter array on
+ sparcv9 use odd numbered registers.. %f1, %f3, so we have to skip
+ the space that would be occupied by %f0, %f2, etc.
+ */
+ case nsXPTType::T_FLOAT : *(((float*)l_d) + 1) = l_s->val.f; break;
+ case nsXPTType::T_DOUBLE: *((double*)l_d) = l_s->val.d; break;
+ case nsXPTType::T_BOOL : *((PRInt64*)l_d) = l_s->val.b; break;
+ case nsXPTType::T_CHAR : *((PRUint64*)l_d) = l_s->val.c; break;
+ case nsXPTType::T_WCHAR : *((PRInt64*)l_d) = l_s->val.wc; break;
+
+ default:
+ // all the others are plain pointer types
+ *((void**)l_d) = l_s->val.p;
+ break;
+ }
+ }
+
+ return regCount;
+}
diff --git a/www/seamonkey/files/xptcstubs_asm_sparc64_netbsd.s b/www/seamonkey/files/xptcstubs_asm_sparc64_netbsd.s
new file mode 100644
index 00000000000..6557db78b18
--- /dev/null
+++ b/www/seamonkey/files/xptcstubs_asm_sparc64_netbsd.s
@@ -0,0 +1,66 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+ *
+ * The contents of this file are subject to the Netscape Public
+ * License Version 1.1 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.mozilla.org/NPL/
+ *
+ * Software distributed under the License is distributed on an "AS
+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * rights and limitations under the License.
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is Netscape
+ * Communications Corporation. Portions created by Netscape are
+ * Copyright (C) 1999 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ */
+
+ .global SharedStub
+
+/*
+ in the frame for the function that called SharedStub are the
+ rest of the parameters we need
+
+*/
+
+SharedStub:
+! we don't create a new frame yet, but work within the frame of the calling
+! function to give ourselves the other parameters we want
+
+ mov %o0, %o1 ! shuffle the index up to 2nd place
+ mov %i0, %o0 ! the original 'this'
+ add %fp, 0x7ff + 136, %o2 ! previous stack top adjusted to the first argument slot (beyond 'this')
+
+! save off the original incoming parameters that arrived in
+! registers, the ABI guarantees the space for us to do this
+ stx %i1, [%fp + 0x7ff + 136]
+ stx %i2, [%fp + 0x7ff + 144]
+ stx %i3, [%fp + 0x7ff + 152]
+ stx %i4, [%fp + 0x7ff + 160]
+ stx %i5, [%fp + 0x7ff + 168]
+! now we can build our own stack frame
+ save %sp,-(128 + 64),%sp ! room for the register window and
+ ! struct pointer, rounded up to 0 % 64
+! our function now appears to have been called
+! as SharedStub(nsISupports* that, PRUint32 index, PRUint32* args)
+! so we can just copy these through
+
+ mov %i0, %o0
+ mov %i1, %o1
+ mov %i2, %o2
+ call PrepareAndDispatch
+ nop
+ mov %o0,%i0 ! propagate return value
+ b .LL1
+ nop
+.LL1:
+ ret
+ restore
+
+ .size SharedStub, .-SharedStub
+ .type SharedStub, #function
diff --git a/www/seamonkey/files/xptcstubs_sparc64_netbsd.cpp b/www/seamonkey/files/xptcstubs_sparc64_netbsd.cpp
new file mode 100644
index 00000000000..c6fd89e6892
--- /dev/null
+++ b/www/seamonkey/files/xptcstubs_sparc64_netbsd.cpp
@@ -0,0 +1,122 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+ *
+ * The contents of this file are subject to the Netscape Public
+ * License Version 1.1 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.mozilla.org/NPL/
+ *
+ * Software distributed under the License is distributed on an "AS
+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * rights and limitations under the License.
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is Netscape
+ * Communications Corporation. Portions created by Netscape are
+ * Copyright (C) 1999 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ */
+
+/* Implement shared vtbl methods. */
+
+#include "xptcprivate.h"
+
+#if defined(sparc) || defined(__sparc__)
+
+extern "C" nsresult
+PrepareAndDispatch(nsXPTCStubBase* self, PRUint64 methodIndex, PRUint64* args)
+{
+
+#define PARAM_BUFFER_COUNT 16
+
+ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
+ nsXPTCMiniVariant* dispatchParams = NULL;
+ nsIInterfaceInfo* iface_info = NULL;
+ const nsXPTMethodInfo* info;
+ PRUint8 paramCount;
+ PRUint8 i;
+ nsresult result = NS_ERROR_FAILURE;
+
+ NS_ASSERTION(self,"no self");
+
+ self->GetInterfaceInfo(&iface_info);
+ NS_ASSERTION(iface_info,"no interface info");
+
+ iface_info->GetMethodInfo(PRUint16(methodIndex), &info);
+ NS_ASSERTION(info,"no interface info");
+
+ paramCount = info->GetParamCount();
+
+ // setup variant array pointer
+ if(paramCount > PARAM_BUFFER_COUNT)
+ dispatchParams = new nsXPTCMiniVariant[paramCount];
+ else
+ dispatchParams = paramBuffer;
+ NS_ASSERTION(dispatchParams,"no place for params");
+
+ PRUint64* ap = args;
+ for(i = 0; i < paramCount; i++, ap++)
+ {
+ const nsXPTParamInfo& param = info->GetParam(i);
+ const nsXPTType& type = param.GetType();
+ nsXPTCMiniVariant* dp = &dispatchParams[i];
+
+ if(param.IsOut() || !type.IsArithmetic())
+ {
+ dp->val.p = (void*) *ap;
+ continue;
+ }
+ // else
+ switch(type)
+ {
+ case nsXPTType::T_I8 : dp->val.i8 = *((PRInt32*) ap); break;
+ case nsXPTType::T_I16 : dp->val.i16 = *((PRInt32*) ap); break;
+ case nsXPTType::T_I32 : dp->val.i32 = *((PRInt32*) ap); break;
+ case nsXPTType::T_DOUBLE : dp->val.d = *((double*) ap); break;
+ case nsXPTType::T_U64 : dp->val.u64 = *((PRUint64*) ap); break;
+ case nsXPTType::T_I64 : dp->val.i64 = *((PRInt64*) ap); break;
+ case nsXPTType::T_U8 : dp->val.u8 = *((PRUint32*) ap); break;
+ case nsXPTType::T_U16 : dp->val.u16 = *((PRUint32*)ap); break;
+ case nsXPTType::T_U32 : dp->val.u32 = *((PRUint32*)ap); break;
+ case nsXPTType::T_FLOAT : dp->val.f = *((float*) ap); break;
+ case nsXPTType::T_BOOL : dp->val.b = *((PRBool*) ap); break;
+ case nsXPTType::T_CHAR : dp->val.c = *((PRUint32*) ap); break;
+ case nsXPTType::T_WCHAR : dp->val.wc = *((PRInt32*) ap); break;
+ default:
+ NS_ASSERTION(0, "bad type");
+ break;
+ }
+ }
+
+ result = self->CallMethod((PRUint16)methodIndex, info, dispatchParams);
+
+ NS_RELEASE(iface_info);
+
+ if(dispatchParams != paramBuffer)
+ delete [] dispatchParams;
+
+ return result;
+}
+
+extern "C" int SharedStub(int, int*);
+
+#define STUB_ENTRY(n) \
+nsresult nsXPTCStubBase::Stub##n() \
+{ \
+ int dummy; /* defeat tail-call optimization */ \
+ return SharedStub(n, &dummy); \
+}
+
+#define SENTINEL_ENTRY(n) \
+nsresult nsXPTCStubBase::Sentinel##n() \
+{ \
+ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
+ return NS_ERROR_NOT_IMPLEMENTED; \
+}
+
+#include "xptcstubsdef.inc"
+
+#endif /* sparc || __sparc__ */
diff --git a/www/seamonkey/gecko-depends.mk b/www/seamonkey/gecko-depends.mk
new file mode 100644
index 00000000000..5dd35061258
--- /dev/null
+++ b/www/seamonkey/gecko-depends.mk
@@ -0,0 +1,11 @@
+# $NetBSD: gecko-depends.mk,v 1.1 2006/09/24 16:21:33 salo Exp $
+
+.if !empty(PKG_OPTIONS:Mfirefox)
+# needs .pc files
+BUILDLINK_API_DEPENDS.firefox+= firefox>=1.5nb2
+.include "../../www/firefox/buildlink3.mk"
+.else
+# needs .pc files
+BUILDLINK_API_DEPENDS.seamonkey+= seamonkey>=1.0.5nb1
+.include "../../www/seamonkey/buildlink3.mk"
+.endif
diff --git a/www/seamonkey/gecko-options.mk b/www/seamonkey/gecko-options.mk
new file mode 100644
index 00000000000..40650a4b917
--- /dev/null
+++ b/www/seamonkey/gecko-options.mk
@@ -0,0 +1,5 @@
+# $NetBSD: gecko-options.mk,v 1.1 2006/09/24 16:21:33 salo Exp $
+
+PKG_OPTIONS_REQUIRED_GROUPS+= gecko
+PKG_OPTIONS_GROUP.gecko= firefox seamonkey
+PKG_SUGGESTED_OPTIONS+= firefox
diff --git a/www/seamonkey/options.mk b/www/seamonkey/options.mk
index 9f9dbc702ca..dea96ca8858 100644
--- a/www/seamonkey/options.mk
+++ b/www/seamonkey/options.mk
@@ -1,4 +1,4 @@
-# $NetBSD: options.mk,v 1.1.1.1 2006/03/30 19:15:47 ghen Exp $
+# $NetBSD: options.mk,v 1.2 2006/09/24 16:21:33 salo Exp $
PKG_OPTIONS_VAR = PKG_OPTIONS.gecko
PKG_SUPPORTED_OPTIONS = debug
@@ -10,3 +10,18 @@ PKG_SUPPORTED_OPTIONS = debug
.if empty(PKG_OPTIONS:Mdebug)
CONFIGURE_ARGS+= --disable-debug
.endif
+
+.if ( ${MOZILLA_BIN} == "firefox-bin" || ${MOZILLA_BIN} == "thunderbird-bin" )
+PKG_SUPPORTED_OPTIONS += official-mozilla-branding
+.endif
+
+# Enable Official mozilla.org Branding for Firefox or Thunderbird.
+# Note that you cannot distribute builds with Official Branding
+# without permission of the Mozilla Foundation.
+# See http://www.mozilla.org/foundation/trademarks/
+.if !empty(PKG_OPTIONS:Mofficial-mozilla-branding)
+CONFIGURE_ARGS+= --enable-official-branding
+RESTRICTED= Cannot redistribute builds with Official Branding at this moment, we need permission of The Mozilla Foundation for this.
+NO_BIN_ON_CDROM= ${RESTRICTED}
+NO_BIN_ON_FTP= ${RESTRICTED}
+.endif