Add mozilla-firebird after a repo move from phoenix.

Mozilla Firebird is the browser reborn from the ashes of the Phoenix.

* Update to 0.6 [1]
* Add optional GTK+-2 support [2]
* Add [untested] Sparc64 support [3]
* Add [untested] Alpha support [4]
* Do not compile with -O2 by default.  Instead specify -DWITH_OPTIMIZED_CFLAGS
  to get extra optimizations
* Link the Java Plug-in again

Submitted by:	Stijn Hoop <stijn@win.tue.nl> [1]
		Christopher Nehren <apeiron@comcast.net> [2] (based on)
		tmm and kris [3]
		Bernd Walter <ticso@cicely.de> [4]
Minor fixes by:	obraun
This commit is contained in:
Joe Marcus Clarke 2003-06-02 18:30:59 +00:00
parent 6d680277e9
commit ed564c5560
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=82037
166 changed files with 12012 additions and 1402 deletions

View file

@ -1,57 +1,56 @@
# ex:ts=8 -*-mode: makefile-*-
#
# New ports collection makefile for: phoenix
# Date created: 2002/10/21
# Whom: Alan Eldridge <alane@FreeBSD.org>
# New ports collection makefile for: mozilla-firebird
# Date created: May 31, 2003
# Whom: Joe Marcus Clarke <marcus@FreeBSD.org>
#
# $FreeBSD$
#
PORTNAME= phoenix
PORTVERSION= 0.5
PORTREVISION= 4
CATEGORIES= www
MASTER_SITES= ${MASTER_SITE_LOCAL} ${BSD_WEBDIR}
MASTER_SITE_SUBDIR= alane
PORTNAME= firebird
PORTVERSION= 0.6
CATEGORIES= www
MASTER_SITES= http://komodo.mozilla.org/pub/firebird/releases/${PORTVERSION}/
PKGNAMEPREFIX= mozilla-
DISTNAME= MozillaFirebird-${PORTVERSION}-source
MAINTAINER= gnome@freebsd.org
COMMENT= Phoenix is a fast, low-overhead browser from the Mozilla project
MAINTAINER= gnome@FreeBSD.org
COMMENT= Mozilla Firebird is the next generation browser from the mozilla.org project
LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg \
png.5:${PORTSDIR}/graphics/png \
mng.1:${PORTSDIR}/graphics/libmng \
freetype.9:${PORTSDIR}/print/freetype2 \
IDL.2:${PORTSDIR}/devel/ORBit \
iconv.3:${PORTSDIR}/converters/libiconv \
nspr4.1:${PORTSDIR}/devel/nspr
BUILD_DEPENDS= zip:${PORTSDIR}/archivers/zip \
freetype-config:${PORTSDIR}/print/freetype2
BSD_WEBDIR=http://people.freebsd.org/~${MASTER_SITE_SUBDIR}/
USE_X_PREFIX= yes
USE_X_PREFIX= yes
USE_BZIP2= yes
USE_GMAKE= yes
USE_PERL5= yes
USE_REINPLACE= yes
HAS_CONFIGURE= yes
USE_BZIP2= yes
USE_GMAKE= yes
USE_PERL5= yes
USE_REINPLACE= yes
HAS_CONFIGURE= yes
USE_GNOME= gtk12 orbit
.if defined(WITH_GTK2)
USE_GNOME= gtk20 libidl
PKGNAMESUFFIX= -gtk2
.else
USE_GNOME= gtk12 orbit
.endif
NO_MTREE= yes
WRKSRC= ${WRKDIR}/mozilla
LOCAL_SUBDIR= lib/${PORTNAME}
LOCAL_PREFIX= ${PREFIX}/${LOCAL_SUBDIR}
JREDIR= ${LOCALBASE}/jdk1.3.1/jre
MOZVER= 1.3a
PLUGINSDIR= ${LOCAL_PREFIX}/lib/mozilla-${MOZVER}/plugins/
PLUGINSDIR= ${PREFIX}/lib/browser_plugins
.include <bsd.port.pre.mk>
.if ${PERL_LEVEL} < 500601
.undef NO_IGNORE
BROKEN= Phoenix only supports the ports versions of Perl.
BROKEN= Mozilla Firebird only supports the ports versions of Perl.
BROKEN+=If you have installed a Perl port, and are getting this message,
BROKEN+=please make sure you have given the command \'use.perl port\'.
.endif # ${PERL_LEVEL} < 500601
@ -61,13 +60,12 @@ PLIST=${WRKDIR}/plist
.if defined(WITH_DEBUG)
WITH_LOGGING= yes
WITHOUT_OPTIMIZE= yes
CONFIGURE_ENV+= WITH_DEBUG=yes
.endif # defined(WITH_DEBUG)
.if !defined(WITHOUT_OPTIMIZE)
.if defined(WITH_OPTIMIZED_CFLAGS)
CFLAGS+= -O2
.endif # defined(WITH_OPTIMIZE)
.endif # defined(WITH_OPTIMIZED_CFLAGS)
.if defined(WITH_LOGGING)
CONFIGURE_ENV+= WITH_LOGGING=yes
@ -79,12 +77,16 @@ CONFIGURE_ENV+= WITHOUT_XFT=yes
LIB_DEPENDS+= Xft.2:${PORTSDIR}/x11-fonts/Xft
.endif # !defined(WITHOUT_XFT)
.if defined(WITH_GTK2)
CONFIGURE_ENV+= WITH_GTK2=yes
.endif # defined(WITH_GTK2)
CPPFLAGS+= -I${X11BASE}/include
CFLAGS+= ${PTHREAD_CFLAGS}
LDFLAGS+= -L${X11BASE}/lib
LIBS+= ${PTHREAD_LIBS}
EXTRA_SCRIPTS= phoenix.rb
EXTRA_SCRIPTS= firebird.rb
pre-extract::
@${ECHO_MSG}
@ -101,12 +103,17 @@ post-extract::
-e 's|@PREFIX@|${LOCAL_PREFIX}|' \
<${FILESDIR}/mozconfig.in >${WRKSRC}/.mozconfig
post-patch:
@${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' \
${WRKSRC}/build/unix/run-mozilla.sh
post-build:
${RM} -f ${PLIST}
${TOUCH} ${PLIST}
pre-install:
${RM} -fr ${LOCAL_PREFIX}
-${MKDIR} ${PLUGINSDIR}
install-extra:
.for i in ${EXTRA_SCRIPTS}
@ -114,18 +121,20 @@ install-extra:
.endfor # i in ${EXTRA_SCRIPTS}
link-bins:
${RM} -f ${PREFIX}/bin/phoenix
${LN} -s ${LOCAL_PREFIX}/bin/phoenix \
${PREFIX}/bin/phoenix
${RM} -f ${PREFIX}/bin/phoenix-config
${RM} -f ${PREFIX}/bin/firebird
${LN} -s ${LOCAL_PREFIX}/bin/MozillaFirebird \
${PREFIX}/bin/firebird
${RM} -f ${PREFIX}/bin/MozillaFirebird
${LN} -s ${LOCAL_PREFIX}/bin/MozillaFirebird \
${PREFIX}/bin/MozillaFirebird
${RM} -f ${PREFIX}/bin/firebird-config
${LN} -s ${LOCAL_PREFIX}/bin/mozilla-config \
${PREFIX}/bin/phoenix-config
${PREFIX}/bin/firebird-config
# not used because of undefined symbol errors
link-java:
-${RM} -f ${PLUGINSDIR}/libjavaplugin_oji.so
-${LN} -sf \
${JREDIR}/plugin/i386/ns600/libjavaplugin_oji.so \
${JREDIR}/plugin/${ARCH}/ns600/libjavaplugin_oji.so \
${PLUGINSDIR}/libjavaplugin_oji.so
cleanup-install:
@ -134,8 +143,9 @@ cleanup-install:
cons-plist:
-${RM} -f ${PLIST}
${ECHO_CMD} bin/phoenix >>${PLIST}
${ECHO_CMD} bin/phoenix-config >>${PLIST}
${ECHO_CMD} bin/firebird >>${PLIST}
${ECHO_CMD} bin/MozillaFirebird >>${PLIST}
${ECHO_CMD} bin/firebird-config >>${PLIST}
.for i in ${EXTRA_SCRIPTS}
${ECHO_CMD} bin/${i} >>${PLIST}
.endfor # i in ${EXTRA_SCRIPTS}
@ -158,8 +168,8 @@ cons-plist:
# Under normal circumstances, you should not put anything after
# the above line. However, this is the only way I can state the
# dependency without trashing the actual code of the generate-plist
# target. This is a limitation of the make(1) program itself.
# target. This is a limitation of the make(1) program itself.
# </alane>
generate-plist: install-extra link-bins cleanup-install cons-plist
generate-plist: install-extra link-bins link-java cleanup-install cons-plist
#EOF

View file

@ -1 +1 @@
MD5 (phoenix-0.5.tar.bz2) = fb99a5a866a99fbb15269699a1022b47
MD5 (MozillaFirebird-0.6-source.tar.bz2) = de52dd03f8628724f14f517cd6346755

View file

@ -33,7 +33,7 @@
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$Id: MoZiLLa.in,v 1.18 2002/12/18 02:40:58 alane Exp $
$Id: firebird.rb,v 1.2 2003/05/31 17:24:19 marcus Exp $
2002-12-16 Alan Eldridge <alane@geeksrus.net>
@ -68,10 +68,10 @@ end
IO::popen("xwininfo -display #{$display} -root -tree") {
|io|
if NAME != "phoenix"
if NAME != "firebird"
$windows = io.grep(%r<"Mozilla"\s+"navigator:\s*browser">)
else
$windows = io.grep(%r<Phoenix.*"Mozilla"\s+"navigator:\s*browser">)
$windows = io.grep(%r<MozillaFirebird-bin.*>)
end
}

View file

@ -1,7 +1,7 @@
#!/bin/sh
# -*-shell-script-*-
#
# mkdistfile -- maintainer's utility to make a phoenix distfile
# mkdistfile -- maintainer's utility to make a firebird distfile
#
# Copyright (c) 2002, Alan Eldridge
# All rights reserved.
@ -87,7 +87,7 @@ EOF
############################################################
# show version and exit
############################################################
VERSION='$Revision$'
VERSION='$Revision: 1.1 $'
VERSION=${VERSION#* }; VERSION=${VERSION% *}
version() { echo "$APPNAME $VERSION" \
"Copyright (c) 2002 Alan Eldridge"; exit $1;}
@ -165,7 +165,7 @@ EOF
test -d mozilla || die "No mozilla dir here."
find mozilla 2>/dev/null | egrep -f $exfile | xargs rm -fr
rm -f $exfile
status "making phoenix-$REV.tar.bz2 ..."
tar -cjpf phoenix-$REV.tar.bz2 mozilla
status "making firebird-$REV.tar.bz2 ..."
tar -cjpf firebird-$REV.tar.bz2 mozilla
status "done."
#EOF

View file

@ -20,10 +20,6 @@ export XP_UNIX=1
mk_add_options XP_UNIX=1
export PERL=/usr/local/bin/perl
mk_add_options PERL=$PERL
export GTK_CONFIG=@X11BASE@/bin/gtk12-config
mk_add_options GTK_CONFIG=$GTK_CONFIG
export GLIB_CONFIG=@LOCALBASE@/bin/glib12-config
mk_add_options GLIB_CONFIG=$GLIB_CONFIG
# Configure options for installation
ac_add_options --prefix=@PREFIX@
######################################################################
@ -46,6 +42,8 @@ ac_add_options --disable-jsd
ac_add_options --disable-ldap
ac_add_options --disable-pedantic
ac_add_options --disable-xinerama
ac_add_options --enable-extensions=default,-inspector,-irc,-venkman,-content-packs,-help
ac_add_options --enable-plaintext-editor-only
######################################################################
# conditional from port Makefile
if test -n "$WITH_DEBUG"; then
@ -63,4 +61,9 @@ if test -z "$WITHOUT_XFT"; then
else
ac_add_options --disable-xft
fi # test -z "$WITHOUT_XFT"
if test -n "$WITH_GTK2"; then
ac_add_options --enable-default-toolkit=gtk2
else
ac_add_options --enable-default-toolkit=gtk
fi # test -n "$WITH_GTK2"
######################################################################

View file

@ -0,0 +1,11 @@
--- extensions/transformiix/source/base/Double.cpp.orig Wed May 21 04:42:05 2003
+++ extensions/transformiix/source/base/Double.cpp Wed May 21 04:42:24 2003
@@ -51,7 +51,7 @@
//A trick to handle IEEE floating point exceptions on FreeBSD - E.D.
#ifdef __FreeBSD__
#include <ieeefp.h>
-#ifdef __alpha__
+#if defined(__alpha__) || defined(__sparc64__)
fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
#else
fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP|FP_X_DNML;

View file

@ -0,0 +1,492 @@
--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Mon Jan 27 22:52:51 2003
+++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Tue May 27 01:41:12 2003
@@ -100,9 +100,15 @@
ASFILES := xptcinvoke_asm_osf1_alpha.s xptcstubs_asm_osf1_alpha.s
endif
#
+# FreeBSD/Alpha
+#
+ifeq ($(OS_ARCH)$(OS_TEST),FreeBSDalpha)
+CPPSRCS := xptcinvoke_freebsd_alpha.cpp xptcstubs_freebsd_alpha.cpp
+endif
+#
# Linux/Alpha
#
-ifneq (,$(filter Linuxalpha FreeBSDalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
+ifneq (,$(filter Linuxalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
CPPSRCS := xptcinvoke_linux_alpha.cpp xptcstubs_linux_alpha.cpp
endif
#
--- config/rules.mk.orig Mon May 5 21:04:55 2003
+++ config/rules.mk Tue May 27 01:33:11 2003
@@ -444,7 +444,11 @@
ifeq ($(OS_ARCH),FreeBSD)
ifdef IS_COMPONENT
+ifneq (,$(filter alpha,$(OS_TEST)))
+EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic -lc
+else
EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic
+endif
endif
endif
--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp.orig Tue May 27 01:37:25 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp Tue May 27 01:37:00 2003
@@ -0,0 +1,184 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * 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 the Initial Developer are Copyright (C) 1998
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the NPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the NPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/* Platform specific code to invoke XPCOM methods on native objects */
+
+/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
+
+#include "xptcprivate.h"
+
+/* Prototype specifies unmangled function name and disables unused warning */
+static void
+invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
+__asm__("invoke_copy_to_stack") __attribute__((unused));
+
+static void
+invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
+{
+ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
+
+ for(PRUint32 i = 0; i < paramCount; i++, d++, s++)
+ {
+ if(s->IsPtrData())
+ {
+ *d = (PRUint64)s->ptr;
+ continue;
+ }
+ switch(s->type)
+ {
+ case nsXPTType::T_I8 : *d = (PRUint64)s->val.i8; break;
+ case nsXPTType::T_I16 : *d = (PRUint64)s->val.i16; break;
+ case nsXPTType::T_I32 : *d = (PRUint64)s->val.i32; break;
+ case nsXPTType::T_I64 : *d = (PRUint64)s->val.i64; break;
+ case nsXPTType::T_U8 : *d = (PRUint64)s->val.u8; break;
+ case nsXPTType::T_U16 : *d = (PRUint64)s->val.u16; break;
+ case nsXPTType::T_U32 : *d = (PRUint64)s->val.u32; break;
+ case nsXPTType::T_U64 : *d = (PRUint64)s->val.u64; break;
+ case nsXPTType::T_FLOAT :
+ if(i < NUM_ARG_REGS)
+ {
+ // convert floats to doubles if they are to be passed
+ // via registers so we can just deal with doubles later
+ union { PRUint64 u64; double d; } t;
+ t.d = (double)s->val.f;
+ *d = t.u64;
+ }
+ else
+ // otherwise copy to stack normally
+ *d = (PRUint64)s->val.u32;
+ break;
+ case nsXPTType::T_DOUBLE : *d = (PRUint64)s->val.u64; break;
+ case nsXPTType::T_BOOL : *d = (PRUint64)s->val.b; break;
+ case nsXPTType::T_CHAR : *d = (PRUint64)s->val.c; break;
+ case nsXPTType::T_WCHAR : *d = (PRUint64)s->val.wc; break;
+ default:
+ // all the others are plain pointer types
+ *d = (PRUint64)s->val.p;
+ break;
+ }
+ }
+}
+
+/*
+ * XPTC_PUBLIC_API(nsresult)
+ * XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ * PRUint32 paramCount, nsXPTCVariant* params, void* vt)
+ */
+__asm__(
+ "#### XPTC_InvokeByIndex ####\n"
+".text\n\t"
+ ".align 5\n\t"
+ ".globl XPTC_InvokeByIndex\n\t"
+ ".ent XPTC_InvokeByIndex\n"
+"XPTC_InvokeByIndex:\n\t"
+ ".frame $15,32,$26,0\n\t"
+ ".mask 0x4008000,-32\n\t"
+ "ldgp $29,0($27)\n"
+"$XPTC_InvokeByIndex..ng:\n\t"
+ "subq $30,32,$30\n\t"
+ "stq $26,0($30)\n\t"
+ "stq $15,8($30)\n\t"
+ "bis $30,$30,$15\n\t"
+ ".prologue 1\n\t"
+
+ /*
+ * Allocate enough stack space to hold the greater of 6 or "paramCount"+1
+ * parameters. (+1 for "this" pointer) Room for at least 6 parameters
+ * is required for storage of those passed via registers.
+ */
+
+ "bis $31,5,$2\n\t" /* count = MAX(5, "paramCount") */
+ "cmplt $2,$18,$1\n\t"
+ "cmovne $1,$18,$2\n\t"
+ "s8addq $2,16,$1\n\t" /* room for count+1 params (8 bytes each) */
+ "bic $1,15,$1\n\t" /* stack space is rounded up to 0 % 16 */
+ "subq $30,$1,$30\n\t"
+
+ "stq $16,0($30)\n\t" /* save "that" (as "this" pointer) */
+ "stq $17,16($15)\n\t" /* save "methodIndex" */
+
+ "addq $30,8,$16\n\t" /* pass stack pointer */
+ "bis $18,$18,$17\n\t" /* pass "paramCount" */
+ "bis $19,$19,$18\n\t" /* pass "params" */
+ "bsr $26,$invoke_copy_to_stack..ng\n\t" /* call invoke_copy_to_stack */
+
+ /*
+ * Copy the first 6 parameters to registers and remove from stack frame.
+ * Both the integer and floating point registers are set for each parameter
+ * except the first which is the "this" pointer. (integer only)
+ * The floating point registers are all set as doubles since the
+ * invoke_copy_to_stack function should have converted the floats.
+ */
+ "ldq $16,0($30)\n\t" /* integer registers */
+ "ldq $17,8($30)\n\t"
+ "ldq $18,16($30)\n\t"
+ "ldq $19,24($30)\n\t"
+ "ldq $20,32($30)\n\t"
+ "ldq $21,40($30)\n\t"
+ "ldt $f17,8($30)\n\t" /* floating point registers */
+ "ldt $f18,16($30)\n\t"
+ "ldt $f19,24($30)\n\t"
+ "ldt $f20,32($30)\n\t"
+ "ldt $f21,40($30)\n\t"
+
+ "addq $30,48,$30\n\t" /* remove params from stack */
+
+ /*
+ * Call the virtual function with the constructed stack frame.
+ */
+ "bis $16,$16,$1\n\t" /* load "this" */
+ "ldq $2,16($15)\n\t" /* load "methodIndex" */
+ "ldq $1,0($1)\n\t" /* load vtable */
+#if 0
+ "s8addq $2,16,$2\n\t" /* vtable index = "methodIndex" * 8 + 16 */
+#else
+ "mulq $2, 8, $2\n\t"
+ "addq $2, 0, $2\n\t" /* vtable index = "methodIndex" * 16 + 24 */
+#endif
+ "addq $1,$2,$1\n\t"
+ "ldq $27,0($1)\n\t" /* load address of function */
+ "jsr $26,($27),0\n\t" /* call virtual function */
+ "ldgp $29,0($26)\n\t"
+
+ "bis $15,$15,$30\n\t"
+ "ldq $26,0($30)\n\t"
+ "ldq $15,8($30)\n\t"
+ "addq $30,32,$30\n\t"
+ "ret $31,($26),1\n\t"
+ ".end XPTC_InvokeByIndex"
+ );
+
--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp.orig Tue May 27 01:37:30 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp Tue May 27 01:37:04 2003
@@ -0,0 +1,269 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * 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 the Initial Developer are Copyright (C) 1999
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the NPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the NPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/* Implement shared vtbl methods. */
+
+/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
+
+#include <sys/types.h>
+#include <machine/cpu.h>
+#include "xptcprivate.h"
+
+/* Prototype specifies unmangled function name and disables unused warning */
+static nsresult
+PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
+__asm__("PrepareAndDispatch") __attribute__((unused));
+
+static nsresult
+PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
+{
+ const PRUint8 PARAM_BUFFER_COUNT = 16;
+ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
+
+ 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");
+
+ // args[0] to args[NUM_ARG_REGS] hold floating point register values
+ PRUint64* ap = args + NUM_ARG_REGS;
+ 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 = (PRInt8) *ap; break;
+ case nsXPTType::T_I16 : dp->val.i16 = (PRInt16) *ap; break;
+ case nsXPTType::T_I32 : dp->val.i32 = (PRInt32) *ap; break;
+ case nsXPTType::T_I64 : dp->val.i64 = (PRInt64) *ap; break;
+ case nsXPTType::T_U8 : dp->val.u8 = (PRUint8) *ap; break;
+ case nsXPTType::T_U16 : dp->val.u16 = (PRUint16) *ap; break;
+ case nsXPTType::T_U32 : dp->val.u32 = (PRUint32) *ap; break;
+ case nsXPTType::T_U64 : dp->val.u64 = (PRUint64) *ap; break;
+ case nsXPTType::T_FLOAT :
+ if(i < NUM_ARG_REGS)
+ {
+ // floats passed via registers are stored as doubles
+ // in the first NUM_ARG_REGS entries in args
+ dp->val.u64 = (PRUint64) args[i];
+ dp->val.f = (float) dp->val.d; // convert double to float
+ }
+ else
+ dp->val.u32 = (PRUint32) *ap;
+ break;
+ case nsXPTType::T_DOUBLE :
+ // doubles passed via registers are also stored
+ // in the first NUM_ARG_REGS entries in args
+ dp->val.u64 = (i < NUM_ARG_REGS) ? args[i] : *ap;
+ break;
+ case nsXPTType::T_BOOL : dp->val.b = (PRBool) *ap; break;
+ case nsXPTType::T_CHAR : dp->val.c = (char) *ap; break;
+ case nsXPTType::T_WCHAR : dp->val.wc = (PRUnichar) *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;
+}
+
+/*
+ * SharedStub()
+ * Collects arguments and calls PrepareAndDispatch. The "methodIndex" is
+ * passed to this function via $1 to preserve the argument registers.
+ */
+__asm__(
+ "#### SharedStub ####\n"
+".text\n\t"
+ ".align 5\n\t"
+ ".ent SharedStub\n"
+"SharedStub:\n\t"
+ ".frame $30,96,$26,0\n\t"
+ ".mask 0x4000000,-96\n\t"
+ "ldgp $29,0($27)\n"
+"$SharedStub..ng:\n\t"
+ "subq $30,96,$30\n\t"
+ "stq $26,0($30)\n\t"
+ ".prologue 1\n\t"
+
+ /*
+ * Store arguments passed via registers to the stack.
+ * Floating point registers are stored as doubles and converted
+ * to floats in PrepareAndDispatch if necessary.
+ */
+ "stt $f17,16($30)\n\t" /* floating point registers */
+ "stt $f18,24($30)\n\t"
+ "stt $f19,32($30)\n\t"
+ "stt $f20,40($30)\n\t"
+ "stt $f21,48($30)\n\t"
+ "stq $17,56($30)\n\t" /* integer registers */
+ "stq $18,64($30)\n\t"
+ "stq $19,72($30)\n\t"
+ "stq $20,80($30)\n\t"
+ "stq $21,88($30)\n\t"
+
+ /*
+ * Call PrepareAndDispatch function.
+ */
+ "bis $1,$1,$17\n\t" /* pass "methodIndex" */
+ "addq $30,16,$18\n\t" /* pass "args" */
+ "bsr $26,$PrepareAndDispatch..ng\n\t"
+
+ "ldq $26,0($30)\n\t"
+ "addq $30,96,$30\n\t"
+ "ret $31,($26),1\n\t"
+ ".end SharedStub"
+ );
+
+#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
+/*
+ * nsresult nsXPTCStubBase::Stub##n()
+ * Sets register $1 to "methodIndex" and jumps to SharedStub.
+ */
+#define STUB_ENTRY(n) \
+__asm__( \
+ "#### Stub"#n" ####\n" \
+".text\n\t" \
+ ".align 5\n\t" \
+ ".globl _ZN14nsXPTCStubBase5Stub"#n"Ev\n\t" \
+ ".ent _ZN14nsXPTCStubBase5Stub"#n"Ev\n" \
+"_ZN14nsXPTCStubBase5Stub"#n"Ev:\n\t" \
+ ".frame $30,0,$26,0\n\t" \
+ "ldgp $29,0($27)\n" \
+"$_ZN14nsXPTCStubBase5Stub"#n"Ev..ng:\n\t" \
+ ".prologue 1\n\t" \
+ "lda $1,"#n"\n\t" \
+ "br $31,$SharedStub..ng\n\t" \
+ ".end _ZN14nsXPTCStubBase5Stub"#n"Ev" \
+ ); \
+__asm__( \
+ "#### Stub"#n" ####\n" \
+".text\n\t" \
+ ".align 5\n\t" \
+ ".globl _ZN14nsXPTCStubBase6Stub"#n"Ev\n\t" \
+ ".ent _ZN14nsXPTCStubBase6Stub"#n"Ev\n" \
+"_ZN14nsXPTCStubBase6Stub"#n"Ev:\n\t" \
+ ".frame $30,0,$26,0\n\t" \
+ "ldgp $29,0($27)\n" \
+"$_ZN14nsXPTCStubBase6Stub"#n"Ev..ng:\n\t" \
+ ".prologue 1\n\t" \
+ "lda $1,"#n"\n\t" \
+ "br $31,$SharedStub..ng\n\t" \
+ ".end _ZN14nsXPTCStubBase6Stub"#n"Ev" \
+ ); \
+__asm__( \
+ "#### Stub"#n" ####\n" \
+".text\n\t" \
+ ".align 5\n\t" \
+ ".globl _ZN14nsXPTCStubBase7Stub"#n"Ev\n\t" \
+ ".ent _ZN14nsXPTCStubBase7Stub"#n"Ev\n" \
+"_ZN14nsXPTCStubBase7Stub"#n"Ev:\n\t" \
+ ".frame $30,0,$26,0\n\t" \
+ "ldgp $29,0($27)\n" \
+"$_ZN14nsXPTCStubBase7Stub"#n"Ev..ng:\n\t" \
+ ".prologue 1\n\t" \
+ "lda $1,"#n"\n\t" \
+ "br $31,$SharedStub..ng\n\t" \
+ ".end _ZN14nsXPTCStubBase7Stub"#n"Ev" \
+ );
+#else
+/*
+ * nsresult nsXPTCStubBase::Stub##n()
+ * Sets register $1 to "methodIndex" and jumps to SharedStub.
+ */
+#define STUB_ENTRY(n) \
+nsresult nsXPTCStubBase::Stub##n() \
+{ \
+ nsresult result; \
+__asm__ __volatile__( \
+ "ldah $29,0($27)\n\t" \
+ "lda $29,0($29)\n\t" \
+ "lda $1, "#n"\n\t" \
+ "br $31, $SharedStub..ng\n\t" \
+ "mov $0, %0\n\t" \
+ : "=r" (result) \
+ ); \
+ return result; \
+}
+#endif
+
+#define SENTINEL_ENTRY(n) \
+nsresult nsXPTCStubBase::Sentinel##n() \
+{ \
+ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
+ return NS_ERROR_NOT_IMPLEMENTED; \
+}
+
+#include "xptcstubsdef.inc"
+

View file

@ -0,0 +1,30 @@
--- build/unix/run-mozilla.sh.orig Fri Apr 18 23:12:28 2003
+++ build/unix/run-mozilla.sh Sat May 31 19:03:29 2003
@@ -355,7 +355,7 @@
fi
##
## Set LD_LIBRARY_PATH
-LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
+LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:%%PREFIX%%/lib/browser_plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
if [ -n "$LD_LIBRARYN32_PATH" ]
then
LD_LIBRARYN32_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN32_PATH+":$LD_LIBRARYN32_PATH"}
@@ -402,7 +402,7 @@
fi
fi
# Font path for Xft
-FONTCONFIG_PATH="/etc/fonts:${MOZILLA_FIVE_HOME}/res/Xft"
+FONTCONFIG_PATH="%%PREFIX%%/etc/fonts:${MOZILLA_FIVE_HOME}/res/Xft"
export FONTCONFIG_PATH
if [ "$moz_debug" -eq 1 ]
@@ -445,6 +445,9 @@
#
export MOZILLA_FIVE_HOME LD_LIBRARY_PATH
export SHLIB_PATH LIBPATH LIBRARY_PATH ADDON_PATH DYLD_LIBRARY_PATH
+
+MOZ_PLUGIN_PATH=%%PREFIX%%/lib/browser_plugins
+export MOZ_PLUGIN_PATH
if [ $moz_debug -eq 1 ]
then

View file

@ -0,0 +1,57 @@
--- gfx/src/gtk/nsFontMetricsXft.cpp.orig Mon May 12 06:03:28 2003
+++ gfx/src/gtk/nsFontMetricsXft.cpp Sat May 31 11:32:14 2003
@@ -90,6 +90,7 @@
FcPattern *mPattern;
FcPattern *mFontName;
FcCharSet *mCharset;
+ int mNotXft;
};
struct MozXftLangGroup {
@@ -772,7 +773,7 @@
// font in our loaded list that supports the character
for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
- if (FcCharSetHasChar(font->mCharset, aChar))
+ if (FcCharSetHasChar(font->mCharset, aChar) && font->GetXftFont())
return font;
}
@@ -1194,7 +1195,7 @@
for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
nsFontXft *font;
font = (nsFontXft *)mLoadedFonts.ElementAt(j);
- if (FcCharSetHasChar(font->mCharset, c)) {
+ if (FcCharSetHasChar(font->mCharset, c) && font->GetXftFont()) {
foundFont = font;
break;
}
@@ -1503,6 +1504,7 @@
FcPatternReference(mFontName);
mXftFont = nsnull;
+ mNotXft = 0;
// set up our charset
mCharset = nsnull;
@@ -1529,7 +1531,7 @@
XftFont *
nsFontXft::GetXftFont(void)
{
- if (!mXftFont) {
+ if (!mXftFont && !mNotXft) {
FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
if (!pat)
return nsnull;
@@ -1548,8 +1550,10 @@
FcPatternDel(pat, FC_SPACING);
mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
- if (!mXftFont)
+ if (!mXftFont) {
FcPatternDestroy(pat);
+ mNotXft = 1;
+ }
}
return mXftFont;

View file

@ -0,0 +1,29 @@
--- js/src/jsfun.c.orig Fri May 30 20:55:38 2003
+++ js/src/jsfun.c Fri May 30 20:54:24 2003
@@ -1081,7 +1081,7 @@
JSString *atomstr;
char *propname;
JSScopeProperty *sprop;
- jsid userid;
+ uint32 userid;
JSAtom *atom;
uintN i, n, dupflag;
uint32 type;
@@ -1157,7 +1157,7 @@
userid = INT_TO_JSVAL(sprop->shortid);
propname = ATOM_BYTES((JSAtom *)sprop->id);
if (!JS_XDRUint32(xdr, &type) ||
- !JS_XDRUint32(xdr, (uint32 *)&userid) ||
+ !JS_XDRUint32(xdr, &userid) ||
!JS_XDRCString(xdr, &propname)) {
if (mark)
JS_ARENA_RELEASE(&cx->tempPool, mark);
@@ -1173,7 +1173,7 @@
uintN attrs = JSPROP_ENUMERATE | JSPROP_PERMANENT;
if (!JS_XDRUint32(xdr, &type) ||
- !JS_XDRUint32(xdr, (uint32 *)&userid) ||
+ !JS_XDRUint32(xdr, &userid) ||
!JS_XDRCString(xdr, &propname)) {
return JS_FALSE;
}

View file

@ -0,0 +1,21 @@
--- nsprpub/pr/src/md/unix/unix.c.orig Sat May 31 18:06:04 2003
+++ nsprpub/pr/src/md/unix/unix.c Sat May 31 18:04:43 2003
@@ -65,7 +65,8 @@
* PRInt32* pointer to a _PRSockLen_t* pointer.
*/
#if defined(HAVE_SOCKLEN_T) \
- || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2)
+ || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2) \
+ || defined(FREEBSD)
#define _PRSockLen_t socklen_t
#elif defined(IRIX) || defined(HPUX) || defined(OSF1) || defined(SOLARIS) \
|| defined(AIX4_1) || defined(LINUX) || defined(SONY) \
@@ -73,7 +74,7 @@
|| defined(SUNOS4) || defined(NCR) || defined(DARWIN) \
|| defined(NEXTSTEP) || defined(QNX)
#define _PRSockLen_t int
-#elif (defined(AIX) && !defined(AIX4_1)) || defined(FREEBSD) \
+#elif (defined(AIX) && !defined(AIX4_1)) \
|| defined(NETBSD) || defined(OPENBSD) || defined(UNIXWARE) \
|| defined(DGUX) || defined(VMS) || defined(NTO)
#define _PRSockLen_t size_t

View file

@ -1,18 +1,11 @@
--- nsprpub/pr/src/misc/prtime.c.orig Sun Mar 31 12:17:46 2002
+++ nsprpub/pr/src/misc/prtime.c Tue Dec 17 21:30:30 2002
@@ -1666,12 +1666,13 @@
* values for these two fields.
--- nsprpub/pr/src/misc/prtime.c.orig Thu Feb 27 01:01:02 2003
+++ nsprpub/pr/src/misc/prtime.c Thu May 22 16:46:49 2003
@@ -1666,7 +1666,7 @@
*/
-#if defined(SUNOS4) || (__GLIBC__ >= 2) || defined(XP_BEOS)
+#if defined(__FreeBSD__)|| defined(SUNOS4) \
+ || (__GLIBC__ >= 2) || defined(XP_BEOS)
if (mktime(&a) == -1) {
PR_snprintf(buf, buflen, "can't get timezone");
return 0;
}
-#endif
+#endif /* check for __FreeBSD__, too <alane@freebsd.org> */
return strftime(buf, buflen, fmt, &a);
}
#if defined(SUNOS4) || (__GLIBC__ >= 2) || defined(XP_BEOS) \
- || defined(NETBSD)
+ || defined(NETBSD) || defined(__FreeBSD__)
a.tm_zone = NULL;
a.tm_gmtoff = tm->tm_params.tp_gmt_offset + tm->tm_params.tp_dst_offset;
#endif

View file

@ -0,0 +1,69 @@
diff -ru ./nsprpub/pr/include/md/_freebsd.cfg ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.cfg
--- ./nsprpub/pr/include/md/_freebsd.cfg Wed Jan 2 18:38:25 2002
+++ ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.cfg Tue May 20 21:27:31 2003
@@ -138,6 +138,53 @@
#define PR_ALIGN_OF_DOUBLE 8
#define PR_ALIGN_OF_POINTER 8
+#elif defined(__sparc__)
+
+#undef IS_LITTLE_ENDIAN
+#define IS_BIG_ENDIAN 1
+#define HAVE_LONG_LONG
+#define HAVE_ALIGNED_DOUBLES
+#define HAVE_ALIGNED_LONGLONGS
+#define IS_64
+
+#define PR_BYTES_PER_BYTE 1
+#define PR_BYTES_PER_SHORT 2
+#define PR_BYTES_PER_INT 4
+#define PR_BYTES_PER_INT64 8
+#define PR_BYTES_PER_LONG 8
+#define PR_BYTES_PER_FLOAT 4
+#define PR_BYTES_PER_DOUBLE 8
+#define PR_BYTES_PER_WORD 8
+#define PR_BYTES_PER_DWORD 8
+#define PR_BYTES_PER_WORD_LOG2 3
+#define PR_BYTES_PER_DWORD_LOG2 3
+
+#define PR_BITS_PER_BYTE 8
+#define PR_BITS_PER_SHORT 16
+#define PR_BITS_PER_INT 32
+#define PR_BITS_PER_INT64 64
+#define PR_BITS_PER_LONG 64
+#define PR_BITS_PER_FLOAT 32
+#define PR_BITS_PER_DOUBLE 64
+#define PR_BITS_PER_WORD 64
+
+#define PR_BITS_PER_BYTE_LOG2 3
+#define PR_BITS_PER_SHORT_LOG2 4
+#define PR_BITS_PER_INT_LOG2 5
+#define PR_BITS_PER_INT64_LOG2 6
+#define PR_BITS_PER_LONG_LOG2 6
+#define PR_BITS_PER_FLOAT_LOG2 5
+#define PR_BITS_PER_DOUBLE_LOG2 6
+#define PR_BITS_PER_WORD_LOG2 6
+
+#define PR_ALIGN_OF_SHORT 2
+#define PR_ALIGN_OF_INT 4
+#define PR_ALIGN_OF_LONG 8
+#define PR_ALIGN_OF_INT64 8
+#define PR_ALIGN_OF_FLOAT 4
+#define PR_ALIGN_OF_DOUBLE 8
+#define PR_ALIGN_OF_POINTER 8
+
#else
#error "Unknown CPU architecture"
diff -ru ./nsprpub/pr/include/md/_freebsd.h ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.h
--- ./nsprpub/pr/include/md/_freebsd.h Thu Jan 16 15:09:12 2003
+++ ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.h Tue May 20 21:27:13 2003
@@ -48,6 +48,8 @@
#define _PR_SI_ARCHITECTURE "x86"
#elif defined(__alpha)
#define _PR_SI_ARCHITECTURE "alpha"
+#elif defined(__sparc__)
+#define _PR_SI_ARCHITECTURE "sparc"
#else
#error "Unknown CPU architecture"
#endif

View file

@ -0,0 +1,345 @@
--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Mon May 26 13:26:01 2003
+++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Mon May 26 13:30:04 2003
@@ -287,6 +287,15 @@
ASFILES := xptcinvoke_asm_sparc_netbsd.s xptcstubs_asm_sparc_netbsd.s
endif
#
+# FreeBSD/SPARC64
+#
+ifeq ($(OS_ARCH),FreeBSD)
+ifneq (,$(findstring sparc,$(OS_TEST)))
+CPPSRCS := xptcinvoke_sparc64_freebsd.cpp xptcstubs_sparc64_freebsd.cpp
+ASFILES := xptcinvoke_asm_sparc64_freebsd.s xptcstubs_asm_sparcv9_solaris.s
+endif
+endif
+#
# Solaris/SPARC
#
ifeq ($(OS_ARCH),SunOS)
--- /dev/null Mon May 26 13:22:00 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc64_freebsd.cpp Mon May 26 04:12:55 2003
@@ -0,0 +1,123 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * The contents of this file are subject to the Mozilla 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/MPL/
+ *
+ * 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) 2001 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ * Stuart Parmenter <pavlov@netscape.com>
+ */
+
+/* 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 = *((PRInt64*) ap); break;
+ case nsXPTType::T_I16 : dp->val.i16 = *((PRInt64*) ap); break;
+ case nsXPTType::T_I32 : dp->val.i32 = *((PRInt64*) 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 = *((PRUint64*) ap); break;
+ case nsXPTType::T_U16 : dp->val.u16 = *((PRUint64*)ap); break;
+ case nsXPTType::T_U32 : dp->val.u32 = *((PRUint64*)ap); break;
+ case nsXPTType::T_FLOAT : dp->val.f = ((float*) ap)[1]; break;
+ case nsXPTType::T_BOOL : dp->val.b = *((PRInt64*) ap); break;
+ case nsXPTType::T_CHAR : dp->val.c = *((PRUint64*) ap); break;
+ case nsXPTType::T_WCHAR : dp->val.wc = *((PRInt64*) 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__ */
--- /dev/null Mon May 26 13:22:00 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc64_freebsd.s Mon May 26 04:06:09 2003
@@ -0,0 +1,104 @@
+/* -*- Mode: asm; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * The contents of this file are subject to the Mozilla 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/MPL/
+ *
+ * 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) 2001 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ * Stuart Parmenter <pavlov@netscape.com>
+ * Chris Seawood <cls@seawood.org>
+ */
+
+/*
+ Platform specific code to invoke XPCOM methods on native objects
+ for sparcv9 Solaris.
+
+ See the SPARC Compliance Definition (SCD) Chapter 3
+ for more information about what is going on here, including
+ the use of BIAS (0x7ff).
+ The SCD is available from http://www.sparc.com/.
+*/
+
+ .global XPTC_InvokeByIndex
+ .type XPTC_InvokeByIndex, #function
+
+/*
+ XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ PRUint32 paramCount, nsXPTCVariant* params);
+
+*/
+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 %d2
+ 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
+! add %l0,16,%l0 ! there are 2 extra entries in the vTable (16bytes)
+ ldx [%i0],%l1 ! *that --> address of vtable
+ ldx [%l0 + %l1],%l0 ! that->vtable[index * 8 + 16] --> 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
--- /dev/null Mon May 26 14:00:00 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_sparc64_freebsd.cpp Mon May 26 14:00:49 2003
@@ -0,0 +1,91 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * The contents of this file are subject to the Mozilla 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/MPL/
+ *
+ * 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) 2001 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ * Stuart Parmenter <pavlov@netscape.com>
+ * Chris Seawood <cls@seawood.org>
+ */
+
+
+/* Platform specific code to invoke XPCOM methods on native objects */
+
+#include "xptcprivate.h"
+
+#if !defined(__sparc) && !defined(__sparc__)
+#error "This code is for Sparc only"
+#endif
+
+/* Prototype specifies unmangled function name */
+extern "C" PRUint64
+invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s);
+
+extern "C" PRUint64
+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;
+}

View file

@ -1,6 +1,6 @@
Phoenix is a fast, low-overhead browser from the Mozilla project. See the
phoenix project page for more details.
Mozilla Firebird is the next generation browser from the Mozilla project. See
the Mozilla Firebird project page for more details.
WWW: http://www.mozilla.org/projects/phoenix/
WWW: http://www.mozilla.org/projects/firebird/
-- AlanE <alane@freebsd.org>

View file

@ -1,32 +1,36 @@
======================================================================
As of version 0.4_7, this port appears to be stable *again*. It will work
with either of the port versions of perl, provided you do "use.perl port".
It will NOT work with the -STABLE base-system versions of Perl.
Mozilla Firebird will work with either of the port versions of perl,
provided you do "use.perl port". It will NOT work with the -STABLE
base-system versions of Perl.
If you use the lang/perl5.8 port, please remove the File::Spec package with
the command "pkg_deinstall -f p5-File-Spec". If you are updating to the 5.8
version of perl, please do this *first*.
Any bug reports should be addressed to the maintainers at:
phoenix@freebsd.org
gnome@FreeBSD.org
You may also Cc: freebsd-ports@freebsd.org. Please do not send
bug reports to any other addresses.
Please include the following information with any bug report:
* Output from 'uname -a'.
* Date/time stamp from www/phoenix/Makefile.
* Date/time stamp from www/mozilla-firebird/Makefile.
* Perl version used (/usr/bin/perl --version or
/usr/local/bin/perl --version for -current).
* Where/when did the problem occur: configuring, building, or
running phoenix?
running mozilla-firebird?
* How can you reproduce the problem?
Thank you for your help in testing and reporting bugs, and we hope you
enjoy using Phoenix.
The Maintainers (alane@ & trevor@)
enjoy using Firebird.
The Maintainers (gnome@)
Additional notes:
0.6:
Update to 0.6 version, rename from phoenix to Mozilla Firebird, all
internal names updated accordingly.
0.4_8:
Add patch to fix network ops on -CURRENT.
@ -61,12 +65,9 @@ Patch to hopefully fix crash when formatting time string at end of download.
Thanks to Greg Rumple and Joe Marcus Clarke for the fantastic work debugging
this one.
Added /usr/X11R6/bin/phoenix.rb. If you have ruby installed, you can run
this instead of 'phoenix' and it takes care of the 'profile in use' errors
Added /usr/X11R6/bin/firebird.rb. If you have ruby installed, you can run
this instead of 'firebird' and it takes care of the 'profile in use' errors
by automatically using an existing phoenix if one is running. I didn't put
a dependency because I don't want to require ruby + ruby-shim to run the
browser.
-- AlanE <phoenix@freebsd.org>
======================================================================

View file

@ -1,57 +1,56 @@
# ex:ts=8 -*-mode: makefile-*-
#
# New ports collection makefile for: phoenix
# Date created: 2002/10/21
# Whom: Alan Eldridge <alane@FreeBSD.org>
# New ports collection makefile for: mozilla-firebird
# Date created: May 31, 2003
# Whom: Joe Marcus Clarke <marcus@FreeBSD.org>
#
# $FreeBSD$
#
PORTNAME= phoenix
PORTVERSION= 0.5
PORTREVISION= 4
CATEGORIES= www
MASTER_SITES= ${MASTER_SITE_LOCAL} ${BSD_WEBDIR}
MASTER_SITE_SUBDIR= alane
PORTNAME= firebird
PORTVERSION= 0.6
CATEGORIES= www
MASTER_SITES= http://komodo.mozilla.org/pub/firebird/releases/${PORTVERSION}/
PKGNAMEPREFIX= mozilla-
DISTNAME= MozillaFirebird-${PORTVERSION}-source
MAINTAINER= gnome@freebsd.org
COMMENT= Phoenix is a fast, low-overhead browser from the Mozilla project
MAINTAINER= gnome@FreeBSD.org
COMMENT= Mozilla Firebird is the next generation browser from the mozilla.org project
LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg \
png.5:${PORTSDIR}/graphics/png \
mng.1:${PORTSDIR}/graphics/libmng \
freetype.9:${PORTSDIR}/print/freetype2 \
IDL.2:${PORTSDIR}/devel/ORBit \
iconv.3:${PORTSDIR}/converters/libiconv \
nspr4.1:${PORTSDIR}/devel/nspr
BUILD_DEPENDS= zip:${PORTSDIR}/archivers/zip \
freetype-config:${PORTSDIR}/print/freetype2
BSD_WEBDIR=http://people.freebsd.org/~${MASTER_SITE_SUBDIR}/
USE_X_PREFIX= yes
USE_X_PREFIX= yes
USE_BZIP2= yes
USE_GMAKE= yes
USE_PERL5= yes
USE_REINPLACE= yes
HAS_CONFIGURE= yes
USE_BZIP2= yes
USE_GMAKE= yes
USE_PERL5= yes
USE_REINPLACE= yes
HAS_CONFIGURE= yes
USE_GNOME= gtk12 orbit
.if defined(WITH_GTK2)
USE_GNOME= gtk20 libidl
PKGNAMESUFFIX= -gtk2
.else
USE_GNOME= gtk12 orbit
.endif
NO_MTREE= yes
WRKSRC= ${WRKDIR}/mozilla
LOCAL_SUBDIR= lib/${PORTNAME}
LOCAL_PREFIX= ${PREFIX}/${LOCAL_SUBDIR}
JREDIR= ${LOCALBASE}/jdk1.3.1/jre
MOZVER= 1.3a
PLUGINSDIR= ${LOCAL_PREFIX}/lib/mozilla-${MOZVER}/plugins/
PLUGINSDIR= ${PREFIX}/lib/browser_plugins
.include <bsd.port.pre.mk>
.if ${PERL_LEVEL} < 500601
.undef NO_IGNORE
BROKEN= Phoenix only supports the ports versions of Perl.
BROKEN= Mozilla Firebird only supports the ports versions of Perl.
BROKEN+=If you have installed a Perl port, and are getting this message,
BROKEN+=please make sure you have given the command \'use.perl port\'.
.endif # ${PERL_LEVEL} < 500601
@ -61,13 +60,12 @@ PLIST=${WRKDIR}/plist
.if defined(WITH_DEBUG)
WITH_LOGGING= yes
WITHOUT_OPTIMIZE= yes
CONFIGURE_ENV+= WITH_DEBUG=yes
.endif # defined(WITH_DEBUG)
.if !defined(WITHOUT_OPTIMIZE)
.if defined(WITH_OPTIMIZED_CFLAGS)
CFLAGS+= -O2
.endif # defined(WITH_OPTIMIZE)
.endif # defined(WITH_OPTIMIZED_CFLAGS)
.if defined(WITH_LOGGING)
CONFIGURE_ENV+= WITH_LOGGING=yes
@ -79,12 +77,16 @@ CONFIGURE_ENV+= WITHOUT_XFT=yes
LIB_DEPENDS+= Xft.2:${PORTSDIR}/x11-fonts/Xft
.endif # !defined(WITHOUT_XFT)
.if defined(WITH_GTK2)
CONFIGURE_ENV+= WITH_GTK2=yes
.endif # defined(WITH_GTK2)
CPPFLAGS+= -I${X11BASE}/include
CFLAGS+= ${PTHREAD_CFLAGS}
LDFLAGS+= -L${X11BASE}/lib
LIBS+= ${PTHREAD_LIBS}
EXTRA_SCRIPTS= phoenix.rb
EXTRA_SCRIPTS= firebird.rb
pre-extract::
@${ECHO_MSG}
@ -101,12 +103,17 @@ post-extract::
-e 's|@PREFIX@|${LOCAL_PREFIX}|' \
<${FILESDIR}/mozconfig.in >${WRKSRC}/.mozconfig
post-patch:
@${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' \
${WRKSRC}/build/unix/run-mozilla.sh
post-build:
${RM} -f ${PLIST}
${TOUCH} ${PLIST}
pre-install:
${RM} -fr ${LOCAL_PREFIX}
-${MKDIR} ${PLUGINSDIR}
install-extra:
.for i in ${EXTRA_SCRIPTS}
@ -114,18 +121,20 @@ install-extra:
.endfor # i in ${EXTRA_SCRIPTS}
link-bins:
${RM} -f ${PREFIX}/bin/phoenix
${LN} -s ${LOCAL_PREFIX}/bin/phoenix \
${PREFIX}/bin/phoenix
${RM} -f ${PREFIX}/bin/phoenix-config
${RM} -f ${PREFIX}/bin/firebird
${LN} -s ${LOCAL_PREFIX}/bin/MozillaFirebird \
${PREFIX}/bin/firebird
${RM} -f ${PREFIX}/bin/MozillaFirebird
${LN} -s ${LOCAL_PREFIX}/bin/MozillaFirebird \
${PREFIX}/bin/MozillaFirebird
${RM} -f ${PREFIX}/bin/firebird-config
${LN} -s ${LOCAL_PREFIX}/bin/mozilla-config \
${PREFIX}/bin/phoenix-config
${PREFIX}/bin/firebird-config
# not used because of undefined symbol errors
link-java:
-${RM} -f ${PLUGINSDIR}/libjavaplugin_oji.so
-${LN} -sf \
${JREDIR}/plugin/i386/ns600/libjavaplugin_oji.so \
${JREDIR}/plugin/${ARCH}/ns600/libjavaplugin_oji.so \
${PLUGINSDIR}/libjavaplugin_oji.so
cleanup-install:
@ -134,8 +143,9 @@ cleanup-install:
cons-plist:
-${RM} -f ${PLIST}
${ECHO_CMD} bin/phoenix >>${PLIST}
${ECHO_CMD} bin/phoenix-config >>${PLIST}
${ECHO_CMD} bin/firebird >>${PLIST}
${ECHO_CMD} bin/MozillaFirebird >>${PLIST}
${ECHO_CMD} bin/firebird-config >>${PLIST}
.for i in ${EXTRA_SCRIPTS}
${ECHO_CMD} bin/${i} >>${PLIST}
.endfor # i in ${EXTRA_SCRIPTS}
@ -158,8 +168,8 @@ cons-plist:
# Under normal circumstances, you should not put anything after
# the above line. However, this is the only way I can state the
# dependency without trashing the actual code of the generate-plist
# target. This is a limitation of the make(1) program itself.
# target. This is a limitation of the make(1) program itself.
# </alane>
generate-plist: install-extra link-bins cleanup-install cons-plist
generate-plist: install-extra link-bins link-java cleanup-install cons-plist
#EOF

View file

@ -1 +1 @@
MD5 (phoenix-0.5.tar.bz2) = fb99a5a866a99fbb15269699a1022b47
MD5 (MozillaFirebird-0.6-source.tar.bz2) = de52dd03f8628724f14f517cd6346755

View file

@ -33,7 +33,7 @@
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$Id: MoZiLLa.in,v 1.18 2002/12/18 02:40:58 alane Exp $
$Id: firebird.rb,v 1.2 2003/05/31 17:24:19 marcus Exp $
2002-12-16 Alan Eldridge <alane@geeksrus.net>
@ -68,10 +68,10 @@ end
IO::popen("xwininfo -display #{$display} -root -tree") {
|io|
if NAME != "phoenix"
if NAME != "firebird"
$windows = io.grep(%r<"Mozilla"\s+"navigator:\s*browser">)
else
$windows = io.grep(%r<Phoenix.*"Mozilla"\s+"navigator:\s*browser">)
$windows = io.grep(%r<MozillaFirebird-bin.*>)
end
}

View file

@ -1,7 +1,7 @@
#!/bin/sh
# -*-shell-script-*-
#
# mkdistfile -- maintainer's utility to make a phoenix distfile
# mkdistfile -- maintainer's utility to make a firebird distfile
#
# Copyright (c) 2002, Alan Eldridge
# All rights reserved.
@ -87,7 +87,7 @@ EOF
############################################################
# show version and exit
############################################################
VERSION='$Revision$'
VERSION='$Revision: 1.1 $'
VERSION=${VERSION#* }; VERSION=${VERSION% *}
version() { echo "$APPNAME $VERSION" \
"Copyright (c) 2002 Alan Eldridge"; exit $1;}
@ -165,7 +165,7 @@ EOF
test -d mozilla || die "No mozilla dir here."
find mozilla 2>/dev/null | egrep -f $exfile | xargs rm -fr
rm -f $exfile
status "making phoenix-$REV.tar.bz2 ..."
tar -cjpf phoenix-$REV.tar.bz2 mozilla
status "making firebird-$REV.tar.bz2 ..."
tar -cjpf firebird-$REV.tar.bz2 mozilla
status "done."
#EOF

View file

@ -20,10 +20,6 @@ export XP_UNIX=1
mk_add_options XP_UNIX=1
export PERL=/usr/local/bin/perl
mk_add_options PERL=$PERL
export GTK_CONFIG=@X11BASE@/bin/gtk12-config
mk_add_options GTK_CONFIG=$GTK_CONFIG
export GLIB_CONFIG=@LOCALBASE@/bin/glib12-config
mk_add_options GLIB_CONFIG=$GLIB_CONFIG
# Configure options for installation
ac_add_options --prefix=@PREFIX@
######################################################################
@ -46,6 +42,8 @@ ac_add_options --disable-jsd
ac_add_options --disable-ldap
ac_add_options --disable-pedantic
ac_add_options --disable-xinerama
ac_add_options --enable-extensions=default,-inspector,-irc,-venkman,-content-packs,-help
ac_add_options --enable-plaintext-editor-only
######################################################################
# conditional from port Makefile
if test -n "$WITH_DEBUG"; then
@ -63,4 +61,9 @@ if test -z "$WITHOUT_XFT"; then
else
ac_add_options --disable-xft
fi # test -z "$WITHOUT_XFT"
if test -n "$WITH_GTK2"; then
ac_add_options --enable-default-toolkit=gtk2
else
ac_add_options --enable-default-toolkit=gtk
fi # test -n "$WITH_GTK2"
######################################################################

View file

@ -0,0 +1,11 @@
--- extensions/transformiix/source/base/Double.cpp.orig Wed May 21 04:42:05 2003
+++ extensions/transformiix/source/base/Double.cpp Wed May 21 04:42:24 2003
@@ -51,7 +51,7 @@
//A trick to handle IEEE floating point exceptions on FreeBSD - E.D.
#ifdef __FreeBSD__
#include <ieeefp.h>
-#ifdef __alpha__
+#if defined(__alpha__) || defined(__sparc64__)
fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
#else
fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP|FP_X_DNML;

View file

@ -0,0 +1,492 @@
--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Mon Jan 27 22:52:51 2003
+++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Tue May 27 01:41:12 2003
@@ -100,9 +100,15 @@
ASFILES := xptcinvoke_asm_osf1_alpha.s xptcstubs_asm_osf1_alpha.s
endif
#
+# FreeBSD/Alpha
+#
+ifeq ($(OS_ARCH)$(OS_TEST),FreeBSDalpha)
+CPPSRCS := xptcinvoke_freebsd_alpha.cpp xptcstubs_freebsd_alpha.cpp
+endif
+#
# Linux/Alpha
#
-ifneq (,$(filter Linuxalpha FreeBSDalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
+ifneq (,$(filter Linuxalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
CPPSRCS := xptcinvoke_linux_alpha.cpp xptcstubs_linux_alpha.cpp
endif
#
--- config/rules.mk.orig Mon May 5 21:04:55 2003
+++ config/rules.mk Tue May 27 01:33:11 2003
@@ -444,7 +444,11 @@
ifeq ($(OS_ARCH),FreeBSD)
ifdef IS_COMPONENT
+ifneq (,$(filter alpha,$(OS_TEST)))
+EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic -lc
+else
EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic
+endif
endif
endif
--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp.orig Tue May 27 01:37:25 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp Tue May 27 01:37:00 2003
@@ -0,0 +1,184 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * 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 the Initial Developer are Copyright (C) 1998
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the NPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the NPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/* Platform specific code to invoke XPCOM methods on native objects */
+
+/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
+
+#include "xptcprivate.h"
+
+/* Prototype specifies unmangled function name and disables unused warning */
+static void
+invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
+__asm__("invoke_copy_to_stack") __attribute__((unused));
+
+static void
+invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
+{
+ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
+
+ for(PRUint32 i = 0; i < paramCount; i++, d++, s++)
+ {
+ if(s->IsPtrData())
+ {
+ *d = (PRUint64)s->ptr;
+ continue;
+ }
+ switch(s->type)
+ {
+ case nsXPTType::T_I8 : *d = (PRUint64)s->val.i8; break;
+ case nsXPTType::T_I16 : *d = (PRUint64)s->val.i16; break;
+ case nsXPTType::T_I32 : *d = (PRUint64)s->val.i32; break;
+ case nsXPTType::T_I64 : *d = (PRUint64)s->val.i64; break;
+ case nsXPTType::T_U8 : *d = (PRUint64)s->val.u8; break;
+ case nsXPTType::T_U16 : *d = (PRUint64)s->val.u16; break;
+ case nsXPTType::T_U32 : *d = (PRUint64)s->val.u32; break;
+ case nsXPTType::T_U64 : *d = (PRUint64)s->val.u64; break;
+ case nsXPTType::T_FLOAT :
+ if(i < NUM_ARG_REGS)
+ {
+ // convert floats to doubles if they are to be passed
+ // via registers so we can just deal with doubles later
+ union { PRUint64 u64; double d; } t;
+ t.d = (double)s->val.f;
+ *d = t.u64;
+ }
+ else
+ // otherwise copy to stack normally
+ *d = (PRUint64)s->val.u32;
+ break;
+ case nsXPTType::T_DOUBLE : *d = (PRUint64)s->val.u64; break;
+ case nsXPTType::T_BOOL : *d = (PRUint64)s->val.b; break;
+ case nsXPTType::T_CHAR : *d = (PRUint64)s->val.c; break;
+ case nsXPTType::T_WCHAR : *d = (PRUint64)s->val.wc; break;
+ default:
+ // all the others are plain pointer types
+ *d = (PRUint64)s->val.p;
+ break;
+ }
+ }
+}
+
+/*
+ * XPTC_PUBLIC_API(nsresult)
+ * XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ * PRUint32 paramCount, nsXPTCVariant* params, void* vt)
+ */
+__asm__(
+ "#### XPTC_InvokeByIndex ####\n"
+".text\n\t"
+ ".align 5\n\t"
+ ".globl XPTC_InvokeByIndex\n\t"
+ ".ent XPTC_InvokeByIndex\n"
+"XPTC_InvokeByIndex:\n\t"
+ ".frame $15,32,$26,0\n\t"
+ ".mask 0x4008000,-32\n\t"
+ "ldgp $29,0($27)\n"
+"$XPTC_InvokeByIndex..ng:\n\t"
+ "subq $30,32,$30\n\t"
+ "stq $26,0($30)\n\t"
+ "stq $15,8($30)\n\t"
+ "bis $30,$30,$15\n\t"
+ ".prologue 1\n\t"
+
+ /*
+ * Allocate enough stack space to hold the greater of 6 or "paramCount"+1
+ * parameters. (+1 for "this" pointer) Room for at least 6 parameters
+ * is required for storage of those passed via registers.
+ */
+
+ "bis $31,5,$2\n\t" /* count = MAX(5, "paramCount") */
+ "cmplt $2,$18,$1\n\t"
+ "cmovne $1,$18,$2\n\t"
+ "s8addq $2,16,$1\n\t" /* room for count+1 params (8 bytes each) */
+ "bic $1,15,$1\n\t" /* stack space is rounded up to 0 % 16 */
+ "subq $30,$1,$30\n\t"
+
+ "stq $16,0($30)\n\t" /* save "that" (as "this" pointer) */
+ "stq $17,16($15)\n\t" /* save "methodIndex" */
+
+ "addq $30,8,$16\n\t" /* pass stack pointer */
+ "bis $18,$18,$17\n\t" /* pass "paramCount" */
+ "bis $19,$19,$18\n\t" /* pass "params" */
+ "bsr $26,$invoke_copy_to_stack..ng\n\t" /* call invoke_copy_to_stack */
+
+ /*
+ * Copy the first 6 parameters to registers and remove from stack frame.
+ * Both the integer and floating point registers are set for each parameter
+ * except the first which is the "this" pointer. (integer only)
+ * The floating point registers are all set as doubles since the
+ * invoke_copy_to_stack function should have converted the floats.
+ */
+ "ldq $16,0($30)\n\t" /* integer registers */
+ "ldq $17,8($30)\n\t"
+ "ldq $18,16($30)\n\t"
+ "ldq $19,24($30)\n\t"
+ "ldq $20,32($30)\n\t"
+ "ldq $21,40($30)\n\t"
+ "ldt $f17,8($30)\n\t" /* floating point registers */
+ "ldt $f18,16($30)\n\t"
+ "ldt $f19,24($30)\n\t"
+ "ldt $f20,32($30)\n\t"
+ "ldt $f21,40($30)\n\t"
+
+ "addq $30,48,$30\n\t" /* remove params from stack */
+
+ /*
+ * Call the virtual function with the constructed stack frame.
+ */
+ "bis $16,$16,$1\n\t" /* load "this" */
+ "ldq $2,16($15)\n\t" /* load "methodIndex" */
+ "ldq $1,0($1)\n\t" /* load vtable */
+#if 0
+ "s8addq $2,16,$2\n\t" /* vtable index = "methodIndex" * 8 + 16 */
+#else
+ "mulq $2, 8, $2\n\t"
+ "addq $2, 0, $2\n\t" /* vtable index = "methodIndex" * 16 + 24 */
+#endif
+ "addq $1,$2,$1\n\t"
+ "ldq $27,0($1)\n\t" /* load address of function */
+ "jsr $26,($27),0\n\t" /* call virtual function */
+ "ldgp $29,0($26)\n\t"
+
+ "bis $15,$15,$30\n\t"
+ "ldq $26,0($30)\n\t"
+ "ldq $15,8($30)\n\t"
+ "addq $30,32,$30\n\t"
+ "ret $31,($26),1\n\t"
+ ".end XPTC_InvokeByIndex"
+ );
+
--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp.orig Tue May 27 01:37:30 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp Tue May 27 01:37:04 2003
@@ -0,0 +1,269 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * 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 the Initial Developer are Copyright (C) 1999
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the NPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the NPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/* Implement shared vtbl methods. */
+
+/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
+
+#include <sys/types.h>
+#include <machine/cpu.h>
+#include "xptcprivate.h"
+
+/* Prototype specifies unmangled function name and disables unused warning */
+static nsresult
+PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
+__asm__("PrepareAndDispatch") __attribute__((unused));
+
+static nsresult
+PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
+{
+ const PRUint8 PARAM_BUFFER_COUNT = 16;
+ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
+
+ 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");
+
+ // args[0] to args[NUM_ARG_REGS] hold floating point register values
+ PRUint64* ap = args + NUM_ARG_REGS;
+ 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 = (PRInt8) *ap; break;
+ case nsXPTType::T_I16 : dp->val.i16 = (PRInt16) *ap; break;
+ case nsXPTType::T_I32 : dp->val.i32 = (PRInt32) *ap; break;
+ case nsXPTType::T_I64 : dp->val.i64 = (PRInt64) *ap; break;
+ case nsXPTType::T_U8 : dp->val.u8 = (PRUint8) *ap; break;
+ case nsXPTType::T_U16 : dp->val.u16 = (PRUint16) *ap; break;
+ case nsXPTType::T_U32 : dp->val.u32 = (PRUint32) *ap; break;
+ case nsXPTType::T_U64 : dp->val.u64 = (PRUint64) *ap; break;
+ case nsXPTType::T_FLOAT :
+ if(i < NUM_ARG_REGS)
+ {
+ // floats passed via registers are stored as doubles
+ // in the first NUM_ARG_REGS entries in args
+ dp->val.u64 = (PRUint64) args[i];
+ dp->val.f = (float) dp->val.d; // convert double to float
+ }
+ else
+ dp->val.u32 = (PRUint32) *ap;
+ break;
+ case nsXPTType::T_DOUBLE :
+ // doubles passed via registers are also stored
+ // in the first NUM_ARG_REGS entries in args
+ dp->val.u64 = (i < NUM_ARG_REGS) ? args[i] : *ap;
+ break;
+ case nsXPTType::T_BOOL : dp->val.b = (PRBool) *ap; break;
+ case nsXPTType::T_CHAR : dp->val.c = (char) *ap; break;
+ case nsXPTType::T_WCHAR : dp->val.wc = (PRUnichar) *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;
+}
+
+/*
+ * SharedStub()
+ * Collects arguments and calls PrepareAndDispatch. The "methodIndex" is
+ * passed to this function via $1 to preserve the argument registers.
+ */
+__asm__(
+ "#### SharedStub ####\n"
+".text\n\t"
+ ".align 5\n\t"
+ ".ent SharedStub\n"
+"SharedStub:\n\t"
+ ".frame $30,96,$26,0\n\t"
+ ".mask 0x4000000,-96\n\t"
+ "ldgp $29,0($27)\n"
+"$SharedStub..ng:\n\t"
+ "subq $30,96,$30\n\t"
+ "stq $26,0($30)\n\t"
+ ".prologue 1\n\t"
+
+ /*
+ * Store arguments passed via registers to the stack.
+ * Floating point registers are stored as doubles and converted
+ * to floats in PrepareAndDispatch if necessary.
+ */
+ "stt $f17,16($30)\n\t" /* floating point registers */
+ "stt $f18,24($30)\n\t"
+ "stt $f19,32($30)\n\t"
+ "stt $f20,40($30)\n\t"
+ "stt $f21,48($30)\n\t"
+ "stq $17,56($30)\n\t" /* integer registers */
+ "stq $18,64($30)\n\t"
+ "stq $19,72($30)\n\t"
+ "stq $20,80($30)\n\t"
+ "stq $21,88($30)\n\t"
+
+ /*
+ * Call PrepareAndDispatch function.
+ */
+ "bis $1,$1,$17\n\t" /* pass "methodIndex" */
+ "addq $30,16,$18\n\t" /* pass "args" */
+ "bsr $26,$PrepareAndDispatch..ng\n\t"
+
+ "ldq $26,0($30)\n\t"
+ "addq $30,96,$30\n\t"
+ "ret $31,($26),1\n\t"
+ ".end SharedStub"
+ );
+
+#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
+/*
+ * nsresult nsXPTCStubBase::Stub##n()
+ * Sets register $1 to "methodIndex" and jumps to SharedStub.
+ */
+#define STUB_ENTRY(n) \
+__asm__( \
+ "#### Stub"#n" ####\n" \
+".text\n\t" \
+ ".align 5\n\t" \
+ ".globl _ZN14nsXPTCStubBase5Stub"#n"Ev\n\t" \
+ ".ent _ZN14nsXPTCStubBase5Stub"#n"Ev\n" \
+"_ZN14nsXPTCStubBase5Stub"#n"Ev:\n\t" \
+ ".frame $30,0,$26,0\n\t" \
+ "ldgp $29,0($27)\n" \
+"$_ZN14nsXPTCStubBase5Stub"#n"Ev..ng:\n\t" \
+ ".prologue 1\n\t" \
+ "lda $1,"#n"\n\t" \
+ "br $31,$SharedStub..ng\n\t" \
+ ".end _ZN14nsXPTCStubBase5Stub"#n"Ev" \
+ ); \
+__asm__( \
+ "#### Stub"#n" ####\n" \
+".text\n\t" \
+ ".align 5\n\t" \
+ ".globl _ZN14nsXPTCStubBase6Stub"#n"Ev\n\t" \
+ ".ent _ZN14nsXPTCStubBase6Stub"#n"Ev\n" \
+"_ZN14nsXPTCStubBase6Stub"#n"Ev:\n\t" \
+ ".frame $30,0,$26,0\n\t" \
+ "ldgp $29,0($27)\n" \
+"$_ZN14nsXPTCStubBase6Stub"#n"Ev..ng:\n\t" \
+ ".prologue 1\n\t" \
+ "lda $1,"#n"\n\t" \
+ "br $31,$SharedStub..ng\n\t" \
+ ".end _ZN14nsXPTCStubBase6Stub"#n"Ev" \
+ ); \
+__asm__( \
+ "#### Stub"#n" ####\n" \
+".text\n\t" \
+ ".align 5\n\t" \
+ ".globl _ZN14nsXPTCStubBase7Stub"#n"Ev\n\t" \
+ ".ent _ZN14nsXPTCStubBase7Stub"#n"Ev\n" \
+"_ZN14nsXPTCStubBase7Stub"#n"Ev:\n\t" \
+ ".frame $30,0,$26,0\n\t" \
+ "ldgp $29,0($27)\n" \
+"$_ZN14nsXPTCStubBase7Stub"#n"Ev..ng:\n\t" \
+ ".prologue 1\n\t" \
+ "lda $1,"#n"\n\t" \
+ "br $31,$SharedStub..ng\n\t" \
+ ".end _ZN14nsXPTCStubBase7Stub"#n"Ev" \
+ );
+#else
+/*
+ * nsresult nsXPTCStubBase::Stub##n()
+ * Sets register $1 to "methodIndex" and jumps to SharedStub.
+ */
+#define STUB_ENTRY(n) \
+nsresult nsXPTCStubBase::Stub##n() \
+{ \
+ nsresult result; \
+__asm__ __volatile__( \
+ "ldah $29,0($27)\n\t" \
+ "lda $29,0($29)\n\t" \
+ "lda $1, "#n"\n\t" \
+ "br $31, $SharedStub..ng\n\t" \
+ "mov $0, %0\n\t" \
+ : "=r" (result) \
+ ); \
+ return result; \
+}
+#endif
+
+#define SENTINEL_ENTRY(n) \
+nsresult nsXPTCStubBase::Sentinel##n() \
+{ \
+ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
+ return NS_ERROR_NOT_IMPLEMENTED; \
+}
+
+#include "xptcstubsdef.inc"
+

View file

@ -0,0 +1,30 @@
--- build/unix/run-mozilla.sh.orig Fri Apr 18 23:12:28 2003
+++ build/unix/run-mozilla.sh Sat May 31 19:03:29 2003
@@ -355,7 +355,7 @@
fi
##
## Set LD_LIBRARY_PATH
-LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
+LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:%%PREFIX%%/lib/browser_plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
if [ -n "$LD_LIBRARYN32_PATH" ]
then
LD_LIBRARYN32_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN32_PATH+":$LD_LIBRARYN32_PATH"}
@@ -402,7 +402,7 @@
fi
fi
# Font path for Xft
-FONTCONFIG_PATH="/etc/fonts:${MOZILLA_FIVE_HOME}/res/Xft"
+FONTCONFIG_PATH="%%PREFIX%%/etc/fonts:${MOZILLA_FIVE_HOME}/res/Xft"
export FONTCONFIG_PATH
if [ "$moz_debug" -eq 1 ]
@@ -445,6 +445,9 @@
#
export MOZILLA_FIVE_HOME LD_LIBRARY_PATH
export SHLIB_PATH LIBPATH LIBRARY_PATH ADDON_PATH DYLD_LIBRARY_PATH
+
+MOZ_PLUGIN_PATH=%%PREFIX%%/lib/browser_plugins
+export MOZ_PLUGIN_PATH
if [ $moz_debug -eq 1 ]
then

View file

@ -0,0 +1,57 @@
--- gfx/src/gtk/nsFontMetricsXft.cpp.orig Mon May 12 06:03:28 2003
+++ gfx/src/gtk/nsFontMetricsXft.cpp Sat May 31 11:32:14 2003
@@ -90,6 +90,7 @@
FcPattern *mPattern;
FcPattern *mFontName;
FcCharSet *mCharset;
+ int mNotXft;
};
struct MozXftLangGroup {
@@ -772,7 +773,7 @@
// font in our loaded list that supports the character
for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
- if (FcCharSetHasChar(font->mCharset, aChar))
+ if (FcCharSetHasChar(font->mCharset, aChar) && font->GetXftFont())
return font;
}
@@ -1194,7 +1195,7 @@
for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
nsFontXft *font;
font = (nsFontXft *)mLoadedFonts.ElementAt(j);
- if (FcCharSetHasChar(font->mCharset, c)) {
+ if (FcCharSetHasChar(font->mCharset, c) && font->GetXftFont()) {
foundFont = font;
break;
}
@@ -1503,6 +1504,7 @@
FcPatternReference(mFontName);
mXftFont = nsnull;
+ mNotXft = 0;
// set up our charset
mCharset = nsnull;
@@ -1529,7 +1531,7 @@
XftFont *
nsFontXft::GetXftFont(void)
{
- if (!mXftFont) {
+ if (!mXftFont && !mNotXft) {
FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
if (!pat)
return nsnull;
@@ -1548,8 +1550,10 @@
FcPatternDel(pat, FC_SPACING);
mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
- if (!mXftFont)
+ if (!mXftFont) {
FcPatternDestroy(pat);
+ mNotXft = 1;
+ }
}
return mXftFont;

View file

@ -0,0 +1,29 @@
--- js/src/jsfun.c.orig Fri May 30 20:55:38 2003
+++ js/src/jsfun.c Fri May 30 20:54:24 2003
@@ -1081,7 +1081,7 @@
JSString *atomstr;
char *propname;
JSScopeProperty *sprop;
- jsid userid;
+ uint32 userid;
JSAtom *atom;
uintN i, n, dupflag;
uint32 type;
@@ -1157,7 +1157,7 @@
userid = INT_TO_JSVAL(sprop->shortid);
propname = ATOM_BYTES((JSAtom *)sprop->id);
if (!JS_XDRUint32(xdr, &type) ||
- !JS_XDRUint32(xdr, (uint32 *)&userid) ||
+ !JS_XDRUint32(xdr, &userid) ||
!JS_XDRCString(xdr, &propname)) {
if (mark)
JS_ARENA_RELEASE(&cx->tempPool, mark);
@@ -1173,7 +1173,7 @@
uintN attrs = JSPROP_ENUMERATE | JSPROP_PERMANENT;
if (!JS_XDRUint32(xdr, &type) ||
- !JS_XDRUint32(xdr, (uint32 *)&userid) ||
+ !JS_XDRUint32(xdr, &userid) ||
!JS_XDRCString(xdr, &propname)) {
return JS_FALSE;
}

View file

@ -0,0 +1,21 @@
--- nsprpub/pr/src/md/unix/unix.c.orig Sat May 31 18:06:04 2003
+++ nsprpub/pr/src/md/unix/unix.c Sat May 31 18:04:43 2003
@@ -65,7 +65,8 @@
* PRInt32* pointer to a _PRSockLen_t* pointer.
*/
#if defined(HAVE_SOCKLEN_T) \
- || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2)
+ || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2) \
+ || defined(FREEBSD)
#define _PRSockLen_t socklen_t
#elif defined(IRIX) || defined(HPUX) || defined(OSF1) || defined(SOLARIS) \
|| defined(AIX4_1) || defined(LINUX) || defined(SONY) \
@@ -73,7 +74,7 @@
|| defined(SUNOS4) || defined(NCR) || defined(DARWIN) \
|| defined(NEXTSTEP) || defined(QNX)
#define _PRSockLen_t int
-#elif (defined(AIX) && !defined(AIX4_1)) || defined(FREEBSD) \
+#elif (defined(AIX) && !defined(AIX4_1)) \
|| defined(NETBSD) || defined(OPENBSD) || defined(UNIXWARE) \
|| defined(DGUX) || defined(VMS) || defined(NTO)
#define _PRSockLen_t size_t

View file

@ -1,18 +1,11 @@
--- nsprpub/pr/src/misc/prtime.c.orig Sun Mar 31 12:17:46 2002
+++ nsprpub/pr/src/misc/prtime.c Tue Dec 17 21:30:30 2002
@@ -1666,12 +1666,13 @@
* values for these two fields.
--- nsprpub/pr/src/misc/prtime.c.orig Thu Feb 27 01:01:02 2003
+++ nsprpub/pr/src/misc/prtime.c Thu May 22 16:46:49 2003
@@ -1666,7 +1666,7 @@
*/
-#if defined(SUNOS4) || (__GLIBC__ >= 2) || defined(XP_BEOS)
+#if defined(__FreeBSD__)|| defined(SUNOS4) \
+ || (__GLIBC__ >= 2) || defined(XP_BEOS)
if (mktime(&a) == -1) {
PR_snprintf(buf, buflen, "can't get timezone");
return 0;
}
-#endif
+#endif /* check for __FreeBSD__, too <alane@freebsd.org> */
return strftime(buf, buflen, fmt, &a);
}
#if defined(SUNOS4) || (__GLIBC__ >= 2) || defined(XP_BEOS) \
- || defined(NETBSD)
+ || defined(NETBSD) || defined(__FreeBSD__)
a.tm_zone = NULL;
a.tm_gmtoff = tm->tm_params.tp_gmt_offset + tm->tm_params.tp_dst_offset;
#endif

View file

@ -0,0 +1,69 @@
diff -ru ./nsprpub/pr/include/md/_freebsd.cfg ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.cfg
--- ./nsprpub/pr/include/md/_freebsd.cfg Wed Jan 2 18:38:25 2002
+++ ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.cfg Tue May 20 21:27:31 2003
@@ -138,6 +138,53 @@
#define PR_ALIGN_OF_DOUBLE 8
#define PR_ALIGN_OF_POINTER 8
+#elif defined(__sparc__)
+
+#undef IS_LITTLE_ENDIAN
+#define IS_BIG_ENDIAN 1
+#define HAVE_LONG_LONG
+#define HAVE_ALIGNED_DOUBLES
+#define HAVE_ALIGNED_LONGLONGS
+#define IS_64
+
+#define PR_BYTES_PER_BYTE 1
+#define PR_BYTES_PER_SHORT 2
+#define PR_BYTES_PER_INT 4
+#define PR_BYTES_PER_INT64 8
+#define PR_BYTES_PER_LONG 8
+#define PR_BYTES_PER_FLOAT 4
+#define PR_BYTES_PER_DOUBLE 8
+#define PR_BYTES_PER_WORD 8
+#define PR_BYTES_PER_DWORD 8
+#define PR_BYTES_PER_WORD_LOG2 3
+#define PR_BYTES_PER_DWORD_LOG2 3
+
+#define PR_BITS_PER_BYTE 8
+#define PR_BITS_PER_SHORT 16
+#define PR_BITS_PER_INT 32
+#define PR_BITS_PER_INT64 64
+#define PR_BITS_PER_LONG 64
+#define PR_BITS_PER_FLOAT 32
+#define PR_BITS_PER_DOUBLE 64
+#define PR_BITS_PER_WORD 64
+
+#define PR_BITS_PER_BYTE_LOG2 3
+#define PR_BITS_PER_SHORT_LOG2 4
+#define PR_BITS_PER_INT_LOG2 5
+#define PR_BITS_PER_INT64_LOG2 6
+#define PR_BITS_PER_LONG_LOG2 6
+#define PR_BITS_PER_FLOAT_LOG2 5
+#define PR_BITS_PER_DOUBLE_LOG2 6
+#define PR_BITS_PER_WORD_LOG2 6
+
+#define PR_ALIGN_OF_SHORT 2
+#define PR_ALIGN_OF_INT 4
+#define PR_ALIGN_OF_LONG 8
+#define PR_ALIGN_OF_INT64 8
+#define PR_ALIGN_OF_FLOAT 4
+#define PR_ALIGN_OF_DOUBLE 8
+#define PR_ALIGN_OF_POINTER 8
+
#else
#error "Unknown CPU architecture"
diff -ru ./nsprpub/pr/include/md/_freebsd.h ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.h
--- ./nsprpub/pr/include/md/_freebsd.h Thu Jan 16 15:09:12 2003
+++ ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.h Tue May 20 21:27:13 2003
@@ -48,6 +48,8 @@
#define _PR_SI_ARCHITECTURE "x86"
#elif defined(__alpha)
#define _PR_SI_ARCHITECTURE "alpha"
+#elif defined(__sparc__)
+#define _PR_SI_ARCHITECTURE "sparc"
#else
#error "Unknown CPU architecture"
#endif

View file

@ -0,0 +1,345 @@
--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Mon May 26 13:26:01 2003
+++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Mon May 26 13:30:04 2003
@@ -287,6 +287,15 @@
ASFILES := xptcinvoke_asm_sparc_netbsd.s xptcstubs_asm_sparc_netbsd.s
endif
#
+# FreeBSD/SPARC64
+#
+ifeq ($(OS_ARCH),FreeBSD)
+ifneq (,$(findstring sparc,$(OS_TEST)))
+CPPSRCS := xptcinvoke_sparc64_freebsd.cpp xptcstubs_sparc64_freebsd.cpp
+ASFILES := xptcinvoke_asm_sparc64_freebsd.s xptcstubs_asm_sparcv9_solaris.s
+endif
+endif
+#
# Solaris/SPARC
#
ifeq ($(OS_ARCH),SunOS)
--- /dev/null Mon May 26 13:22:00 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc64_freebsd.cpp Mon May 26 04:12:55 2003
@@ -0,0 +1,123 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * The contents of this file are subject to the Mozilla 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/MPL/
+ *
+ * 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) 2001 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ * Stuart Parmenter <pavlov@netscape.com>
+ */
+
+/* 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 = *((PRInt64*) ap); break;
+ case nsXPTType::T_I16 : dp->val.i16 = *((PRInt64*) ap); break;
+ case nsXPTType::T_I32 : dp->val.i32 = *((PRInt64*) 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 = *((PRUint64*) ap); break;
+ case nsXPTType::T_U16 : dp->val.u16 = *((PRUint64*)ap); break;
+ case nsXPTType::T_U32 : dp->val.u32 = *((PRUint64*)ap); break;
+ case nsXPTType::T_FLOAT : dp->val.f = ((float*) ap)[1]; break;
+ case nsXPTType::T_BOOL : dp->val.b = *((PRInt64*) ap); break;
+ case nsXPTType::T_CHAR : dp->val.c = *((PRUint64*) ap); break;
+ case nsXPTType::T_WCHAR : dp->val.wc = *((PRInt64*) 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__ */
--- /dev/null Mon May 26 13:22:00 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc64_freebsd.s Mon May 26 04:06:09 2003
@@ -0,0 +1,104 @@
+/* -*- Mode: asm; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * The contents of this file are subject to the Mozilla 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/MPL/
+ *
+ * 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) 2001 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ * Stuart Parmenter <pavlov@netscape.com>
+ * Chris Seawood <cls@seawood.org>
+ */
+
+/*
+ Platform specific code to invoke XPCOM methods on native objects
+ for sparcv9 Solaris.
+
+ See the SPARC Compliance Definition (SCD) Chapter 3
+ for more information about what is going on here, including
+ the use of BIAS (0x7ff).
+ The SCD is available from http://www.sparc.com/.
+*/
+
+ .global XPTC_InvokeByIndex
+ .type XPTC_InvokeByIndex, #function
+
+/*
+ XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ PRUint32 paramCount, nsXPTCVariant* params);
+
+*/
+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 %d2
+ 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
+! add %l0,16,%l0 ! there are 2 extra entries in the vTable (16bytes)
+ ldx [%i0],%l1 ! *that --> address of vtable
+ ldx [%l0 + %l1],%l0 ! that->vtable[index * 8 + 16] --> 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
--- /dev/null Mon May 26 14:00:00 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_sparc64_freebsd.cpp Mon May 26 14:00:49 2003
@@ -0,0 +1,91 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * The contents of this file are subject to the Mozilla 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/MPL/
+ *
+ * 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) 2001 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ * Stuart Parmenter <pavlov@netscape.com>
+ * Chris Seawood <cls@seawood.org>
+ */
+
+
+/* Platform specific code to invoke XPCOM methods on native objects */
+
+#include "xptcprivate.h"
+
+#if !defined(__sparc) && !defined(__sparc__)
+#error "This code is for Sparc only"
+#endif
+
+/* Prototype specifies unmangled function name */
+extern "C" PRUint64
+invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s);
+
+extern "C" PRUint64
+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;
+}

View file

@ -1,6 +1,6 @@
Phoenix is a fast, low-overhead browser from the Mozilla project. See the
phoenix project page for more details.
Mozilla Firebird is the next generation browser from the Mozilla project. See
the Mozilla Firebird project page for more details.
WWW: http://www.mozilla.org/projects/phoenix/
WWW: http://www.mozilla.org/projects/firebird/
-- AlanE <alane@freebsd.org>

View file

@ -1,32 +1,36 @@
======================================================================
As of version 0.4_7, this port appears to be stable *again*. It will work
with either of the port versions of perl, provided you do "use.perl port".
It will NOT work with the -STABLE base-system versions of Perl.
Mozilla Firebird will work with either of the port versions of perl,
provided you do "use.perl port". It will NOT work with the -STABLE
base-system versions of Perl.
If you use the lang/perl5.8 port, please remove the File::Spec package with
the command "pkg_deinstall -f p5-File-Spec". If you are updating to the 5.8
version of perl, please do this *first*.
Any bug reports should be addressed to the maintainers at:
phoenix@freebsd.org
gnome@FreeBSD.org
You may also Cc: freebsd-ports@freebsd.org. Please do not send
bug reports to any other addresses.
Please include the following information with any bug report:
* Output from 'uname -a'.
* Date/time stamp from www/phoenix/Makefile.
* Date/time stamp from www/mozilla-firebird/Makefile.
* Perl version used (/usr/bin/perl --version or
/usr/local/bin/perl --version for -current).
* Where/when did the problem occur: configuring, building, or
running phoenix?
running mozilla-firebird?
* How can you reproduce the problem?
Thank you for your help in testing and reporting bugs, and we hope you
enjoy using Phoenix.
The Maintainers (alane@ & trevor@)
enjoy using Firebird.
The Maintainers (gnome@)
Additional notes:
0.6:
Update to 0.6 version, rename from phoenix to Mozilla Firebird, all
internal names updated accordingly.
0.4_8:
Add patch to fix network ops on -CURRENT.
@ -61,12 +65,9 @@ Patch to hopefully fix crash when formatting time string at end of download.
Thanks to Greg Rumple and Joe Marcus Clarke for the fantastic work debugging
this one.
Added /usr/X11R6/bin/phoenix.rb. If you have ruby installed, you can run
this instead of 'phoenix' and it takes care of the 'profile in use' errors
Added /usr/X11R6/bin/firebird.rb. If you have ruby installed, you can run
this instead of 'firebird' and it takes care of the 'profile in use' errors
by automatically using an existing phoenix if one is running. I didn't put
a dependency because I don't want to require ruby + ruby-shim to run the
browser.
-- AlanE <phoenix@freebsd.org>
======================================================================

View file

@ -1,57 +1,56 @@
# ex:ts=8 -*-mode: makefile-*-
#
# New ports collection makefile for: phoenix
# Date created: 2002/10/21
# Whom: Alan Eldridge <alane@FreeBSD.org>
# New ports collection makefile for: mozilla-firebird
# Date created: May 31, 2003
# Whom: Joe Marcus Clarke <marcus@FreeBSD.org>
#
# $FreeBSD$
#
PORTNAME= phoenix
PORTVERSION= 0.5
PORTREVISION= 4
CATEGORIES= www
MASTER_SITES= ${MASTER_SITE_LOCAL} ${BSD_WEBDIR}
MASTER_SITE_SUBDIR= alane
PORTNAME= firebird
PORTVERSION= 0.6
CATEGORIES= www
MASTER_SITES= http://komodo.mozilla.org/pub/firebird/releases/${PORTVERSION}/
PKGNAMEPREFIX= mozilla-
DISTNAME= MozillaFirebird-${PORTVERSION}-source
MAINTAINER= gnome@freebsd.org
COMMENT= Phoenix is a fast, low-overhead browser from the Mozilla project
MAINTAINER= gnome@FreeBSD.org
COMMENT= Mozilla Firebird is the next generation browser from the mozilla.org project
LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg \
png.5:${PORTSDIR}/graphics/png \
mng.1:${PORTSDIR}/graphics/libmng \
freetype.9:${PORTSDIR}/print/freetype2 \
IDL.2:${PORTSDIR}/devel/ORBit \
iconv.3:${PORTSDIR}/converters/libiconv \
nspr4.1:${PORTSDIR}/devel/nspr
BUILD_DEPENDS= zip:${PORTSDIR}/archivers/zip \
freetype-config:${PORTSDIR}/print/freetype2
BSD_WEBDIR=http://people.freebsd.org/~${MASTER_SITE_SUBDIR}/
USE_X_PREFIX= yes
USE_X_PREFIX= yes
USE_BZIP2= yes
USE_GMAKE= yes
USE_PERL5= yes
USE_REINPLACE= yes
HAS_CONFIGURE= yes
USE_BZIP2= yes
USE_GMAKE= yes
USE_PERL5= yes
USE_REINPLACE= yes
HAS_CONFIGURE= yes
USE_GNOME= gtk12 orbit
.if defined(WITH_GTK2)
USE_GNOME= gtk20 libidl
PKGNAMESUFFIX= -gtk2
.else
USE_GNOME= gtk12 orbit
.endif
NO_MTREE= yes
WRKSRC= ${WRKDIR}/mozilla
LOCAL_SUBDIR= lib/${PORTNAME}
LOCAL_PREFIX= ${PREFIX}/${LOCAL_SUBDIR}
JREDIR= ${LOCALBASE}/jdk1.3.1/jre
MOZVER= 1.3a
PLUGINSDIR= ${LOCAL_PREFIX}/lib/mozilla-${MOZVER}/plugins/
PLUGINSDIR= ${PREFIX}/lib/browser_plugins
.include <bsd.port.pre.mk>
.if ${PERL_LEVEL} < 500601
.undef NO_IGNORE
BROKEN= Phoenix only supports the ports versions of Perl.
BROKEN= Mozilla Firebird only supports the ports versions of Perl.
BROKEN+=If you have installed a Perl port, and are getting this message,
BROKEN+=please make sure you have given the command \'use.perl port\'.
.endif # ${PERL_LEVEL} < 500601
@ -61,13 +60,12 @@ PLIST=${WRKDIR}/plist
.if defined(WITH_DEBUG)
WITH_LOGGING= yes
WITHOUT_OPTIMIZE= yes
CONFIGURE_ENV+= WITH_DEBUG=yes
.endif # defined(WITH_DEBUG)
.if !defined(WITHOUT_OPTIMIZE)
.if defined(WITH_OPTIMIZED_CFLAGS)
CFLAGS+= -O2
.endif # defined(WITH_OPTIMIZE)
.endif # defined(WITH_OPTIMIZED_CFLAGS)
.if defined(WITH_LOGGING)
CONFIGURE_ENV+= WITH_LOGGING=yes
@ -79,12 +77,16 @@ CONFIGURE_ENV+= WITHOUT_XFT=yes
LIB_DEPENDS+= Xft.2:${PORTSDIR}/x11-fonts/Xft
.endif # !defined(WITHOUT_XFT)
.if defined(WITH_GTK2)
CONFIGURE_ENV+= WITH_GTK2=yes
.endif # defined(WITH_GTK2)
CPPFLAGS+= -I${X11BASE}/include
CFLAGS+= ${PTHREAD_CFLAGS}
LDFLAGS+= -L${X11BASE}/lib
LIBS+= ${PTHREAD_LIBS}
EXTRA_SCRIPTS= phoenix.rb
EXTRA_SCRIPTS= firebird.rb
pre-extract::
@${ECHO_MSG}
@ -101,12 +103,17 @@ post-extract::
-e 's|@PREFIX@|${LOCAL_PREFIX}|' \
<${FILESDIR}/mozconfig.in >${WRKSRC}/.mozconfig
post-patch:
@${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' \
${WRKSRC}/build/unix/run-mozilla.sh
post-build:
${RM} -f ${PLIST}
${TOUCH} ${PLIST}
pre-install:
${RM} -fr ${LOCAL_PREFIX}
-${MKDIR} ${PLUGINSDIR}
install-extra:
.for i in ${EXTRA_SCRIPTS}
@ -114,18 +121,20 @@ install-extra:
.endfor # i in ${EXTRA_SCRIPTS}
link-bins:
${RM} -f ${PREFIX}/bin/phoenix
${LN} -s ${LOCAL_PREFIX}/bin/phoenix \
${PREFIX}/bin/phoenix
${RM} -f ${PREFIX}/bin/phoenix-config
${RM} -f ${PREFIX}/bin/firebird
${LN} -s ${LOCAL_PREFIX}/bin/MozillaFirebird \
${PREFIX}/bin/firebird
${RM} -f ${PREFIX}/bin/MozillaFirebird
${LN} -s ${LOCAL_PREFIX}/bin/MozillaFirebird \
${PREFIX}/bin/MozillaFirebird
${RM} -f ${PREFIX}/bin/firebird-config
${LN} -s ${LOCAL_PREFIX}/bin/mozilla-config \
${PREFIX}/bin/phoenix-config
${PREFIX}/bin/firebird-config
# not used because of undefined symbol errors
link-java:
-${RM} -f ${PLUGINSDIR}/libjavaplugin_oji.so
-${LN} -sf \
${JREDIR}/plugin/i386/ns600/libjavaplugin_oji.so \
${JREDIR}/plugin/${ARCH}/ns600/libjavaplugin_oji.so \
${PLUGINSDIR}/libjavaplugin_oji.so
cleanup-install:
@ -134,8 +143,9 @@ cleanup-install:
cons-plist:
-${RM} -f ${PLIST}
${ECHO_CMD} bin/phoenix >>${PLIST}
${ECHO_CMD} bin/phoenix-config >>${PLIST}
${ECHO_CMD} bin/firebird >>${PLIST}
${ECHO_CMD} bin/MozillaFirebird >>${PLIST}
${ECHO_CMD} bin/firebird-config >>${PLIST}
.for i in ${EXTRA_SCRIPTS}
${ECHO_CMD} bin/${i} >>${PLIST}
.endfor # i in ${EXTRA_SCRIPTS}
@ -158,8 +168,8 @@ cons-plist:
# Under normal circumstances, you should not put anything after
# the above line. However, this is the only way I can state the
# dependency without trashing the actual code of the generate-plist
# target. This is a limitation of the make(1) program itself.
# target. This is a limitation of the make(1) program itself.
# </alane>
generate-plist: install-extra link-bins cleanup-install cons-plist
generate-plist: install-extra link-bins link-java cleanup-install cons-plist
#EOF

View file

@ -1 +1 @@
MD5 (phoenix-0.5.tar.bz2) = fb99a5a866a99fbb15269699a1022b47
MD5 (MozillaFirebird-0.6-source.tar.bz2) = de52dd03f8628724f14f517cd6346755

View file

@ -33,7 +33,7 @@
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$Id: MoZiLLa.in,v 1.18 2002/12/18 02:40:58 alane Exp $
$Id: firebird.rb,v 1.2 2003/05/31 17:24:19 marcus Exp $
2002-12-16 Alan Eldridge <alane@geeksrus.net>
@ -68,10 +68,10 @@ end
IO::popen("xwininfo -display #{$display} -root -tree") {
|io|
if NAME != "phoenix"
if NAME != "firebird"
$windows = io.grep(%r<"Mozilla"\s+"navigator:\s*browser">)
else
$windows = io.grep(%r<Phoenix.*"Mozilla"\s+"navigator:\s*browser">)
$windows = io.grep(%r<MozillaFirebird-bin.*>)
end
}

View file

@ -1,7 +1,7 @@
#!/bin/sh
# -*-shell-script-*-
#
# mkdistfile -- maintainer's utility to make a phoenix distfile
# mkdistfile -- maintainer's utility to make a firebird distfile
#
# Copyright (c) 2002, Alan Eldridge
# All rights reserved.
@ -87,7 +87,7 @@ EOF
############################################################
# show version and exit
############################################################
VERSION='$Revision$'
VERSION='$Revision: 1.1 $'
VERSION=${VERSION#* }; VERSION=${VERSION% *}
version() { echo "$APPNAME $VERSION" \
"Copyright (c) 2002 Alan Eldridge"; exit $1;}
@ -165,7 +165,7 @@ EOF
test -d mozilla || die "No mozilla dir here."
find mozilla 2>/dev/null | egrep -f $exfile | xargs rm -fr
rm -f $exfile
status "making phoenix-$REV.tar.bz2 ..."
tar -cjpf phoenix-$REV.tar.bz2 mozilla
status "making firebird-$REV.tar.bz2 ..."
tar -cjpf firebird-$REV.tar.bz2 mozilla
status "done."
#EOF

View file

@ -20,10 +20,6 @@ export XP_UNIX=1
mk_add_options XP_UNIX=1
export PERL=/usr/local/bin/perl
mk_add_options PERL=$PERL
export GTK_CONFIG=@X11BASE@/bin/gtk12-config
mk_add_options GTK_CONFIG=$GTK_CONFIG
export GLIB_CONFIG=@LOCALBASE@/bin/glib12-config
mk_add_options GLIB_CONFIG=$GLIB_CONFIG
# Configure options for installation
ac_add_options --prefix=@PREFIX@
######################################################################
@ -46,6 +42,8 @@ ac_add_options --disable-jsd
ac_add_options --disable-ldap
ac_add_options --disable-pedantic
ac_add_options --disable-xinerama
ac_add_options --enable-extensions=default,-inspector,-irc,-venkman,-content-packs,-help
ac_add_options --enable-plaintext-editor-only
######################################################################
# conditional from port Makefile
if test -n "$WITH_DEBUG"; then
@ -63,4 +61,9 @@ if test -z "$WITHOUT_XFT"; then
else
ac_add_options --disable-xft
fi # test -z "$WITHOUT_XFT"
if test -n "$WITH_GTK2"; then
ac_add_options --enable-default-toolkit=gtk2
else
ac_add_options --enable-default-toolkit=gtk
fi # test -n "$WITH_GTK2"
######################################################################

View file

@ -0,0 +1,11 @@
--- extensions/transformiix/source/base/Double.cpp.orig Wed May 21 04:42:05 2003
+++ extensions/transformiix/source/base/Double.cpp Wed May 21 04:42:24 2003
@@ -51,7 +51,7 @@
//A trick to handle IEEE floating point exceptions on FreeBSD - E.D.
#ifdef __FreeBSD__
#include <ieeefp.h>
-#ifdef __alpha__
+#if defined(__alpha__) || defined(__sparc64__)
fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
#else
fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP|FP_X_DNML;

View file

@ -0,0 +1,492 @@
--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Mon Jan 27 22:52:51 2003
+++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Tue May 27 01:41:12 2003
@@ -100,9 +100,15 @@
ASFILES := xptcinvoke_asm_osf1_alpha.s xptcstubs_asm_osf1_alpha.s
endif
#
+# FreeBSD/Alpha
+#
+ifeq ($(OS_ARCH)$(OS_TEST),FreeBSDalpha)
+CPPSRCS := xptcinvoke_freebsd_alpha.cpp xptcstubs_freebsd_alpha.cpp
+endif
+#
# Linux/Alpha
#
-ifneq (,$(filter Linuxalpha FreeBSDalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
+ifneq (,$(filter Linuxalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
CPPSRCS := xptcinvoke_linux_alpha.cpp xptcstubs_linux_alpha.cpp
endif
#
--- config/rules.mk.orig Mon May 5 21:04:55 2003
+++ config/rules.mk Tue May 27 01:33:11 2003
@@ -444,7 +444,11 @@
ifeq ($(OS_ARCH),FreeBSD)
ifdef IS_COMPONENT
+ifneq (,$(filter alpha,$(OS_TEST)))
+EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic -lc
+else
EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic
+endif
endif
endif
--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp.orig Tue May 27 01:37:25 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp Tue May 27 01:37:00 2003
@@ -0,0 +1,184 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * 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 the Initial Developer are Copyright (C) 1998
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the NPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the NPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/* Platform specific code to invoke XPCOM methods on native objects */
+
+/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
+
+#include "xptcprivate.h"
+
+/* Prototype specifies unmangled function name and disables unused warning */
+static void
+invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
+__asm__("invoke_copy_to_stack") __attribute__((unused));
+
+static void
+invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
+{
+ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
+
+ for(PRUint32 i = 0; i < paramCount; i++, d++, s++)
+ {
+ if(s->IsPtrData())
+ {
+ *d = (PRUint64)s->ptr;
+ continue;
+ }
+ switch(s->type)
+ {
+ case nsXPTType::T_I8 : *d = (PRUint64)s->val.i8; break;
+ case nsXPTType::T_I16 : *d = (PRUint64)s->val.i16; break;
+ case nsXPTType::T_I32 : *d = (PRUint64)s->val.i32; break;
+ case nsXPTType::T_I64 : *d = (PRUint64)s->val.i64; break;
+ case nsXPTType::T_U8 : *d = (PRUint64)s->val.u8; break;
+ case nsXPTType::T_U16 : *d = (PRUint64)s->val.u16; break;
+ case nsXPTType::T_U32 : *d = (PRUint64)s->val.u32; break;
+ case nsXPTType::T_U64 : *d = (PRUint64)s->val.u64; break;
+ case nsXPTType::T_FLOAT :
+ if(i < NUM_ARG_REGS)
+ {
+ // convert floats to doubles if they are to be passed
+ // via registers so we can just deal with doubles later
+ union { PRUint64 u64; double d; } t;
+ t.d = (double)s->val.f;
+ *d = t.u64;
+ }
+ else
+ // otherwise copy to stack normally
+ *d = (PRUint64)s->val.u32;
+ break;
+ case nsXPTType::T_DOUBLE : *d = (PRUint64)s->val.u64; break;
+ case nsXPTType::T_BOOL : *d = (PRUint64)s->val.b; break;
+ case nsXPTType::T_CHAR : *d = (PRUint64)s->val.c; break;
+ case nsXPTType::T_WCHAR : *d = (PRUint64)s->val.wc; break;
+ default:
+ // all the others are plain pointer types
+ *d = (PRUint64)s->val.p;
+ break;
+ }
+ }
+}
+
+/*
+ * XPTC_PUBLIC_API(nsresult)
+ * XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ * PRUint32 paramCount, nsXPTCVariant* params, void* vt)
+ */
+__asm__(
+ "#### XPTC_InvokeByIndex ####\n"
+".text\n\t"
+ ".align 5\n\t"
+ ".globl XPTC_InvokeByIndex\n\t"
+ ".ent XPTC_InvokeByIndex\n"
+"XPTC_InvokeByIndex:\n\t"
+ ".frame $15,32,$26,0\n\t"
+ ".mask 0x4008000,-32\n\t"
+ "ldgp $29,0($27)\n"
+"$XPTC_InvokeByIndex..ng:\n\t"
+ "subq $30,32,$30\n\t"
+ "stq $26,0($30)\n\t"
+ "stq $15,8($30)\n\t"
+ "bis $30,$30,$15\n\t"
+ ".prologue 1\n\t"
+
+ /*
+ * Allocate enough stack space to hold the greater of 6 or "paramCount"+1
+ * parameters. (+1 for "this" pointer) Room for at least 6 parameters
+ * is required for storage of those passed via registers.
+ */
+
+ "bis $31,5,$2\n\t" /* count = MAX(5, "paramCount") */
+ "cmplt $2,$18,$1\n\t"
+ "cmovne $1,$18,$2\n\t"
+ "s8addq $2,16,$1\n\t" /* room for count+1 params (8 bytes each) */
+ "bic $1,15,$1\n\t" /* stack space is rounded up to 0 % 16 */
+ "subq $30,$1,$30\n\t"
+
+ "stq $16,0($30)\n\t" /* save "that" (as "this" pointer) */
+ "stq $17,16($15)\n\t" /* save "methodIndex" */
+
+ "addq $30,8,$16\n\t" /* pass stack pointer */
+ "bis $18,$18,$17\n\t" /* pass "paramCount" */
+ "bis $19,$19,$18\n\t" /* pass "params" */
+ "bsr $26,$invoke_copy_to_stack..ng\n\t" /* call invoke_copy_to_stack */
+
+ /*
+ * Copy the first 6 parameters to registers and remove from stack frame.
+ * Both the integer and floating point registers are set for each parameter
+ * except the first which is the "this" pointer. (integer only)
+ * The floating point registers are all set as doubles since the
+ * invoke_copy_to_stack function should have converted the floats.
+ */
+ "ldq $16,0($30)\n\t" /* integer registers */
+ "ldq $17,8($30)\n\t"
+ "ldq $18,16($30)\n\t"
+ "ldq $19,24($30)\n\t"
+ "ldq $20,32($30)\n\t"
+ "ldq $21,40($30)\n\t"
+ "ldt $f17,8($30)\n\t" /* floating point registers */
+ "ldt $f18,16($30)\n\t"
+ "ldt $f19,24($30)\n\t"
+ "ldt $f20,32($30)\n\t"
+ "ldt $f21,40($30)\n\t"
+
+ "addq $30,48,$30\n\t" /* remove params from stack */
+
+ /*
+ * Call the virtual function with the constructed stack frame.
+ */
+ "bis $16,$16,$1\n\t" /* load "this" */
+ "ldq $2,16($15)\n\t" /* load "methodIndex" */
+ "ldq $1,0($1)\n\t" /* load vtable */
+#if 0
+ "s8addq $2,16,$2\n\t" /* vtable index = "methodIndex" * 8 + 16 */
+#else
+ "mulq $2, 8, $2\n\t"
+ "addq $2, 0, $2\n\t" /* vtable index = "methodIndex" * 16 + 24 */
+#endif
+ "addq $1,$2,$1\n\t"
+ "ldq $27,0($1)\n\t" /* load address of function */
+ "jsr $26,($27),0\n\t" /* call virtual function */
+ "ldgp $29,0($26)\n\t"
+
+ "bis $15,$15,$30\n\t"
+ "ldq $26,0($30)\n\t"
+ "ldq $15,8($30)\n\t"
+ "addq $30,32,$30\n\t"
+ "ret $31,($26),1\n\t"
+ ".end XPTC_InvokeByIndex"
+ );
+
--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp.orig Tue May 27 01:37:30 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp Tue May 27 01:37:04 2003
@@ -0,0 +1,269 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * 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 the Initial Developer are Copyright (C) 1999
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the NPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the NPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/* Implement shared vtbl methods. */
+
+/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
+
+#include <sys/types.h>
+#include <machine/cpu.h>
+#include "xptcprivate.h"
+
+/* Prototype specifies unmangled function name and disables unused warning */
+static nsresult
+PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
+__asm__("PrepareAndDispatch") __attribute__((unused));
+
+static nsresult
+PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
+{
+ const PRUint8 PARAM_BUFFER_COUNT = 16;
+ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
+
+ 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");
+
+ // args[0] to args[NUM_ARG_REGS] hold floating point register values
+ PRUint64* ap = args + NUM_ARG_REGS;
+ 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 = (PRInt8) *ap; break;
+ case nsXPTType::T_I16 : dp->val.i16 = (PRInt16) *ap; break;
+ case nsXPTType::T_I32 : dp->val.i32 = (PRInt32) *ap; break;
+ case nsXPTType::T_I64 : dp->val.i64 = (PRInt64) *ap; break;
+ case nsXPTType::T_U8 : dp->val.u8 = (PRUint8) *ap; break;
+ case nsXPTType::T_U16 : dp->val.u16 = (PRUint16) *ap; break;
+ case nsXPTType::T_U32 : dp->val.u32 = (PRUint32) *ap; break;
+ case nsXPTType::T_U64 : dp->val.u64 = (PRUint64) *ap; break;
+ case nsXPTType::T_FLOAT :
+ if(i < NUM_ARG_REGS)
+ {
+ // floats passed via registers are stored as doubles
+ // in the first NUM_ARG_REGS entries in args
+ dp->val.u64 = (PRUint64) args[i];
+ dp->val.f = (float) dp->val.d; // convert double to float
+ }
+ else
+ dp->val.u32 = (PRUint32) *ap;
+ break;
+ case nsXPTType::T_DOUBLE :
+ // doubles passed via registers are also stored
+ // in the first NUM_ARG_REGS entries in args
+ dp->val.u64 = (i < NUM_ARG_REGS) ? args[i] : *ap;
+ break;
+ case nsXPTType::T_BOOL : dp->val.b = (PRBool) *ap; break;
+ case nsXPTType::T_CHAR : dp->val.c = (char) *ap; break;
+ case nsXPTType::T_WCHAR : dp->val.wc = (PRUnichar) *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;
+}
+
+/*
+ * SharedStub()
+ * Collects arguments and calls PrepareAndDispatch. The "methodIndex" is
+ * passed to this function via $1 to preserve the argument registers.
+ */
+__asm__(
+ "#### SharedStub ####\n"
+".text\n\t"
+ ".align 5\n\t"
+ ".ent SharedStub\n"
+"SharedStub:\n\t"
+ ".frame $30,96,$26,0\n\t"
+ ".mask 0x4000000,-96\n\t"
+ "ldgp $29,0($27)\n"
+"$SharedStub..ng:\n\t"
+ "subq $30,96,$30\n\t"
+ "stq $26,0($30)\n\t"
+ ".prologue 1\n\t"
+
+ /*
+ * Store arguments passed via registers to the stack.
+ * Floating point registers are stored as doubles and converted
+ * to floats in PrepareAndDispatch if necessary.
+ */
+ "stt $f17,16($30)\n\t" /* floating point registers */
+ "stt $f18,24($30)\n\t"
+ "stt $f19,32($30)\n\t"
+ "stt $f20,40($30)\n\t"
+ "stt $f21,48($30)\n\t"
+ "stq $17,56($30)\n\t" /* integer registers */
+ "stq $18,64($30)\n\t"
+ "stq $19,72($30)\n\t"
+ "stq $20,80($30)\n\t"
+ "stq $21,88($30)\n\t"
+
+ /*
+ * Call PrepareAndDispatch function.
+ */
+ "bis $1,$1,$17\n\t" /* pass "methodIndex" */
+ "addq $30,16,$18\n\t" /* pass "args" */
+ "bsr $26,$PrepareAndDispatch..ng\n\t"
+
+ "ldq $26,0($30)\n\t"
+ "addq $30,96,$30\n\t"
+ "ret $31,($26),1\n\t"
+ ".end SharedStub"
+ );
+
+#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
+/*
+ * nsresult nsXPTCStubBase::Stub##n()
+ * Sets register $1 to "methodIndex" and jumps to SharedStub.
+ */
+#define STUB_ENTRY(n) \
+__asm__( \
+ "#### Stub"#n" ####\n" \
+".text\n\t" \
+ ".align 5\n\t" \
+ ".globl _ZN14nsXPTCStubBase5Stub"#n"Ev\n\t" \
+ ".ent _ZN14nsXPTCStubBase5Stub"#n"Ev\n" \
+"_ZN14nsXPTCStubBase5Stub"#n"Ev:\n\t" \
+ ".frame $30,0,$26,0\n\t" \
+ "ldgp $29,0($27)\n" \
+"$_ZN14nsXPTCStubBase5Stub"#n"Ev..ng:\n\t" \
+ ".prologue 1\n\t" \
+ "lda $1,"#n"\n\t" \
+ "br $31,$SharedStub..ng\n\t" \
+ ".end _ZN14nsXPTCStubBase5Stub"#n"Ev" \
+ ); \
+__asm__( \
+ "#### Stub"#n" ####\n" \
+".text\n\t" \
+ ".align 5\n\t" \
+ ".globl _ZN14nsXPTCStubBase6Stub"#n"Ev\n\t" \
+ ".ent _ZN14nsXPTCStubBase6Stub"#n"Ev\n" \
+"_ZN14nsXPTCStubBase6Stub"#n"Ev:\n\t" \
+ ".frame $30,0,$26,0\n\t" \
+ "ldgp $29,0($27)\n" \
+"$_ZN14nsXPTCStubBase6Stub"#n"Ev..ng:\n\t" \
+ ".prologue 1\n\t" \
+ "lda $1,"#n"\n\t" \
+ "br $31,$SharedStub..ng\n\t" \
+ ".end _ZN14nsXPTCStubBase6Stub"#n"Ev" \
+ ); \
+__asm__( \
+ "#### Stub"#n" ####\n" \
+".text\n\t" \
+ ".align 5\n\t" \
+ ".globl _ZN14nsXPTCStubBase7Stub"#n"Ev\n\t" \
+ ".ent _ZN14nsXPTCStubBase7Stub"#n"Ev\n" \
+"_ZN14nsXPTCStubBase7Stub"#n"Ev:\n\t" \
+ ".frame $30,0,$26,0\n\t" \
+ "ldgp $29,0($27)\n" \
+"$_ZN14nsXPTCStubBase7Stub"#n"Ev..ng:\n\t" \
+ ".prologue 1\n\t" \
+ "lda $1,"#n"\n\t" \
+ "br $31,$SharedStub..ng\n\t" \
+ ".end _ZN14nsXPTCStubBase7Stub"#n"Ev" \
+ );
+#else
+/*
+ * nsresult nsXPTCStubBase::Stub##n()
+ * Sets register $1 to "methodIndex" and jumps to SharedStub.
+ */
+#define STUB_ENTRY(n) \
+nsresult nsXPTCStubBase::Stub##n() \
+{ \
+ nsresult result; \
+__asm__ __volatile__( \
+ "ldah $29,0($27)\n\t" \
+ "lda $29,0($29)\n\t" \
+ "lda $1, "#n"\n\t" \
+ "br $31, $SharedStub..ng\n\t" \
+ "mov $0, %0\n\t" \
+ : "=r" (result) \
+ ); \
+ return result; \
+}
+#endif
+
+#define SENTINEL_ENTRY(n) \
+nsresult nsXPTCStubBase::Sentinel##n() \
+{ \
+ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
+ return NS_ERROR_NOT_IMPLEMENTED; \
+}
+
+#include "xptcstubsdef.inc"
+

View file

@ -0,0 +1,30 @@
--- build/unix/run-mozilla.sh.orig Fri Apr 18 23:12:28 2003
+++ build/unix/run-mozilla.sh Sat May 31 19:03:29 2003
@@ -355,7 +355,7 @@
fi
##
## Set LD_LIBRARY_PATH
-LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
+LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:%%PREFIX%%/lib/browser_plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
if [ -n "$LD_LIBRARYN32_PATH" ]
then
LD_LIBRARYN32_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN32_PATH+":$LD_LIBRARYN32_PATH"}
@@ -402,7 +402,7 @@
fi
fi
# Font path for Xft
-FONTCONFIG_PATH="/etc/fonts:${MOZILLA_FIVE_HOME}/res/Xft"
+FONTCONFIG_PATH="%%PREFIX%%/etc/fonts:${MOZILLA_FIVE_HOME}/res/Xft"
export FONTCONFIG_PATH
if [ "$moz_debug" -eq 1 ]
@@ -445,6 +445,9 @@
#
export MOZILLA_FIVE_HOME LD_LIBRARY_PATH
export SHLIB_PATH LIBPATH LIBRARY_PATH ADDON_PATH DYLD_LIBRARY_PATH
+
+MOZ_PLUGIN_PATH=%%PREFIX%%/lib/browser_plugins
+export MOZ_PLUGIN_PATH
if [ $moz_debug -eq 1 ]
then

View file

@ -0,0 +1,57 @@
--- gfx/src/gtk/nsFontMetricsXft.cpp.orig Mon May 12 06:03:28 2003
+++ gfx/src/gtk/nsFontMetricsXft.cpp Sat May 31 11:32:14 2003
@@ -90,6 +90,7 @@
FcPattern *mPattern;
FcPattern *mFontName;
FcCharSet *mCharset;
+ int mNotXft;
};
struct MozXftLangGroup {
@@ -772,7 +773,7 @@
// font in our loaded list that supports the character
for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
- if (FcCharSetHasChar(font->mCharset, aChar))
+ if (FcCharSetHasChar(font->mCharset, aChar) && font->GetXftFont())
return font;
}
@@ -1194,7 +1195,7 @@
for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
nsFontXft *font;
font = (nsFontXft *)mLoadedFonts.ElementAt(j);
- if (FcCharSetHasChar(font->mCharset, c)) {
+ if (FcCharSetHasChar(font->mCharset, c) && font->GetXftFont()) {
foundFont = font;
break;
}
@@ -1503,6 +1504,7 @@
FcPatternReference(mFontName);
mXftFont = nsnull;
+ mNotXft = 0;
// set up our charset
mCharset = nsnull;
@@ -1529,7 +1531,7 @@
XftFont *
nsFontXft::GetXftFont(void)
{
- if (!mXftFont) {
+ if (!mXftFont && !mNotXft) {
FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
if (!pat)
return nsnull;
@@ -1548,8 +1550,10 @@
FcPatternDel(pat, FC_SPACING);
mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
- if (!mXftFont)
+ if (!mXftFont) {
FcPatternDestroy(pat);
+ mNotXft = 1;
+ }
}
return mXftFont;

View file

@ -0,0 +1,29 @@
--- js/src/jsfun.c.orig Fri May 30 20:55:38 2003
+++ js/src/jsfun.c Fri May 30 20:54:24 2003
@@ -1081,7 +1081,7 @@
JSString *atomstr;
char *propname;
JSScopeProperty *sprop;
- jsid userid;
+ uint32 userid;
JSAtom *atom;
uintN i, n, dupflag;
uint32 type;
@@ -1157,7 +1157,7 @@
userid = INT_TO_JSVAL(sprop->shortid);
propname = ATOM_BYTES((JSAtom *)sprop->id);
if (!JS_XDRUint32(xdr, &type) ||
- !JS_XDRUint32(xdr, (uint32 *)&userid) ||
+ !JS_XDRUint32(xdr, &userid) ||
!JS_XDRCString(xdr, &propname)) {
if (mark)
JS_ARENA_RELEASE(&cx->tempPool, mark);
@@ -1173,7 +1173,7 @@
uintN attrs = JSPROP_ENUMERATE | JSPROP_PERMANENT;
if (!JS_XDRUint32(xdr, &type) ||
- !JS_XDRUint32(xdr, (uint32 *)&userid) ||
+ !JS_XDRUint32(xdr, &userid) ||
!JS_XDRCString(xdr, &propname)) {
return JS_FALSE;
}

View file

@ -0,0 +1,21 @@
--- nsprpub/pr/src/md/unix/unix.c.orig Sat May 31 18:06:04 2003
+++ nsprpub/pr/src/md/unix/unix.c Sat May 31 18:04:43 2003
@@ -65,7 +65,8 @@
* PRInt32* pointer to a _PRSockLen_t* pointer.
*/
#if defined(HAVE_SOCKLEN_T) \
- || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2)
+ || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2) \
+ || defined(FREEBSD)
#define _PRSockLen_t socklen_t
#elif defined(IRIX) || defined(HPUX) || defined(OSF1) || defined(SOLARIS) \
|| defined(AIX4_1) || defined(LINUX) || defined(SONY) \
@@ -73,7 +74,7 @@
|| defined(SUNOS4) || defined(NCR) || defined(DARWIN) \
|| defined(NEXTSTEP) || defined(QNX)
#define _PRSockLen_t int
-#elif (defined(AIX) && !defined(AIX4_1)) || defined(FREEBSD) \
+#elif (defined(AIX) && !defined(AIX4_1)) \
|| defined(NETBSD) || defined(OPENBSD) || defined(UNIXWARE) \
|| defined(DGUX) || defined(VMS) || defined(NTO)
#define _PRSockLen_t size_t

View file

@ -1,18 +1,11 @@
--- nsprpub/pr/src/misc/prtime.c.orig Sun Mar 31 12:17:46 2002
+++ nsprpub/pr/src/misc/prtime.c Tue Dec 17 21:30:30 2002
@@ -1666,12 +1666,13 @@
* values for these two fields.
--- nsprpub/pr/src/misc/prtime.c.orig Thu Feb 27 01:01:02 2003
+++ nsprpub/pr/src/misc/prtime.c Thu May 22 16:46:49 2003
@@ -1666,7 +1666,7 @@
*/
-#if defined(SUNOS4) || (__GLIBC__ >= 2) || defined(XP_BEOS)
+#if defined(__FreeBSD__)|| defined(SUNOS4) \
+ || (__GLIBC__ >= 2) || defined(XP_BEOS)
if (mktime(&a) == -1) {
PR_snprintf(buf, buflen, "can't get timezone");
return 0;
}
-#endif
+#endif /* check for __FreeBSD__, too <alane@freebsd.org> */
return strftime(buf, buflen, fmt, &a);
}
#if defined(SUNOS4) || (__GLIBC__ >= 2) || defined(XP_BEOS) \
- || defined(NETBSD)
+ || defined(NETBSD) || defined(__FreeBSD__)
a.tm_zone = NULL;
a.tm_gmtoff = tm->tm_params.tp_gmt_offset + tm->tm_params.tp_dst_offset;
#endif

View file

@ -0,0 +1,69 @@
diff -ru ./nsprpub/pr/include/md/_freebsd.cfg ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.cfg
--- ./nsprpub/pr/include/md/_freebsd.cfg Wed Jan 2 18:38:25 2002
+++ ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.cfg Tue May 20 21:27:31 2003
@@ -138,6 +138,53 @@
#define PR_ALIGN_OF_DOUBLE 8
#define PR_ALIGN_OF_POINTER 8
+#elif defined(__sparc__)
+
+#undef IS_LITTLE_ENDIAN
+#define IS_BIG_ENDIAN 1
+#define HAVE_LONG_LONG
+#define HAVE_ALIGNED_DOUBLES
+#define HAVE_ALIGNED_LONGLONGS
+#define IS_64
+
+#define PR_BYTES_PER_BYTE 1
+#define PR_BYTES_PER_SHORT 2
+#define PR_BYTES_PER_INT 4
+#define PR_BYTES_PER_INT64 8
+#define PR_BYTES_PER_LONG 8
+#define PR_BYTES_PER_FLOAT 4
+#define PR_BYTES_PER_DOUBLE 8
+#define PR_BYTES_PER_WORD 8
+#define PR_BYTES_PER_DWORD 8
+#define PR_BYTES_PER_WORD_LOG2 3
+#define PR_BYTES_PER_DWORD_LOG2 3
+
+#define PR_BITS_PER_BYTE 8
+#define PR_BITS_PER_SHORT 16
+#define PR_BITS_PER_INT 32
+#define PR_BITS_PER_INT64 64
+#define PR_BITS_PER_LONG 64
+#define PR_BITS_PER_FLOAT 32
+#define PR_BITS_PER_DOUBLE 64
+#define PR_BITS_PER_WORD 64
+
+#define PR_BITS_PER_BYTE_LOG2 3
+#define PR_BITS_PER_SHORT_LOG2 4
+#define PR_BITS_PER_INT_LOG2 5
+#define PR_BITS_PER_INT64_LOG2 6
+#define PR_BITS_PER_LONG_LOG2 6
+#define PR_BITS_PER_FLOAT_LOG2 5
+#define PR_BITS_PER_DOUBLE_LOG2 6
+#define PR_BITS_PER_WORD_LOG2 6
+
+#define PR_ALIGN_OF_SHORT 2
+#define PR_ALIGN_OF_INT 4
+#define PR_ALIGN_OF_LONG 8
+#define PR_ALIGN_OF_INT64 8
+#define PR_ALIGN_OF_FLOAT 4
+#define PR_ALIGN_OF_DOUBLE 8
+#define PR_ALIGN_OF_POINTER 8
+
#else
#error "Unknown CPU architecture"
diff -ru ./nsprpub/pr/include/md/_freebsd.h ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.h
--- ./nsprpub/pr/include/md/_freebsd.h Thu Jan 16 15:09:12 2003
+++ ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.h Tue May 20 21:27:13 2003
@@ -48,6 +48,8 @@
#define _PR_SI_ARCHITECTURE "x86"
#elif defined(__alpha)
#define _PR_SI_ARCHITECTURE "alpha"
+#elif defined(__sparc__)
+#define _PR_SI_ARCHITECTURE "sparc"
#else
#error "Unknown CPU architecture"
#endif

View file

@ -0,0 +1,345 @@
--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Mon May 26 13:26:01 2003
+++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Mon May 26 13:30:04 2003
@@ -287,6 +287,15 @@
ASFILES := xptcinvoke_asm_sparc_netbsd.s xptcstubs_asm_sparc_netbsd.s
endif
#
+# FreeBSD/SPARC64
+#
+ifeq ($(OS_ARCH),FreeBSD)
+ifneq (,$(findstring sparc,$(OS_TEST)))
+CPPSRCS := xptcinvoke_sparc64_freebsd.cpp xptcstubs_sparc64_freebsd.cpp
+ASFILES := xptcinvoke_asm_sparc64_freebsd.s xptcstubs_asm_sparcv9_solaris.s
+endif
+endif
+#
# Solaris/SPARC
#
ifeq ($(OS_ARCH),SunOS)
--- /dev/null Mon May 26 13:22:00 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc64_freebsd.cpp Mon May 26 04:12:55 2003
@@ -0,0 +1,123 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * The contents of this file are subject to the Mozilla 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/MPL/
+ *
+ * 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) 2001 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ * Stuart Parmenter <pavlov@netscape.com>
+ */
+
+/* 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 = *((PRInt64*) ap); break;
+ case nsXPTType::T_I16 : dp->val.i16 = *((PRInt64*) ap); break;
+ case nsXPTType::T_I32 : dp->val.i32 = *((PRInt64*) 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 = *((PRUint64*) ap); break;
+ case nsXPTType::T_U16 : dp->val.u16 = *((PRUint64*)ap); break;
+ case nsXPTType::T_U32 : dp->val.u32 = *((PRUint64*)ap); break;
+ case nsXPTType::T_FLOAT : dp->val.f = ((float*) ap)[1]; break;
+ case nsXPTType::T_BOOL : dp->val.b = *((PRInt64*) ap); break;
+ case nsXPTType::T_CHAR : dp->val.c = *((PRUint64*) ap); break;
+ case nsXPTType::T_WCHAR : dp->val.wc = *((PRInt64*) 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__ */
--- /dev/null Mon May 26 13:22:00 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc64_freebsd.s Mon May 26 04:06:09 2003
@@ -0,0 +1,104 @@
+/* -*- Mode: asm; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * The contents of this file are subject to the Mozilla 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/MPL/
+ *
+ * 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) 2001 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ * Stuart Parmenter <pavlov@netscape.com>
+ * Chris Seawood <cls@seawood.org>
+ */
+
+/*
+ Platform specific code to invoke XPCOM methods on native objects
+ for sparcv9 Solaris.
+
+ See the SPARC Compliance Definition (SCD) Chapter 3
+ for more information about what is going on here, including
+ the use of BIAS (0x7ff).
+ The SCD is available from http://www.sparc.com/.
+*/
+
+ .global XPTC_InvokeByIndex
+ .type XPTC_InvokeByIndex, #function
+
+/*
+ XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ PRUint32 paramCount, nsXPTCVariant* params);
+
+*/
+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 %d2
+ 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
+! add %l0,16,%l0 ! there are 2 extra entries in the vTable (16bytes)
+ ldx [%i0],%l1 ! *that --> address of vtable
+ ldx [%l0 + %l1],%l0 ! that->vtable[index * 8 + 16] --> 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
--- /dev/null Mon May 26 14:00:00 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_sparc64_freebsd.cpp Mon May 26 14:00:49 2003
@@ -0,0 +1,91 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * The contents of this file are subject to the Mozilla 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/MPL/
+ *
+ * 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) 2001 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ * Stuart Parmenter <pavlov@netscape.com>
+ * Chris Seawood <cls@seawood.org>
+ */
+
+
+/* Platform specific code to invoke XPCOM methods on native objects */
+
+#include "xptcprivate.h"
+
+#if !defined(__sparc) && !defined(__sparc__)
+#error "This code is for Sparc only"
+#endif
+
+/* Prototype specifies unmangled function name */
+extern "C" PRUint64
+invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s);
+
+extern "C" PRUint64
+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;
+}

View file

@ -1,6 +1,6 @@
Phoenix is a fast, low-overhead browser from the Mozilla project. See the
phoenix project page for more details.
Mozilla Firebird is the next generation browser from the Mozilla project. See
the Mozilla Firebird project page for more details.
WWW: http://www.mozilla.org/projects/phoenix/
WWW: http://www.mozilla.org/projects/firebird/
-- AlanE <alane@freebsd.org>

View file

@ -1,32 +1,36 @@
======================================================================
As of version 0.4_7, this port appears to be stable *again*. It will work
with either of the port versions of perl, provided you do "use.perl port".
It will NOT work with the -STABLE base-system versions of Perl.
Mozilla Firebird will work with either of the port versions of perl,
provided you do "use.perl port". It will NOT work with the -STABLE
base-system versions of Perl.
If you use the lang/perl5.8 port, please remove the File::Spec package with
the command "pkg_deinstall -f p5-File-Spec". If you are updating to the 5.8
version of perl, please do this *first*.
Any bug reports should be addressed to the maintainers at:
phoenix@freebsd.org
gnome@FreeBSD.org
You may also Cc: freebsd-ports@freebsd.org. Please do not send
bug reports to any other addresses.
Please include the following information with any bug report:
* Output from 'uname -a'.
* Date/time stamp from www/phoenix/Makefile.
* Date/time stamp from www/mozilla-firebird/Makefile.
* Perl version used (/usr/bin/perl --version or
/usr/local/bin/perl --version for -current).
* Where/when did the problem occur: configuring, building, or
running phoenix?
running mozilla-firebird?
* How can you reproduce the problem?
Thank you for your help in testing and reporting bugs, and we hope you
enjoy using Phoenix.
The Maintainers (alane@ & trevor@)
enjoy using Firebird.
The Maintainers (gnome@)
Additional notes:
0.6:
Update to 0.6 version, rename from phoenix to Mozilla Firebird, all
internal names updated accordingly.
0.4_8:
Add patch to fix network ops on -CURRENT.
@ -61,12 +65,9 @@ Patch to hopefully fix crash when formatting time string at end of download.
Thanks to Greg Rumple and Joe Marcus Clarke for the fantastic work debugging
this one.
Added /usr/X11R6/bin/phoenix.rb. If you have ruby installed, you can run
this instead of 'phoenix' and it takes care of the 'profile in use' errors
Added /usr/X11R6/bin/firebird.rb. If you have ruby installed, you can run
this instead of 'firebird' and it takes care of the 'profile in use' errors
by automatically using an existing phoenix if one is running. I didn't put
a dependency because I don't want to require ruby + ruby-shim to run the
browser.
-- AlanE <phoenix@freebsd.org>
======================================================================

View file

@ -1,57 +1,56 @@
# ex:ts=8 -*-mode: makefile-*-
#
# New ports collection makefile for: phoenix
# Date created: 2002/10/21
# Whom: Alan Eldridge <alane@FreeBSD.org>
# New ports collection makefile for: mozilla-firebird
# Date created: May 31, 2003
# Whom: Joe Marcus Clarke <marcus@FreeBSD.org>
#
# $FreeBSD$
#
PORTNAME= phoenix
PORTVERSION= 0.5
PORTREVISION= 4
CATEGORIES= www
MASTER_SITES= ${MASTER_SITE_LOCAL} ${BSD_WEBDIR}
MASTER_SITE_SUBDIR= alane
PORTNAME= firebird
PORTVERSION= 0.6
CATEGORIES= www
MASTER_SITES= http://komodo.mozilla.org/pub/firebird/releases/${PORTVERSION}/
PKGNAMEPREFIX= mozilla-
DISTNAME= MozillaFirebird-${PORTVERSION}-source
MAINTAINER= gnome@freebsd.org
COMMENT= Phoenix is a fast, low-overhead browser from the Mozilla project
MAINTAINER= gnome@FreeBSD.org
COMMENT= Mozilla Firebird is the next generation browser from the mozilla.org project
LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg \
png.5:${PORTSDIR}/graphics/png \
mng.1:${PORTSDIR}/graphics/libmng \
freetype.9:${PORTSDIR}/print/freetype2 \
IDL.2:${PORTSDIR}/devel/ORBit \
iconv.3:${PORTSDIR}/converters/libiconv \
nspr4.1:${PORTSDIR}/devel/nspr
BUILD_DEPENDS= zip:${PORTSDIR}/archivers/zip \
freetype-config:${PORTSDIR}/print/freetype2
BSD_WEBDIR=http://people.freebsd.org/~${MASTER_SITE_SUBDIR}/
USE_X_PREFIX= yes
USE_X_PREFIX= yes
USE_BZIP2= yes
USE_GMAKE= yes
USE_PERL5= yes
USE_REINPLACE= yes
HAS_CONFIGURE= yes
USE_BZIP2= yes
USE_GMAKE= yes
USE_PERL5= yes
USE_REINPLACE= yes
HAS_CONFIGURE= yes
USE_GNOME= gtk12 orbit
.if defined(WITH_GTK2)
USE_GNOME= gtk20 libidl
PKGNAMESUFFIX= -gtk2
.else
USE_GNOME= gtk12 orbit
.endif
NO_MTREE= yes
WRKSRC= ${WRKDIR}/mozilla
LOCAL_SUBDIR= lib/${PORTNAME}
LOCAL_PREFIX= ${PREFIX}/${LOCAL_SUBDIR}
JREDIR= ${LOCALBASE}/jdk1.3.1/jre
MOZVER= 1.3a
PLUGINSDIR= ${LOCAL_PREFIX}/lib/mozilla-${MOZVER}/plugins/
PLUGINSDIR= ${PREFIX}/lib/browser_plugins
.include <bsd.port.pre.mk>
.if ${PERL_LEVEL} < 500601
.undef NO_IGNORE
BROKEN= Phoenix only supports the ports versions of Perl.
BROKEN= Mozilla Firebird only supports the ports versions of Perl.
BROKEN+=If you have installed a Perl port, and are getting this message,
BROKEN+=please make sure you have given the command \'use.perl port\'.
.endif # ${PERL_LEVEL} < 500601
@ -61,13 +60,12 @@ PLIST=${WRKDIR}/plist
.if defined(WITH_DEBUG)
WITH_LOGGING= yes
WITHOUT_OPTIMIZE= yes
CONFIGURE_ENV+= WITH_DEBUG=yes
.endif # defined(WITH_DEBUG)
.if !defined(WITHOUT_OPTIMIZE)
.if defined(WITH_OPTIMIZED_CFLAGS)
CFLAGS+= -O2
.endif # defined(WITH_OPTIMIZE)
.endif # defined(WITH_OPTIMIZED_CFLAGS)
.if defined(WITH_LOGGING)
CONFIGURE_ENV+= WITH_LOGGING=yes
@ -79,12 +77,16 @@ CONFIGURE_ENV+= WITHOUT_XFT=yes
LIB_DEPENDS+= Xft.2:${PORTSDIR}/x11-fonts/Xft
.endif # !defined(WITHOUT_XFT)
.if defined(WITH_GTK2)
CONFIGURE_ENV+= WITH_GTK2=yes
.endif # defined(WITH_GTK2)
CPPFLAGS+= -I${X11BASE}/include
CFLAGS+= ${PTHREAD_CFLAGS}
LDFLAGS+= -L${X11BASE}/lib
LIBS+= ${PTHREAD_LIBS}
EXTRA_SCRIPTS= phoenix.rb
EXTRA_SCRIPTS= firebird.rb
pre-extract::
@${ECHO_MSG}
@ -101,12 +103,17 @@ post-extract::
-e 's|@PREFIX@|${LOCAL_PREFIX}|' \
<${FILESDIR}/mozconfig.in >${WRKSRC}/.mozconfig
post-patch:
@${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' \
${WRKSRC}/build/unix/run-mozilla.sh
post-build:
${RM} -f ${PLIST}
${TOUCH} ${PLIST}
pre-install:
${RM} -fr ${LOCAL_PREFIX}
-${MKDIR} ${PLUGINSDIR}
install-extra:
.for i in ${EXTRA_SCRIPTS}
@ -114,18 +121,20 @@ install-extra:
.endfor # i in ${EXTRA_SCRIPTS}
link-bins:
${RM} -f ${PREFIX}/bin/phoenix
${LN} -s ${LOCAL_PREFIX}/bin/phoenix \
${PREFIX}/bin/phoenix
${RM} -f ${PREFIX}/bin/phoenix-config
${RM} -f ${PREFIX}/bin/firebird
${LN} -s ${LOCAL_PREFIX}/bin/MozillaFirebird \
${PREFIX}/bin/firebird
${RM} -f ${PREFIX}/bin/MozillaFirebird
${LN} -s ${LOCAL_PREFIX}/bin/MozillaFirebird \
${PREFIX}/bin/MozillaFirebird
${RM} -f ${PREFIX}/bin/firebird-config
${LN} -s ${LOCAL_PREFIX}/bin/mozilla-config \
${PREFIX}/bin/phoenix-config
${PREFIX}/bin/firebird-config
# not used because of undefined symbol errors
link-java:
-${RM} -f ${PLUGINSDIR}/libjavaplugin_oji.so
-${LN} -sf \
${JREDIR}/plugin/i386/ns600/libjavaplugin_oji.so \
${JREDIR}/plugin/${ARCH}/ns600/libjavaplugin_oji.so \
${PLUGINSDIR}/libjavaplugin_oji.so
cleanup-install:
@ -134,8 +143,9 @@ cleanup-install:
cons-plist:
-${RM} -f ${PLIST}
${ECHO_CMD} bin/phoenix >>${PLIST}
${ECHO_CMD} bin/phoenix-config >>${PLIST}
${ECHO_CMD} bin/firebird >>${PLIST}
${ECHO_CMD} bin/MozillaFirebird >>${PLIST}
${ECHO_CMD} bin/firebird-config >>${PLIST}
.for i in ${EXTRA_SCRIPTS}
${ECHO_CMD} bin/${i} >>${PLIST}
.endfor # i in ${EXTRA_SCRIPTS}
@ -158,8 +168,8 @@ cons-plist:
# Under normal circumstances, you should not put anything after
# the above line. However, this is the only way I can state the
# dependency without trashing the actual code of the generate-plist
# target. This is a limitation of the make(1) program itself.
# target. This is a limitation of the make(1) program itself.
# </alane>
generate-plist: install-extra link-bins cleanup-install cons-plist
generate-plist: install-extra link-bins link-java cleanup-install cons-plist
#EOF

View file

@ -1 +1 @@
MD5 (phoenix-0.5.tar.bz2) = fb99a5a866a99fbb15269699a1022b47
MD5 (MozillaFirebird-0.6-source.tar.bz2) = de52dd03f8628724f14f517cd6346755

View file

@ -33,7 +33,7 @@
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$Id: MoZiLLa.in,v 1.18 2002/12/18 02:40:58 alane Exp $
$Id: firebird.rb,v 1.2 2003/05/31 17:24:19 marcus Exp $
2002-12-16 Alan Eldridge <alane@geeksrus.net>
@ -68,10 +68,10 @@ end
IO::popen("xwininfo -display #{$display} -root -tree") {
|io|
if NAME != "phoenix"
if NAME != "firebird"
$windows = io.grep(%r<"Mozilla"\s+"navigator:\s*browser">)
else
$windows = io.grep(%r<Phoenix.*"Mozilla"\s+"navigator:\s*browser">)
$windows = io.grep(%r<MozillaFirebird-bin.*>)
end
}

View file

@ -1,7 +1,7 @@
#!/bin/sh
# -*-shell-script-*-
#
# mkdistfile -- maintainer's utility to make a phoenix distfile
# mkdistfile -- maintainer's utility to make a firebird distfile
#
# Copyright (c) 2002, Alan Eldridge
# All rights reserved.
@ -87,7 +87,7 @@ EOF
############################################################
# show version and exit
############################################################
VERSION='$Revision$'
VERSION='$Revision: 1.1 $'
VERSION=${VERSION#* }; VERSION=${VERSION% *}
version() { echo "$APPNAME $VERSION" \
"Copyright (c) 2002 Alan Eldridge"; exit $1;}
@ -165,7 +165,7 @@ EOF
test -d mozilla || die "No mozilla dir here."
find mozilla 2>/dev/null | egrep -f $exfile | xargs rm -fr
rm -f $exfile
status "making phoenix-$REV.tar.bz2 ..."
tar -cjpf phoenix-$REV.tar.bz2 mozilla
status "making firebird-$REV.tar.bz2 ..."
tar -cjpf firebird-$REV.tar.bz2 mozilla
status "done."
#EOF

View file

@ -20,10 +20,6 @@ export XP_UNIX=1
mk_add_options XP_UNIX=1
export PERL=/usr/local/bin/perl
mk_add_options PERL=$PERL
export GTK_CONFIG=@X11BASE@/bin/gtk12-config
mk_add_options GTK_CONFIG=$GTK_CONFIG
export GLIB_CONFIG=@LOCALBASE@/bin/glib12-config
mk_add_options GLIB_CONFIG=$GLIB_CONFIG
# Configure options for installation
ac_add_options --prefix=@PREFIX@
######################################################################
@ -46,6 +42,8 @@ ac_add_options --disable-jsd
ac_add_options --disable-ldap
ac_add_options --disable-pedantic
ac_add_options --disable-xinerama
ac_add_options --enable-extensions=default,-inspector,-irc,-venkman,-content-packs,-help
ac_add_options --enable-plaintext-editor-only
######################################################################
# conditional from port Makefile
if test -n "$WITH_DEBUG"; then
@ -63,4 +61,9 @@ if test -z "$WITHOUT_XFT"; then
else
ac_add_options --disable-xft
fi # test -z "$WITHOUT_XFT"
if test -n "$WITH_GTK2"; then
ac_add_options --enable-default-toolkit=gtk2
else
ac_add_options --enable-default-toolkit=gtk
fi # test -n "$WITH_GTK2"
######################################################################

View file

@ -0,0 +1,11 @@
--- extensions/transformiix/source/base/Double.cpp.orig Wed May 21 04:42:05 2003
+++ extensions/transformiix/source/base/Double.cpp Wed May 21 04:42:24 2003
@@ -51,7 +51,7 @@
//A trick to handle IEEE floating point exceptions on FreeBSD - E.D.
#ifdef __FreeBSD__
#include <ieeefp.h>
-#ifdef __alpha__
+#if defined(__alpha__) || defined(__sparc64__)
fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
#else
fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP|FP_X_DNML;

View file

@ -0,0 +1,492 @@
--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Mon Jan 27 22:52:51 2003
+++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Tue May 27 01:41:12 2003
@@ -100,9 +100,15 @@
ASFILES := xptcinvoke_asm_osf1_alpha.s xptcstubs_asm_osf1_alpha.s
endif
#
+# FreeBSD/Alpha
+#
+ifeq ($(OS_ARCH)$(OS_TEST),FreeBSDalpha)
+CPPSRCS := xptcinvoke_freebsd_alpha.cpp xptcstubs_freebsd_alpha.cpp
+endif
+#
# Linux/Alpha
#
-ifneq (,$(filter Linuxalpha FreeBSDalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
+ifneq (,$(filter Linuxalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
CPPSRCS := xptcinvoke_linux_alpha.cpp xptcstubs_linux_alpha.cpp
endif
#
--- config/rules.mk.orig Mon May 5 21:04:55 2003
+++ config/rules.mk Tue May 27 01:33:11 2003
@@ -444,7 +444,11 @@
ifeq ($(OS_ARCH),FreeBSD)
ifdef IS_COMPONENT
+ifneq (,$(filter alpha,$(OS_TEST)))
+EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic -lc
+else
EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic
+endif
endif
endif
--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp.orig Tue May 27 01:37:25 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp Tue May 27 01:37:00 2003
@@ -0,0 +1,184 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * 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 the Initial Developer are Copyright (C) 1998
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the NPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the NPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/* Platform specific code to invoke XPCOM methods on native objects */
+
+/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
+
+#include "xptcprivate.h"
+
+/* Prototype specifies unmangled function name and disables unused warning */
+static void
+invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
+__asm__("invoke_copy_to_stack") __attribute__((unused));
+
+static void
+invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
+{
+ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
+
+ for(PRUint32 i = 0; i < paramCount; i++, d++, s++)
+ {
+ if(s->IsPtrData())
+ {
+ *d = (PRUint64)s->ptr;
+ continue;
+ }
+ switch(s->type)
+ {
+ case nsXPTType::T_I8 : *d = (PRUint64)s->val.i8; break;
+ case nsXPTType::T_I16 : *d = (PRUint64)s->val.i16; break;
+ case nsXPTType::T_I32 : *d = (PRUint64)s->val.i32; break;
+ case nsXPTType::T_I64 : *d = (PRUint64)s->val.i64; break;
+ case nsXPTType::T_U8 : *d = (PRUint64)s->val.u8; break;
+ case nsXPTType::T_U16 : *d = (PRUint64)s->val.u16; break;
+ case nsXPTType::T_U32 : *d = (PRUint64)s->val.u32; break;
+ case nsXPTType::T_U64 : *d = (PRUint64)s->val.u64; break;
+ case nsXPTType::T_FLOAT :
+ if(i < NUM_ARG_REGS)
+ {
+ // convert floats to doubles if they are to be passed
+ // via registers so we can just deal with doubles later
+ union { PRUint64 u64; double d; } t;
+ t.d = (double)s->val.f;
+ *d = t.u64;
+ }
+ else
+ // otherwise copy to stack normally
+ *d = (PRUint64)s->val.u32;
+ break;
+ case nsXPTType::T_DOUBLE : *d = (PRUint64)s->val.u64; break;
+ case nsXPTType::T_BOOL : *d = (PRUint64)s->val.b; break;
+ case nsXPTType::T_CHAR : *d = (PRUint64)s->val.c; break;
+ case nsXPTType::T_WCHAR : *d = (PRUint64)s->val.wc; break;
+ default:
+ // all the others are plain pointer types
+ *d = (PRUint64)s->val.p;
+ break;
+ }
+ }
+}
+
+/*
+ * XPTC_PUBLIC_API(nsresult)
+ * XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ * PRUint32 paramCount, nsXPTCVariant* params, void* vt)
+ */
+__asm__(
+ "#### XPTC_InvokeByIndex ####\n"
+".text\n\t"
+ ".align 5\n\t"
+ ".globl XPTC_InvokeByIndex\n\t"
+ ".ent XPTC_InvokeByIndex\n"
+"XPTC_InvokeByIndex:\n\t"
+ ".frame $15,32,$26,0\n\t"
+ ".mask 0x4008000,-32\n\t"
+ "ldgp $29,0($27)\n"
+"$XPTC_InvokeByIndex..ng:\n\t"
+ "subq $30,32,$30\n\t"
+ "stq $26,0($30)\n\t"
+ "stq $15,8($30)\n\t"
+ "bis $30,$30,$15\n\t"
+ ".prologue 1\n\t"
+
+ /*
+ * Allocate enough stack space to hold the greater of 6 or "paramCount"+1
+ * parameters. (+1 for "this" pointer) Room for at least 6 parameters
+ * is required for storage of those passed via registers.
+ */
+
+ "bis $31,5,$2\n\t" /* count = MAX(5, "paramCount") */
+ "cmplt $2,$18,$1\n\t"
+ "cmovne $1,$18,$2\n\t"
+ "s8addq $2,16,$1\n\t" /* room for count+1 params (8 bytes each) */
+ "bic $1,15,$1\n\t" /* stack space is rounded up to 0 % 16 */
+ "subq $30,$1,$30\n\t"
+
+ "stq $16,0($30)\n\t" /* save "that" (as "this" pointer) */
+ "stq $17,16($15)\n\t" /* save "methodIndex" */
+
+ "addq $30,8,$16\n\t" /* pass stack pointer */
+ "bis $18,$18,$17\n\t" /* pass "paramCount" */
+ "bis $19,$19,$18\n\t" /* pass "params" */
+ "bsr $26,$invoke_copy_to_stack..ng\n\t" /* call invoke_copy_to_stack */
+
+ /*
+ * Copy the first 6 parameters to registers and remove from stack frame.
+ * Both the integer and floating point registers are set for each parameter
+ * except the first which is the "this" pointer. (integer only)
+ * The floating point registers are all set as doubles since the
+ * invoke_copy_to_stack function should have converted the floats.
+ */
+ "ldq $16,0($30)\n\t" /* integer registers */
+ "ldq $17,8($30)\n\t"
+ "ldq $18,16($30)\n\t"
+ "ldq $19,24($30)\n\t"
+ "ldq $20,32($30)\n\t"
+ "ldq $21,40($30)\n\t"
+ "ldt $f17,8($30)\n\t" /* floating point registers */
+ "ldt $f18,16($30)\n\t"
+ "ldt $f19,24($30)\n\t"
+ "ldt $f20,32($30)\n\t"
+ "ldt $f21,40($30)\n\t"
+
+ "addq $30,48,$30\n\t" /* remove params from stack */
+
+ /*
+ * Call the virtual function with the constructed stack frame.
+ */
+ "bis $16,$16,$1\n\t" /* load "this" */
+ "ldq $2,16($15)\n\t" /* load "methodIndex" */
+ "ldq $1,0($1)\n\t" /* load vtable */
+#if 0
+ "s8addq $2,16,$2\n\t" /* vtable index = "methodIndex" * 8 + 16 */
+#else
+ "mulq $2, 8, $2\n\t"
+ "addq $2, 0, $2\n\t" /* vtable index = "methodIndex" * 16 + 24 */
+#endif
+ "addq $1,$2,$1\n\t"
+ "ldq $27,0($1)\n\t" /* load address of function */
+ "jsr $26,($27),0\n\t" /* call virtual function */
+ "ldgp $29,0($26)\n\t"
+
+ "bis $15,$15,$30\n\t"
+ "ldq $26,0($30)\n\t"
+ "ldq $15,8($30)\n\t"
+ "addq $30,32,$30\n\t"
+ "ret $31,($26),1\n\t"
+ ".end XPTC_InvokeByIndex"
+ );
+
--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp.orig Tue May 27 01:37:30 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp Tue May 27 01:37:04 2003
@@ -0,0 +1,269 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * 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 the Initial Developer are Copyright (C) 1999
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the NPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the NPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/* Implement shared vtbl methods. */
+
+/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
+
+#include <sys/types.h>
+#include <machine/cpu.h>
+#include "xptcprivate.h"
+
+/* Prototype specifies unmangled function name and disables unused warning */
+static nsresult
+PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
+__asm__("PrepareAndDispatch") __attribute__((unused));
+
+static nsresult
+PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
+{
+ const PRUint8 PARAM_BUFFER_COUNT = 16;
+ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
+
+ 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");
+
+ // args[0] to args[NUM_ARG_REGS] hold floating point register values
+ PRUint64* ap = args + NUM_ARG_REGS;
+ 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 = (PRInt8) *ap; break;
+ case nsXPTType::T_I16 : dp->val.i16 = (PRInt16) *ap; break;
+ case nsXPTType::T_I32 : dp->val.i32 = (PRInt32) *ap; break;
+ case nsXPTType::T_I64 : dp->val.i64 = (PRInt64) *ap; break;
+ case nsXPTType::T_U8 : dp->val.u8 = (PRUint8) *ap; break;
+ case nsXPTType::T_U16 : dp->val.u16 = (PRUint16) *ap; break;
+ case nsXPTType::T_U32 : dp->val.u32 = (PRUint32) *ap; break;
+ case nsXPTType::T_U64 : dp->val.u64 = (PRUint64) *ap; break;
+ case nsXPTType::T_FLOAT :
+ if(i < NUM_ARG_REGS)
+ {
+ // floats passed via registers are stored as doubles
+ // in the first NUM_ARG_REGS entries in args
+ dp->val.u64 = (PRUint64) args[i];
+ dp->val.f = (float) dp->val.d; // convert double to float
+ }
+ else
+ dp->val.u32 = (PRUint32) *ap;
+ break;
+ case nsXPTType::T_DOUBLE :
+ // doubles passed via registers are also stored
+ // in the first NUM_ARG_REGS entries in args
+ dp->val.u64 = (i < NUM_ARG_REGS) ? args[i] : *ap;
+ break;
+ case nsXPTType::T_BOOL : dp->val.b = (PRBool) *ap; break;
+ case nsXPTType::T_CHAR : dp->val.c = (char) *ap; break;
+ case nsXPTType::T_WCHAR : dp->val.wc = (PRUnichar) *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;
+}
+
+/*
+ * SharedStub()
+ * Collects arguments and calls PrepareAndDispatch. The "methodIndex" is
+ * passed to this function via $1 to preserve the argument registers.
+ */
+__asm__(
+ "#### SharedStub ####\n"
+".text\n\t"
+ ".align 5\n\t"
+ ".ent SharedStub\n"
+"SharedStub:\n\t"
+ ".frame $30,96,$26,0\n\t"
+ ".mask 0x4000000,-96\n\t"
+ "ldgp $29,0($27)\n"
+"$SharedStub..ng:\n\t"
+ "subq $30,96,$30\n\t"
+ "stq $26,0($30)\n\t"
+ ".prologue 1\n\t"
+
+ /*
+ * Store arguments passed via registers to the stack.
+ * Floating point registers are stored as doubles and converted
+ * to floats in PrepareAndDispatch if necessary.
+ */
+ "stt $f17,16($30)\n\t" /* floating point registers */
+ "stt $f18,24($30)\n\t"
+ "stt $f19,32($30)\n\t"
+ "stt $f20,40($30)\n\t"
+ "stt $f21,48($30)\n\t"
+ "stq $17,56($30)\n\t" /* integer registers */
+ "stq $18,64($30)\n\t"
+ "stq $19,72($30)\n\t"
+ "stq $20,80($30)\n\t"
+ "stq $21,88($30)\n\t"
+
+ /*
+ * Call PrepareAndDispatch function.
+ */
+ "bis $1,$1,$17\n\t" /* pass "methodIndex" */
+ "addq $30,16,$18\n\t" /* pass "args" */
+ "bsr $26,$PrepareAndDispatch..ng\n\t"
+
+ "ldq $26,0($30)\n\t"
+ "addq $30,96,$30\n\t"
+ "ret $31,($26),1\n\t"
+ ".end SharedStub"
+ );
+
+#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
+/*
+ * nsresult nsXPTCStubBase::Stub##n()
+ * Sets register $1 to "methodIndex" and jumps to SharedStub.
+ */
+#define STUB_ENTRY(n) \
+__asm__( \
+ "#### Stub"#n" ####\n" \
+".text\n\t" \
+ ".align 5\n\t" \
+ ".globl _ZN14nsXPTCStubBase5Stub"#n"Ev\n\t" \
+ ".ent _ZN14nsXPTCStubBase5Stub"#n"Ev\n" \
+"_ZN14nsXPTCStubBase5Stub"#n"Ev:\n\t" \
+ ".frame $30,0,$26,0\n\t" \
+ "ldgp $29,0($27)\n" \
+"$_ZN14nsXPTCStubBase5Stub"#n"Ev..ng:\n\t" \
+ ".prologue 1\n\t" \
+ "lda $1,"#n"\n\t" \
+ "br $31,$SharedStub..ng\n\t" \
+ ".end _ZN14nsXPTCStubBase5Stub"#n"Ev" \
+ ); \
+__asm__( \
+ "#### Stub"#n" ####\n" \
+".text\n\t" \
+ ".align 5\n\t" \
+ ".globl _ZN14nsXPTCStubBase6Stub"#n"Ev\n\t" \
+ ".ent _ZN14nsXPTCStubBase6Stub"#n"Ev\n" \
+"_ZN14nsXPTCStubBase6Stub"#n"Ev:\n\t" \
+ ".frame $30,0,$26,0\n\t" \
+ "ldgp $29,0($27)\n" \
+"$_ZN14nsXPTCStubBase6Stub"#n"Ev..ng:\n\t" \
+ ".prologue 1\n\t" \
+ "lda $1,"#n"\n\t" \
+ "br $31,$SharedStub..ng\n\t" \
+ ".end _ZN14nsXPTCStubBase6Stub"#n"Ev" \
+ ); \
+__asm__( \
+ "#### Stub"#n" ####\n" \
+".text\n\t" \
+ ".align 5\n\t" \
+ ".globl _ZN14nsXPTCStubBase7Stub"#n"Ev\n\t" \
+ ".ent _ZN14nsXPTCStubBase7Stub"#n"Ev\n" \
+"_ZN14nsXPTCStubBase7Stub"#n"Ev:\n\t" \
+ ".frame $30,0,$26,0\n\t" \
+ "ldgp $29,0($27)\n" \
+"$_ZN14nsXPTCStubBase7Stub"#n"Ev..ng:\n\t" \
+ ".prologue 1\n\t" \
+ "lda $1,"#n"\n\t" \
+ "br $31,$SharedStub..ng\n\t" \
+ ".end _ZN14nsXPTCStubBase7Stub"#n"Ev" \
+ );
+#else
+/*
+ * nsresult nsXPTCStubBase::Stub##n()
+ * Sets register $1 to "methodIndex" and jumps to SharedStub.
+ */
+#define STUB_ENTRY(n) \
+nsresult nsXPTCStubBase::Stub##n() \
+{ \
+ nsresult result; \
+__asm__ __volatile__( \
+ "ldah $29,0($27)\n\t" \
+ "lda $29,0($29)\n\t" \
+ "lda $1, "#n"\n\t" \
+ "br $31, $SharedStub..ng\n\t" \
+ "mov $0, %0\n\t" \
+ : "=r" (result) \
+ ); \
+ return result; \
+}
+#endif
+
+#define SENTINEL_ENTRY(n) \
+nsresult nsXPTCStubBase::Sentinel##n() \
+{ \
+ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
+ return NS_ERROR_NOT_IMPLEMENTED; \
+}
+
+#include "xptcstubsdef.inc"
+

View file

@ -0,0 +1,30 @@
--- build/unix/run-mozilla.sh.orig Fri Apr 18 23:12:28 2003
+++ build/unix/run-mozilla.sh Sat May 31 19:03:29 2003
@@ -355,7 +355,7 @@
fi
##
## Set LD_LIBRARY_PATH
-LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
+LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:%%PREFIX%%/lib/browser_plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
if [ -n "$LD_LIBRARYN32_PATH" ]
then
LD_LIBRARYN32_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN32_PATH+":$LD_LIBRARYN32_PATH"}
@@ -402,7 +402,7 @@
fi
fi
# Font path for Xft
-FONTCONFIG_PATH="/etc/fonts:${MOZILLA_FIVE_HOME}/res/Xft"
+FONTCONFIG_PATH="%%PREFIX%%/etc/fonts:${MOZILLA_FIVE_HOME}/res/Xft"
export FONTCONFIG_PATH
if [ "$moz_debug" -eq 1 ]
@@ -445,6 +445,9 @@
#
export MOZILLA_FIVE_HOME LD_LIBRARY_PATH
export SHLIB_PATH LIBPATH LIBRARY_PATH ADDON_PATH DYLD_LIBRARY_PATH
+
+MOZ_PLUGIN_PATH=%%PREFIX%%/lib/browser_plugins
+export MOZ_PLUGIN_PATH
if [ $moz_debug -eq 1 ]
then

View file

@ -0,0 +1,57 @@
--- gfx/src/gtk/nsFontMetricsXft.cpp.orig Mon May 12 06:03:28 2003
+++ gfx/src/gtk/nsFontMetricsXft.cpp Sat May 31 11:32:14 2003
@@ -90,6 +90,7 @@
FcPattern *mPattern;
FcPattern *mFontName;
FcCharSet *mCharset;
+ int mNotXft;
};
struct MozXftLangGroup {
@@ -772,7 +773,7 @@
// font in our loaded list that supports the character
for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
- if (FcCharSetHasChar(font->mCharset, aChar))
+ if (FcCharSetHasChar(font->mCharset, aChar) && font->GetXftFont())
return font;
}
@@ -1194,7 +1195,7 @@
for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
nsFontXft *font;
font = (nsFontXft *)mLoadedFonts.ElementAt(j);
- if (FcCharSetHasChar(font->mCharset, c)) {
+ if (FcCharSetHasChar(font->mCharset, c) && font->GetXftFont()) {
foundFont = font;
break;
}
@@ -1503,6 +1504,7 @@
FcPatternReference(mFontName);
mXftFont = nsnull;
+ mNotXft = 0;
// set up our charset
mCharset = nsnull;
@@ -1529,7 +1531,7 @@
XftFont *
nsFontXft::GetXftFont(void)
{
- if (!mXftFont) {
+ if (!mXftFont && !mNotXft) {
FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
if (!pat)
return nsnull;
@@ -1548,8 +1550,10 @@
FcPatternDel(pat, FC_SPACING);
mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
- if (!mXftFont)
+ if (!mXftFont) {
FcPatternDestroy(pat);
+ mNotXft = 1;
+ }
}
return mXftFont;

View file

@ -0,0 +1,29 @@
--- js/src/jsfun.c.orig Fri May 30 20:55:38 2003
+++ js/src/jsfun.c Fri May 30 20:54:24 2003
@@ -1081,7 +1081,7 @@
JSString *atomstr;
char *propname;
JSScopeProperty *sprop;
- jsid userid;
+ uint32 userid;
JSAtom *atom;
uintN i, n, dupflag;
uint32 type;
@@ -1157,7 +1157,7 @@
userid = INT_TO_JSVAL(sprop->shortid);
propname = ATOM_BYTES((JSAtom *)sprop->id);
if (!JS_XDRUint32(xdr, &type) ||
- !JS_XDRUint32(xdr, (uint32 *)&userid) ||
+ !JS_XDRUint32(xdr, &userid) ||
!JS_XDRCString(xdr, &propname)) {
if (mark)
JS_ARENA_RELEASE(&cx->tempPool, mark);
@@ -1173,7 +1173,7 @@
uintN attrs = JSPROP_ENUMERATE | JSPROP_PERMANENT;
if (!JS_XDRUint32(xdr, &type) ||
- !JS_XDRUint32(xdr, (uint32 *)&userid) ||
+ !JS_XDRUint32(xdr, &userid) ||
!JS_XDRCString(xdr, &propname)) {
return JS_FALSE;
}

View file

@ -0,0 +1,21 @@
--- nsprpub/pr/src/md/unix/unix.c.orig Sat May 31 18:06:04 2003
+++ nsprpub/pr/src/md/unix/unix.c Sat May 31 18:04:43 2003
@@ -65,7 +65,8 @@
* PRInt32* pointer to a _PRSockLen_t* pointer.
*/
#if defined(HAVE_SOCKLEN_T) \
- || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2)
+ || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2) \
+ || defined(FREEBSD)
#define _PRSockLen_t socklen_t
#elif defined(IRIX) || defined(HPUX) || defined(OSF1) || defined(SOLARIS) \
|| defined(AIX4_1) || defined(LINUX) || defined(SONY) \
@@ -73,7 +74,7 @@
|| defined(SUNOS4) || defined(NCR) || defined(DARWIN) \
|| defined(NEXTSTEP) || defined(QNX)
#define _PRSockLen_t int
-#elif (defined(AIX) && !defined(AIX4_1)) || defined(FREEBSD) \
+#elif (defined(AIX) && !defined(AIX4_1)) \
|| defined(NETBSD) || defined(OPENBSD) || defined(UNIXWARE) \
|| defined(DGUX) || defined(VMS) || defined(NTO)
#define _PRSockLen_t size_t

View file

@ -1,18 +1,11 @@
--- nsprpub/pr/src/misc/prtime.c.orig Sun Mar 31 12:17:46 2002
+++ nsprpub/pr/src/misc/prtime.c Tue Dec 17 21:30:30 2002
@@ -1666,12 +1666,13 @@
* values for these two fields.
--- nsprpub/pr/src/misc/prtime.c.orig Thu Feb 27 01:01:02 2003
+++ nsprpub/pr/src/misc/prtime.c Thu May 22 16:46:49 2003
@@ -1666,7 +1666,7 @@
*/
-#if defined(SUNOS4) || (__GLIBC__ >= 2) || defined(XP_BEOS)
+#if defined(__FreeBSD__)|| defined(SUNOS4) \
+ || (__GLIBC__ >= 2) || defined(XP_BEOS)
if (mktime(&a) == -1) {
PR_snprintf(buf, buflen, "can't get timezone");
return 0;
}
-#endif
+#endif /* check for __FreeBSD__, too <alane@freebsd.org> */
return strftime(buf, buflen, fmt, &a);
}
#if defined(SUNOS4) || (__GLIBC__ >= 2) || defined(XP_BEOS) \
- || defined(NETBSD)
+ || defined(NETBSD) || defined(__FreeBSD__)
a.tm_zone = NULL;
a.tm_gmtoff = tm->tm_params.tp_gmt_offset + tm->tm_params.tp_dst_offset;
#endif

View file

@ -0,0 +1,69 @@
diff -ru ./nsprpub/pr/include/md/_freebsd.cfg ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.cfg
--- ./nsprpub/pr/include/md/_freebsd.cfg Wed Jan 2 18:38:25 2002
+++ ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.cfg Tue May 20 21:27:31 2003
@@ -138,6 +138,53 @@
#define PR_ALIGN_OF_DOUBLE 8
#define PR_ALIGN_OF_POINTER 8
+#elif defined(__sparc__)
+
+#undef IS_LITTLE_ENDIAN
+#define IS_BIG_ENDIAN 1
+#define HAVE_LONG_LONG
+#define HAVE_ALIGNED_DOUBLES
+#define HAVE_ALIGNED_LONGLONGS
+#define IS_64
+
+#define PR_BYTES_PER_BYTE 1
+#define PR_BYTES_PER_SHORT 2
+#define PR_BYTES_PER_INT 4
+#define PR_BYTES_PER_INT64 8
+#define PR_BYTES_PER_LONG 8
+#define PR_BYTES_PER_FLOAT 4
+#define PR_BYTES_PER_DOUBLE 8
+#define PR_BYTES_PER_WORD 8
+#define PR_BYTES_PER_DWORD 8
+#define PR_BYTES_PER_WORD_LOG2 3
+#define PR_BYTES_PER_DWORD_LOG2 3
+
+#define PR_BITS_PER_BYTE 8
+#define PR_BITS_PER_SHORT 16
+#define PR_BITS_PER_INT 32
+#define PR_BITS_PER_INT64 64
+#define PR_BITS_PER_LONG 64
+#define PR_BITS_PER_FLOAT 32
+#define PR_BITS_PER_DOUBLE 64
+#define PR_BITS_PER_WORD 64
+
+#define PR_BITS_PER_BYTE_LOG2 3
+#define PR_BITS_PER_SHORT_LOG2 4
+#define PR_BITS_PER_INT_LOG2 5
+#define PR_BITS_PER_INT64_LOG2 6
+#define PR_BITS_PER_LONG_LOG2 6
+#define PR_BITS_PER_FLOAT_LOG2 5
+#define PR_BITS_PER_DOUBLE_LOG2 6
+#define PR_BITS_PER_WORD_LOG2 6
+
+#define PR_ALIGN_OF_SHORT 2
+#define PR_ALIGN_OF_INT 4
+#define PR_ALIGN_OF_LONG 8
+#define PR_ALIGN_OF_INT64 8
+#define PR_ALIGN_OF_FLOAT 4
+#define PR_ALIGN_OF_DOUBLE 8
+#define PR_ALIGN_OF_POINTER 8
+
#else
#error "Unknown CPU architecture"
diff -ru ./nsprpub/pr/include/md/_freebsd.h ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.h
--- ./nsprpub/pr/include/md/_freebsd.h Thu Jan 16 15:09:12 2003
+++ ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.h Tue May 20 21:27:13 2003
@@ -48,6 +48,8 @@
#define _PR_SI_ARCHITECTURE "x86"
#elif defined(__alpha)
#define _PR_SI_ARCHITECTURE "alpha"
+#elif defined(__sparc__)
+#define _PR_SI_ARCHITECTURE "sparc"
#else
#error "Unknown CPU architecture"
#endif

View file

@ -0,0 +1,345 @@
--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Mon May 26 13:26:01 2003
+++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Mon May 26 13:30:04 2003
@@ -287,6 +287,15 @@
ASFILES := xptcinvoke_asm_sparc_netbsd.s xptcstubs_asm_sparc_netbsd.s
endif
#
+# FreeBSD/SPARC64
+#
+ifeq ($(OS_ARCH),FreeBSD)
+ifneq (,$(findstring sparc,$(OS_TEST)))
+CPPSRCS := xptcinvoke_sparc64_freebsd.cpp xptcstubs_sparc64_freebsd.cpp
+ASFILES := xptcinvoke_asm_sparc64_freebsd.s xptcstubs_asm_sparcv9_solaris.s
+endif
+endif
+#
# Solaris/SPARC
#
ifeq ($(OS_ARCH),SunOS)
--- /dev/null Mon May 26 13:22:00 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc64_freebsd.cpp Mon May 26 04:12:55 2003
@@ -0,0 +1,123 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * The contents of this file are subject to the Mozilla 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/MPL/
+ *
+ * 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) 2001 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ * Stuart Parmenter <pavlov@netscape.com>
+ */
+
+/* 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 = *((PRInt64*) ap); break;
+ case nsXPTType::T_I16 : dp->val.i16 = *((PRInt64*) ap); break;
+ case nsXPTType::T_I32 : dp->val.i32 = *((PRInt64*) 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 = *((PRUint64*) ap); break;
+ case nsXPTType::T_U16 : dp->val.u16 = *((PRUint64*)ap); break;
+ case nsXPTType::T_U32 : dp->val.u32 = *((PRUint64*)ap); break;
+ case nsXPTType::T_FLOAT : dp->val.f = ((float*) ap)[1]; break;
+ case nsXPTType::T_BOOL : dp->val.b = *((PRInt64*) ap); break;
+ case nsXPTType::T_CHAR : dp->val.c = *((PRUint64*) ap); break;
+ case nsXPTType::T_WCHAR : dp->val.wc = *((PRInt64*) 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__ */
--- /dev/null Mon May 26 13:22:00 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc64_freebsd.s Mon May 26 04:06:09 2003
@@ -0,0 +1,104 @@
+/* -*- Mode: asm; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * The contents of this file are subject to the Mozilla 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/MPL/
+ *
+ * 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) 2001 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ * Stuart Parmenter <pavlov@netscape.com>
+ * Chris Seawood <cls@seawood.org>
+ */
+
+/*
+ Platform specific code to invoke XPCOM methods on native objects
+ for sparcv9 Solaris.
+
+ See the SPARC Compliance Definition (SCD) Chapter 3
+ for more information about what is going on here, including
+ the use of BIAS (0x7ff).
+ The SCD is available from http://www.sparc.com/.
+*/
+
+ .global XPTC_InvokeByIndex
+ .type XPTC_InvokeByIndex, #function
+
+/*
+ XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ PRUint32 paramCount, nsXPTCVariant* params);
+
+*/
+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 %d2
+ 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
+! add %l0,16,%l0 ! there are 2 extra entries in the vTable (16bytes)
+ ldx [%i0],%l1 ! *that --> address of vtable
+ ldx [%l0 + %l1],%l0 ! that->vtable[index * 8 + 16] --> 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
--- /dev/null Mon May 26 14:00:00 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_sparc64_freebsd.cpp Mon May 26 14:00:49 2003
@@ -0,0 +1,91 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * The contents of this file are subject to the Mozilla 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/MPL/
+ *
+ * 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) 2001 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ * Stuart Parmenter <pavlov@netscape.com>
+ * Chris Seawood <cls@seawood.org>
+ */
+
+
+/* Platform specific code to invoke XPCOM methods on native objects */
+
+#include "xptcprivate.h"
+
+#if !defined(__sparc) && !defined(__sparc__)
+#error "This code is for Sparc only"
+#endif
+
+/* Prototype specifies unmangled function name */
+extern "C" PRUint64
+invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s);
+
+extern "C" PRUint64
+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;
+}

View file

@ -1,6 +1,6 @@
Phoenix is a fast, low-overhead browser from the Mozilla project. See the
phoenix project page for more details.
Mozilla Firebird is the next generation browser from the Mozilla project. See
the Mozilla Firebird project page for more details.
WWW: http://www.mozilla.org/projects/phoenix/
WWW: http://www.mozilla.org/projects/firebird/
-- AlanE <alane@freebsd.org>

View file

@ -1,32 +1,36 @@
======================================================================
As of version 0.4_7, this port appears to be stable *again*. It will work
with either of the port versions of perl, provided you do "use.perl port".
It will NOT work with the -STABLE base-system versions of Perl.
Mozilla Firebird will work with either of the port versions of perl,
provided you do "use.perl port". It will NOT work with the -STABLE
base-system versions of Perl.
If you use the lang/perl5.8 port, please remove the File::Spec package with
the command "pkg_deinstall -f p5-File-Spec". If you are updating to the 5.8
version of perl, please do this *first*.
Any bug reports should be addressed to the maintainers at:
phoenix@freebsd.org
gnome@FreeBSD.org
You may also Cc: freebsd-ports@freebsd.org. Please do not send
bug reports to any other addresses.
Please include the following information with any bug report:
* Output from 'uname -a'.
* Date/time stamp from www/phoenix/Makefile.
* Date/time stamp from www/mozilla-firebird/Makefile.
* Perl version used (/usr/bin/perl --version or
/usr/local/bin/perl --version for -current).
* Where/when did the problem occur: configuring, building, or
running phoenix?
running mozilla-firebird?
* How can you reproduce the problem?
Thank you for your help in testing and reporting bugs, and we hope you
enjoy using Phoenix.
The Maintainers (alane@ & trevor@)
enjoy using Firebird.
The Maintainers (gnome@)
Additional notes:
0.6:
Update to 0.6 version, rename from phoenix to Mozilla Firebird, all
internal names updated accordingly.
0.4_8:
Add patch to fix network ops on -CURRENT.
@ -61,12 +65,9 @@ Patch to hopefully fix crash when formatting time string at end of download.
Thanks to Greg Rumple and Joe Marcus Clarke for the fantastic work debugging
this one.
Added /usr/X11R6/bin/phoenix.rb. If you have ruby installed, you can run
this instead of 'phoenix' and it takes care of the 'profile in use' errors
Added /usr/X11R6/bin/firebird.rb. If you have ruby installed, you can run
this instead of 'firebird' and it takes care of the 'profile in use' errors
by automatically using an existing phoenix if one is running. I didn't put
a dependency because I don't want to require ruby + ruby-shim to run the
browser.
-- AlanE <phoenix@freebsd.org>
======================================================================

View file

@ -1,57 +1,56 @@
# ex:ts=8 -*-mode: makefile-*-
#
# New ports collection makefile for: phoenix
# Date created: 2002/10/21
# Whom: Alan Eldridge <alane@FreeBSD.org>
# New ports collection makefile for: mozilla-firebird
# Date created: May 31, 2003
# Whom: Joe Marcus Clarke <marcus@FreeBSD.org>
#
# $FreeBSD$
#
PORTNAME= phoenix
PORTVERSION= 0.5
PORTREVISION= 4
CATEGORIES= www
MASTER_SITES= ${MASTER_SITE_LOCAL} ${BSD_WEBDIR}
MASTER_SITE_SUBDIR= alane
PORTNAME= firebird
PORTVERSION= 0.6
CATEGORIES= www
MASTER_SITES= http://komodo.mozilla.org/pub/firebird/releases/${PORTVERSION}/
PKGNAMEPREFIX= mozilla-
DISTNAME= MozillaFirebird-${PORTVERSION}-source
MAINTAINER= gnome@freebsd.org
COMMENT= Phoenix is a fast, low-overhead browser from the Mozilla project
MAINTAINER= gnome@FreeBSD.org
COMMENT= Mozilla Firebird is the next generation browser from the mozilla.org project
LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg \
png.5:${PORTSDIR}/graphics/png \
mng.1:${PORTSDIR}/graphics/libmng \
freetype.9:${PORTSDIR}/print/freetype2 \
IDL.2:${PORTSDIR}/devel/ORBit \
iconv.3:${PORTSDIR}/converters/libiconv \
nspr4.1:${PORTSDIR}/devel/nspr
BUILD_DEPENDS= zip:${PORTSDIR}/archivers/zip \
freetype-config:${PORTSDIR}/print/freetype2
BSD_WEBDIR=http://people.freebsd.org/~${MASTER_SITE_SUBDIR}/
USE_X_PREFIX= yes
USE_X_PREFIX= yes
USE_BZIP2= yes
USE_GMAKE= yes
USE_PERL5= yes
USE_REINPLACE= yes
HAS_CONFIGURE= yes
USE_BZIP2= yes
USE_GMAKE= yes
USE_PERL5= yes
USE_REINPLACE= yes
HAS_CONFIGURE= yes
USE_GNOME= gtk12 orbit
.if defined(WITH_GTK2)
USE_GNOME= gtk20 libidl
PKGNAMESUFFIX= -gtk2
.else
USE_GNOME= gtk12 orbit
.endif
NO_MTREE= yes
WRKSRC= ${WRKDIR}/mozilla
LOCAL_SUBDIR= lib/${PORTNAME}
LOCAL_PREFIX= ${PREFIX}/${LOCAL_SUBDIR}
JREDIR= ${LOCALBASE}/jdk1.3.1/jre
MOZVER= 1.3a
PLUGINSDIR= ${LOCAL_PREFIX}/lib/mozilla-${MOZVER}/plugins/
PLUGINSDIR= ${PREFIX}/lib/browser_plugins
.include <bsd.port.pre.mk>
.if ${PERL_LEVEL} < 500601
.undef NO_IGNORE
BROKEN= Phoenix only supports the ports versions of Perl.
BROKEN= Mozilla Firebird only supports the ports versions of Perl.
BROKEN+=If you have installed a Perl port, and are getting this message,
BROKEN+=please make sure you have given the command \'use.perl port\'.
.endif # ${PERL_LEVEL} < 500601
@ -61,13 +60,12 @@ PLIST=${WRKDIR}/plist
.if defined(WITH_DEBUG)
WITH_LOGGING= yes
WITHOUT_OPTIMIZE= yes
CONFIGURE_ENV+= WITH_DEBUG=yes
.endif # defined(WITH_DEBUG)
.if !defined(WITHOUT_OPTIMIZE)
.if defined(WITH_OPTIMIZED_CFLAGS)
CFLAGS+= -O2
.endif # defined(WITH_OPTIMIZE)
.endif # defined(WITH_OPTIMIZED_CFLAGS)
.if defined(WITH_LOGGING)
CONFIGURE_ENV+= WITH_LOGGING=yes
@ -79,12 +77,16 @@ CONFIGURE_ENV+= WITHOUT_XFT=yes
LIB_DEPENDS+= Xft.2:${PORTSDIR}/x11-fonts/Xft
.endif # !defined(WITHOUT_XFT)
.if defined(WITH_GTK2)
CONFIGURE_ENV+= WITH_GTK2=yes
.endif # defined(WITH_GTK2)
CPPFLAGS+= -I${X11BASE}/include
CFLAGS+= ${PTHREAD_CFLAGS}
LDFLAGS+= -L${X11BASE}/lib
LIBS+= ${PTHREAD_LIBS}
EXTRA_SCRIPTS= phoenix.rb
EXTRA_SCRIPTS= firebird.rb
pre-extract::
@${ECHO_MSG}
@ -101,12 +103,17 @@ post-extract::
-e 's|@PREFIX@|${LOCAL_PREFIX}|' \
<${FILESDIR}/mozconfig.in >${WRKSRC}/.mozconfig
post-patch:
@${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' \
${WRKSRC}/build/unix/run-mozilla.sh
post-build:
${RM} -f ${PLIST}
${TOUCH} ${PLIST}
pre-install:
${RM} -fr ${LOCAL_PREFIX}
-${MKDIR} ${PLUGINSDIR}
install-extra:
.for i in ${EXTRA_SCRIPTS}
@ -114,18 +121,20 @@ install-extra:
.endfor # i in ${EXTRA_SCRIPTS}
link-bins:
${RM} -f ${PREFIX}/bin/phoenix
${LN} -s ${LOCAL_PREFIX}/bin/phoenix \
${PREFIX}/bin/phoenix
${RM} -f ${PREFIX}/bin/phoenix-config
${RM} -f ${PREFIX}/bin/firebird
${LN} -s ${LOCAL_PREFIX}/bin/MozillaFirebird \
${PREFIX}/bin/firebird
${RM} -f ${PREFIX}/bin/MozillaFirebird
${LN} -s ${LOCAL_PREFIX}/bin/MozillaFirebird \
${PREFIX}/bin/MozillaFirebird
${RM} -f ${PREFIX}/bin/firebird-config
${LN} -s ${LOCAL_PREFIX}/bin/mozilla-config \
${PREFIX}/bin/phoenix-config
${PREFIX}/bin/firebird-config
# not used because of undefined symbol errors
link-java:
-${RM} -f ${PLUGINSDIR}/libjavaplugin_oji.so
-${LN} -sf \
${JREDIR}/plugin/i386/ns600/libjavaplugin_oji.so \
${JREDIR}/plugin/${ARCH}/ns600/libjavaplugin_oji.so \
${PLUGINSDIR}/libjavaplugin_oji.so
cleanup-install:
@ -134,8 +143,9 @@ cleanup-install:
cons-plist:
-${RM} -f ${PLIST}
${ECHO_CMD} bin/phoenix >>${PLIST}
${ECHO_CMD} bin/phoenix-config >>${PLIST}
${ECHO_CMD} bin/firebird >>${PLIST}
${ECHO_CMD} bin/MozillaFirebird >>${PLIST}
${ECHO_CMD} bin/firebird-config >>${PLIST}
.for i in ${EXTRA_SCRIPTS}
${ECHO_CMD} bin/${i} >>${PLIST}
.endfor # i in ${EXTRA_SCRIPTS}
@ -158,8 +168,8 @@ cons-plist:
# Under normal circumstances, you should not put anything after
# the above line. However, this is the only way I can state the
# dependency without trashing the actual code of the generate-plist
# target. This is a limitation of the make(1) program itself.
# target. This is a limitation of the make(1) program itself.
# </alane>
generate-plist: install-extra link-bins cleanup-install cons-plist
generate-plist: install-extra link-bins link-java cleanup-install cons-plist
#EOF

View file

@ -1 +1 @@
MD5 (phoenix-0.5.tar.bz2) = fb99a5a866a99fbb15269699a1022b47
MD5 (MozillaFirebird-0.6-source.tar.bz2) = de52dd03f8628724f14f517cd6346755

View file

@ -0,0 +1,95 @@
#!/usr/bin/env ruby
=begin -*-mode: ruby-*-
MoZiLLa.in
Copyright (c) 2002, Alan Eldridge
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the copyright owner nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$Id: firebird.rb,v 1.2 2003/05/31 17:24:19 marcus Exp $
2002-12-16 Alan Eldridge <alane@geeksrus.net>
=end
X11BIN = "/usr/X11R6/bin"
NAME = File::basename($0, ".rb")
APP_PATH = File::join(X11BIN, NAME)
if !File::executable?(APP_PATH)
raise "File '#{APP_PATH}' not found. Giving up."
elsif ($display = ENV["DISPLAY"]) == nil
raise "Environment variable DISPLAY not found. Giving up."
end
if ARGV.size > 0
if ARGV[0] == "--debug"
ARGV.shift
else
$stdin.reopen(File::open("/dev/null", "r"))
$stdout.reopen(File::open("/dev/null", "w"))
$stderr.reopen(File::open("/dev/null", "w"))
end
end
if ARGV.size < 1
$url = nil
else
$url = ARGV.pop
$url.sub!(/^ghelp:/, "file:")
end
IO::popen("xwininfo -display #{$display} -root -tree") {
|io|
if NAME != "firebird"
$windows = io.grep(%r<"Mozilla"\s+"navigator:\s*browser">)
else
$windows = io.grep(%r<MozillaFirebird-bin.*>)
end
}
if $windows.size > 0
$id = $windows.map {
|s| s.strip.split.first
}.sort.first
$args = [ "-id", $id, "-raise", "-remote" ]
$args.push($url ? "\"openURL(#{$url},new-window)\"" :
"\"xfeDoCommand(openBrowser)\"")
else
$args = ARGV
$args.push("\"#{$url}\"") if $url
end
fork {
exec(([APP_PATH] + $args).join(" "))
}
exit!
#EOF

View file

@ -1,7 +1,7 @@
#!/bin/sh
# -*-shell-script-*-
#
# mkdistfile -- maintainer's utility to make a phoenix distfile
# mkdistfile -- maintainer's utility to make a firebird distfile
#
# Copyright (c) 2002, Alan Eldridge
# All rights reserved.
@ -87,7 +87,7 @@ EOF
############################################################
# show version and exit
############################################################
VERSION='$Revision$'
VERSION='$Revision: 1.1 $'
VERSION=${VERSION#* }; VERSION=${VERSION% *}
version() { echo "$APPNAME $VERSION" \
"Copyright (c) 2002 Alan Eldridge"; exit $1;}
@ -165,7 +165,7 @@ EOF
test -d mozilla || die "No mozilla dir here."
find mozilla 2>/dev/null | egrep -f $exfile | xargs rm -fr
rm -f $exfile
status "making phoenix-$REV.tar.bz2 ..."
tar -cjpf phoenix-$REV.tar.bz2 mozilla
status "making firebird-$REV.tar.bz2 ..."
tar -cjpf firebird-$REV.tar.bz2 mozilla
status "done."
#EOF

View file

@ -20,10 +20,6 @@ export XP_UNIX=1
mk_add_options XP_UNIX=1
export PERL=/usr/local/bin/perl
mk_add_options PERL=$PERL
export GTK_CONFIG=@X11BASE@/bin/gtk12-config
mk_add_options GTK_CONFIG=$GTK_CONFIG
export GLIB_CONFIG=@LOCALBASE@/bin/glib12-config
mk_add_options GLIB_CONFIG=$GLIB_CONFIG
# Configure options for installation
ac_add_options --prefix=@PREFIX@
######################################################################
@ -46,6 +42,8 @@ ac_add_options --disable-jsd
ac_add_options --disable-ldap
ac_add_options --disable-pedantic
ac_add_options --disable-xinerama
ac_add_options --enable-extensions=default,-inspector,-irc,-venkman,-content-packs,-help
ac_add_options --enable-plaintext-editor-only
######################################################################
# conditional from port Makefile
if test -n "$WITH_DEBUG"; then
@ -63,4 +61,9 @@ if test -z "$WITHOUT_XFT"; then
else
ac_add_options --disable-xft
fi # test -z "$WITHOUT_XFT"
if test -n "$WITH_GTK2"; then
ac_add_options --enable-default-toolkit=gtk2
else
ac_add_options --enable-default-toolkit=gtk
fi # test -n "$WITH_GTK2"
######################################################################

View file

@ -0,0 +1,11 @@
--- extensions/transformiix/source/base/Double.cpp.orig Wed May 21 04:42:05 2003
+++ extensions/transformiix/source/base/Double.cpp Wed May 21 04:42:24 2003
@@ -51,7 +51,7 @@
//A trick to handle IEEE floating point exceptions on FreeBSD - E.D.
#ifdef __FreeBSD__
#include <ieeefp.h>
-#ifdef __alpha__
+#if defined(__alpha__) || defined(__sparc64__)
fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
#else
fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP|FP_X_DNML;

View file

@ -0,0 +1,492 @@
--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Mon Jan 27 22:52:51 2003
+++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Tue May 27 01:41:12 2003
@@ -100,9 +100,15 @@
ASFILES := xptcinvoke_asm_osf1_alpha.s xptcstubs_asm_osf1_alpha.s
endif
#
+# FreeBSD/Alpha
+#
+ifeq ($(OS_ARCH)$(OS_TEST),FreeBSDalpha)
+CPPSRCS := xptcinvoke_freebsd_alpha.cpp xptcstubs_freebsd_alpha.cpp
+endif
+#
# Linux/Alpha
#
-ifneq (,$(filter Linuxalpha FreeBSDalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
+ifneq (,$(filter Linuxalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
CPPSRCS := xptcinvoke_linux_alpha.cpp xptcstubs_linux_alpha.cpp
endif
#
--- config/rules.mk.orig Mon May 5 21:04:55 2003
+++ config/rules.mk Tue May 27 01:33:11 2003
@@ -444,7 +444,11 @@
ifeq ($(OS_ARCH),FreeBSD)
ifdef IS_COMPONENT
+ifneq (,$(filter alpha,$(OS_TEST)))
+EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic -lc
+else
EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic
+endif
endif
endif
--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp.orig Tue May 27 01:37:25 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp Tue May 27 01:37:00 2003
@@ -0,0 +1,184 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * 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 the Initial Developer are Copyright (C) 1998
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the NPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the NPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/* Platform specific code to invoke XPCOM methods on native objects */
+
+/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
+
+#include "xptcprivate.h"
+
+/* Prototype specifies unmangled function name and disables unused warning */
+static void
+invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
+__asm__("invoke_copy_to_stack") __attribute__((unused));
+
+static void
+invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
+{
+ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
+
+ for(PRUint32 i = 0; i < paramCount; i++, d++, s++)
+ {
+ if(s->IsPtrData())
+ {
+ *d = (PRUint64)s->ptr;
+ continue;
+ }
+ switch(s->type)
+ {
+ case nsXPTType::T_I8 : *d = (PRUint64)s->val.i8; break;
+ case nsXPTType::T_I16 : *d = (PRUint64)s->val.i16; break;
+ case nsXPTType::T_I32 : *d = (PRUint64)s->val.i32; break;
+ case nsXPTType::T_I64 : *d = (PRUint64)s->val.i64; break;
+ case nsXPTType::T_U8 : *d = (PRUint64)s->val.u8; break;
+ case nsXPTType::T_U16 : *d = (PRUint64)s->val.u16; break;
+ case nsXPTType::T_U32 : *d = (PRUint64)s->val.u32; break;
+ case nsXPTType::T_U64 : *d = (PRUint64)s->val.u64; break;
+ case nsXPTType::T_FLOAT :
+ if(i < NUM_ARG_REGS)
+ {
+ // convert floats to doubles if they are to be passed
+ // via registers so we can just deal with doubles later
+ union { PRUint64 u64; double d; } t;
+ t.d = (double)s->val.f;
+ *d = t.u64;
+ }
+ else
+ // otherwise copy to stack normally
+ *d = (PRUint64)s->val.u32;
+ break;
+ case nsXPTType::T_DOUBLE : *d = (PRUint64)s->val.u64; break;
+ case nsXPTType::T_BOOL : *d = (PRUint64)s->val.b; break;
+ case nsXPTType::T_CHAR : *d = (PRUint64)s->val.c; break;
+ case nsXPTType::T_WCHAR : *d = (PRUint64)s->val.wc; break;
+ default:
+ // all the others are plain pointer types
+ *d = (PRUint64)s->val.p;
+ break;
+ }
+ }
+}
+
+/*
+ * XPTC_PUBLIC_API(nsresult)
+ * XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ * PRUint32 paramCount, nsXPTCVariant* params, void* vt)
+ */
+__asm__(
+ "#### XPTC_InvokeByIndex ####\n"
+".text\n\t"
+ ".align 5\n\t"
+ ".globl XPTC_InvokeByIndex\n\t"
+ ".ent XPTC_InvokeByIndex\n"
+"XPTC_InvokeByIndex:\n\t"
+ ".frame $15,32,$26,0\n\t"
+ ".mask 0x4008000,-32\n\t"
+ "ldgp $29,0($27)\n"
+"$XPTC_InvokeByIndex..ng:\n\t"
+ "subq $30,32,$30\n\t"
+ "stq $26,0($30)\n\t"
+ "stq $15,8($30)\n\t"
+ "bis $30,$30,$15\n\t"
+ ".prologue 1\n\t"
+
+ /*
+ * Allocate enough stack space to hold the greater of 6 or "paramCount"+1
+ * parameters. (+1 for "this" pointer) Room for at least 6 parameters
+ * is required for storage of those passed via registers.
+ */
+
+ "bis $31,5,$2\n\t" /* count = MAX(5, "paramCount") */
+ "cmplt $2,$18,$1\n\t"
+ "cmovne $1,$18,$2\n\t"
+ "s8addq $2,16,$1\n\t" /* room for count+1 params (8 bytes each) */
+ "bic $1,15,$1\n\t" /* stack space is rounded up to 0 % 16 */
+ "subq $30,$1,$30\n\t"
+
+ "stq $16,0($30)\n\t" /* save "that" (as "this" pointer) */
+ "stq $17,16($15)\n\t" /* save "methodIndex" */
+
+ "addq $30,8,$16\n\t" /* pass stack pointer */
+ "bis $18,$18,$17\n\t" /* pass "paramCount" */
+ "bis $19,$19,$18\n\t" /* pass "params" */
+ "bsr $26,$invoke_copy_to_stack..ng\n\t" /* call invoke_copy_to_stack */
+
+ /*
+ * Copy the first 6 parameters to registers and remove from stack frame.
+ * Both the integer and floating point registers are set for each parameter
+ * except the first which is the "this" pointer. (integer only)
+ * The floating point registers are all set as doubles since the
+ * invoke_copy_to_stack function should have converted the floats.
+ */
+ "ldq $16,0($30)\n\t" /* integer registers */
+ "ldq $17,8($30)\n\t"
+ "ldq $18,16($30)\n\t"
+ "ldq $19,24($30)\n\t"
+ "ldq $20,32($30)\n\t"
+ "ldq $21,40($30)\n\t"
+ "ldt $f17,8($30)\n\t" /* floating point registers */
+ "ldt $f18,16($30)\n\t"
+ "ldt $f19,24($30)\n\t"
+ "ldt $f20,32($30)\n\t"
+ "ldt $f21,40($30)\n\t"
+
+ "addq $30,48,$30\n\t" /* remove params from stack */
+
+ /*
+ * Call the virtual function with the constructed stack frame.
+ */
+ "bis $16,$16,$1\n\t" /* load "this" */
+ "ldq $2,16($15)\n\t" /* load "methodIndex" */
+ "ldq $1,0($1)\n\t" /* load vtable */
+#if 0
+ "s8addq $2,16,$2\n\t" /* vtable index = "methodIndex" * 8 + 16 */
+#else
+ "mulq $2, 8, $2\n\t"
+ "addq $2, 0, $2\n\t" /* vtable index = "methodIndex" * 16 + 24 */
+#endif
+ "addq $1,$2,$1\n\t"
+ "ldq $27,0($1)\n\t" /* load address of function */
+ "jsr $26,($27),0\n\t" /* call virtual function */
+ "ldgp $29,0($26)\n\t"
+
+ "bis $15,$15,$30\n\t"
+ "ldq $26,0($30)\n\t"
+ "ldq $15,8($30)\n\t"
+ "addq $30,32,$30\n\t"
+ "ret $31,($26),1\n\t"
+ ".end XPTC_InvokeByIndex"
+ );
+
--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp.orig Tue May 27 01:37:30 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp Tue May 27 01:37:04 2003
@@ -0,0 +1,269 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * 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 the Initial Developer are Copyright (C) 1999
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the NPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the NPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/* Implement shared vtbl methods. */
+
+/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
+
+#include <sys/types.h>
+#include <machine/cpu.h>
+#include "xptcprivate.h"
+
+/* Prototype specifies unmangled function name and disables unused warning */
+static nsresult
+PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
+__asm__("PrepareAndDispatch") __attribute__((unused));
+
+static nsresult
+PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
+{
+ const PRUint8 PARAM_BUFFER_COUNT = 16;
+ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
+
+ 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");
+
+ // args[0] to args[NUM_ARG_REGS] hold floating point register values
+ PRUint64* ap = args + NUM_ARG_REGS;
+ 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 = (PRInt8) *ap; break;
+ case nsXPTType::T_I16 : dp->val.i16 = (PRInt16) *ap; break;
+ case nsXPTType::T_I32 : dp->val.i32 = (PRInt32) *ap; break;
+ case nsXPTType::T_I64 : dp->val.i64 = (PRInt64) *ap; break;
+ case nsXPTType::T_U8 : dp->val.u8 = (PRUint8) *ap; break;
+ case nsXPTType::T_U16 : dp->val.u16 = (PRUint16) *ap; break;
+ case nsXPTType::T_U32 : dp->val.u32 = (PRUint32) *ap; break;
+ case nsXPTType::T_U64 : dp->val.u64 = (PRUint64) *ap; break;
+ case nsXPTType::T_FLOAT :
+ if(i < NUM_ARG_REGS)
+ {
+ // floats passed via registers are stored as doubles
+ // in the first NUM_ARG_REGS entries in args
+ dp->val.u64 = (PRUint64) args[i];
+ dp->val.f = (float) dp->val.d; // convert double to float
+ }
+ else
+ dp->val.u32 = (PRUint32) *ap;
+ break;
+ case nsXPTType::T_DOUBLE :
+ // doubles passed via registers are also stored
+ // in the first NUM_ARG_REGS entries in args
+ dp->val.u64 = (i < NUM_ARG_REGS) ? args[i] : *ap;
+ break;
+ case nsXPTType::T_BOOL : dp->val.b = (PRBool) *ap; break;
+ case nsXPTType::T_CHAR : dp->val.c = (char) *ap; break;
+ case nsXPTType::T_WCHAR : dp->val.wc = (PRUnichar) *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;
+}
+
+/*
+ * SharedStub()
+ * Collects arguments and calls PrepareAndDispatch. The "methodIndex" is
+ * passed to this function via $1 to preserve the argument registers.
+ */
+__asm__(
+ "#### SharedStub ####\n"
+".text\n\t"
+ ".align 5\n\t"
+ ".ent SharedStub\n"
+"SharedStub:\n\t"
+ ".frame $30,96,$26,0\n\t"
+ ".mask 0x4000000,-96\n\t"
+ "ldgp $29,0($27)\n"
+"$SharedStub..ng:\n\t"
+ "subq $30,96,$30\n\t"
+ "stq $26,0($30)\n\t"
+ ".prologue 1\n\t"
+
+ /*
+ * Store arguments passed via registers to the stack.
+ * Floating point registers are stored as doubles and converted
+ * to floats in PrepareAndDispatch if necessary.
+ */
+ "stt $f17,16($30)\n\t" /* floating point registers */
+ "stt $f18,24($30)\n\t"
+ "stt $f19,32($30)\n\t"
+ "stt $f20,40($30)\n\t"
+ "stt $f21,48($30)\n\t"
+ "stq $17,56($30)\n\t" /* integer registers */
+ "stq $18,64($30)\n\t"
+ "stq $19,72($30)\n\t"
+ "stq $20,80($30)\n\t"
+ "stq $21,88($30)\n\t"
+
+ /*
+ * Call PrepareAndDispatch function.
+ */
+ "bis $1,$1,$17\n\t" /* pass "methodIndex" */
+ "addq $30,16,$18\n\t" /* pass "args" */
+ "bsr $26,$PrepareAndDispatch..ng\n\t"
+
+ "ldq $26,0($30)\n\t"
+ "addq $30,96,$30\n\t"
+ "ret $31,($26),1\n\t"
+ ".end SharedStub"
+ );
+
+#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
+/*
+ * nsresult nsXPTCStubBase::Stub##n()
+ * Sets register $1 to "methodIndex" and jumps to SharedStub.
+ */
+#define STUB_ENTRY(n) \
+__asm__( \
+ "#### Stub"#n" ####\n" \
+".text\n\t" \
+ ".align 5\n\t" \
+ ".globl _ZN14nsXPTCStubBase5Stub"#n"Ev\n\t" \
+ ".ent _ZN14nsXPTCStubBase5Stub"#n"Ev\n" \
+"_ZN14nsXPTCStubBase5Stub"#n"Ev:\n\t" \
+ ".frame $30,0,$26,0\n\t" \
+ "ldgp $29,0($27)\n" \
+"$_ZN14nsXPTCStubBase5Stub"#n"Ev..ng:\n\t" \
+ ".prologue 1\n\t" \
+ "lda $1,"#n"\n\t" \
+ "br $31,$SharedStub..ng\n\t" \
+ ".end _ZN14nsXPTCStubBase5Stub"#n"Ev" \
+ ); \
+__asm__( \
+ "#### Stub"#n" ####\n" \
+".text\n\t" \
+ ".align 5\n\t" \
+ ".globl _ZN14nsXPTCStubBase6Stub"#n"Ev\n\t" \
+ ".ent _ZN14nsXPTCStubBase6Stub"#n"Ev\n" \
+"_ZN14nsXPTCStubBase6Stub"#n"Ev:\n\t" \
+ ".frame $30,0,$26,0\n\t" \
+ "ldgp $29,0($27)\n" \
+"$_ZN14nsXPTCStubBase6Stub"#n"Ev..ng:\n\t" \
+ ".prologue 1\n\t" \
+ "lda $1,"#n"\n\t" \
+ "br $31,$SharedStub..ng\n\t" \
+ ".end _ZN14nsXPTCStubBase6Stub"#n"Ev" \
+ ); \
+__asm__( \
+ "#### Stub"#n" ####\n" \
+".text\n\t" \
+ ".align 5\n\t" \
+ ".globl _ZN14nsXPTCStubBase7Stub"#n"Ev\n\t" \
+ ".ent _ZN14nsXPTCStubBase7Stub"#n"Ev\n" \
+"_ZN14nsXPTCStubBase7Stub"#n"Ev:\n\t" \
+ ".frame $30,0,$26,0\n\t" \
+ "ldgp $29,0($27)\n" \
+"$_ZN14nsXPTCStubBase7Stub"#n"Ev..ng:\n\t" \
+ ".prologue 1\n\t" \
+ "lda $1,"#n"\n\t" \
+ "br $31,$SharedStub..ng\n\t" \
+ ".end _ZN14nsXPTCStubBase7Stub"#n"Ev" \
+ );
+#else
+/*
+ * nsresult nsXPTCStubBase::Stub##n()
+ * Sets register $1 to "methodIndex" and jumps to SharedStub.
+ */
+#define STUB_ENTRY(n) \
+nsresult nsXPTCStubBase::Stub##n() \
+{ \
+ nsresult result; \
+__asm__ __volatile__( \
+ "ldah $29,0($27)\n\t" \
+ "lda $29,0($29)\n\t" \
+ "lda $1, "#n"\n\t" \
+ "br $31, $SharedStub..ng\n\t" \
+ "mov $0, %0\n\t" \
+ : "=r" (result) \
+ ); \
+ return result; \
+}
+#endif
+
+#define SENTINEL_ENTRY(n) \
+nsresult nsXPTCStubBase::Sentinel##n() \
+{ \
+ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
+ return NS_ERROR_NOT_IMPLEMENTED; \
+}
+
+#include "xptcstubsdef.inc"
+

View file

@ -0,0 +1,30 @@
--- build/unix/run-mozilla.sh.orig Fri Apr 18 23:12:28 2003
+++ build/unix/run-mozilla.sh Sat May 31 19:03:29 2003
@@ -355,7 +355,7 @@
fi
##
## Set LD_LIBRARY_PATH
-LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
+LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:%%PREFIX%%/lib/browser_plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
if [ -n "$LD_LIBRARYN32_PATH" ]
then
LD_LIBRARYN32_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN32_PATH+":$LD_LIBRARYN32_PATH"}
@@ -402,7 +402,7 @@
fi
fi
# Font path for Xft
-FONTCONFIG_PATH="/etc/fonts:${MOZILLA_FIVE_HOME}/res/Xft"
+FONTCONFIG_PATH="%%PREFIX%%/etc/fonts:${MOZILLA_FIVE_HOME}/res/Xft"
export FONTCONFIG_PATH
if [ "$moz_debug" -eq 1 ]
@@ -445,6 +445,9 @@
#
export MOZILLA_FIVE_HOME LD_LIBRARY_PATH
export SHLIB_PATH LIBPATH LIBRARY_PATH ADDON_PATH DYLD_LIBRARY_PATH
+
+MOZ_PLUGIN_PATH=%%PREFIX%%/lib/browser_plugins
+export MOZ_PLUGIN_PATH
if [ $moz_debug -eq 1 ]
then

View file

@ -0,0 +1,57 @@
--- gfx/src/gtk/nsFontMetricsXft.cpp.orig Mon May 12 06:03:28 2003
+++ gfx/src/gtk/nsFontMetricsXft.cpp Sat May 31 11:32:14 2003
@@ -90,6 +90,7 @@
FcPattern *mPattern;
FcPattern *mFontName;
FcCharSet *mCharset;
+ int mNotXft;
};
struct MozXftLangGroup {
@@ -772,7 +773,7 @@
// font in our loaded list that supports the character
for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
- if (FcCharSetHasChar(font->mCharset, aChar))
+ if (FcCharSetHasChar(font->mCharset, aChar) && font->GetXftFont())
return font;
}
@@ -1194,7 +1195,7 @@
for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
nsFontXft *font;
font = (nsFontXft *)mLoadedFonts.ElementAt(j);
- if (FcCharSetHasChar(font->mCharset, c)) {
+ if (FcCharSetHasChar(font->mCharset, c) && font->GetXftFont()) {
foundFont = font;
break;
}
@@ -1503,6 +1504,7 @@
FcPatternReference(mFontName);
mXftFont = nsnull;
+ mNotXft = 0;
// set up our charset
mCharset = nsnull;
@@ -1529,7 +1531,7 @@
XftFont *
nsFontXft::GetXftFont(void)
{
- if (!mXftFont) {
+ if (!mXftFont && !mNotXft) {
FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
if (!pat)
return nsnull;
@@ -1548,8 +1550,10 @@
FcPatternDel(pat, FC_SPACING);
mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
- if (!mXftFont)
+ if (!mXftFont) {
FcPatternDestroy(pat);
+ mNotXft = 1;
+ }
}
return mXftFont;

View file

@ -0,0 +1,29 @@
--- js/src/jsfun.c.orig Fri May 30 20:55:38 2003
+++ js/src/jsfun.c Fri May 30 20:54:24 2003
@@ -1081,7 +1081,7 @@
JSString *atomstr;
char *propname;
JSScopeProperty *sprop;
- jsid userid;
+ uint32 userid;
JSAtom *atom;
uintN i, n, dupflag;
uint32 type;
@@ -1157,7 +1157,7 @@
userid = INT_TO_JSVAL(sprop->shortid);
propname = ATOM_BYTES((JSAtom *)sprop->id);
if (!JS_XDRUint32(xdr, &type) ||
- !JS_XDRUint32(xdr, (uint32 *)&userid) ||
+ !JS_XDRUint32(xdr, &userid) ||
!JS_XDRCString(xdr, &propname)) {
if (mark)
JS_ARENA_RELEASE(&cx->tempPool, mark);
@@ -1173,7 +1173,7 @@
uintN attrs = JSPROP_ENUMERATE | JSPROP_PERMANENT;
if (!JS_XDRUint32(xdr, &type) ||
- !JS_XDRUint32(xdr, (uint32 *)&userid) ||
+ !JS_XDRUint32(xdr, &userid) ||
!JS_XDRCString(xdr, &propname)) {
return JS_FALSE;
}

View file

@ -0,0 +1,21 @@
--- nsprpub/pr/src/md/unix/unix.c.orig Sat May 31 18:06:04 2003
+++ nsprpub/pr/src/md/unix/unix.c Sat May 31 18:04:43 2003
@@ -65,7 +65,8 @@
* PRInt32* pointer to a _PRSockLen_t* pointer.
*/
#if defined(HAVE_SOCKLEN_T) \
- || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2)
+ || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2) \
+ || defined(FREEBSD)
#define _PRSockLen_t socklen_t
#elif defined(IRIX) || defined(HPUX) || defined(OSF1) || defined(SOLARIS) \
|| defined(AIX4_1) || defined(LINUX) || defined(SONY) \
@@ -73,7 +74,7 @@
|| defined(SUNOS4) || defined(NCR) || defined(DARWIN) \
|| defined(NEXTSTEP) || defined(QNX)
#define _PRSockLen_t int
-#elif (defined(AIX) && !defined(AIX4_1)) || defined(FREEBSD) \
+#elif (defined(AIX) && !defined(AIX4_1)) \
|| defined(NETBSD) || defined(OPENBSD) || defined(UNIXWARE) \
|| defined(DGUX) || defined(VMS) || defined(NTO)
#define _PRSockLen_t size_t

View file

@ -1,18 +1,11 @@
--- nsprpub/pr/src/misc/prtime.c.orig Sun Mar 31 12:17:46 2002
+++ nsprpub/pr/src/misc/prtime.c Tue Dec 17 21:30:30 2002
@@ -1666,12 +1666,13 @@
* values for these two fields.
--- nsprpub/pr/src/misc/prtime.c.orig Thu Feb 27 01:01:02 2003
+++ nsprpub/pr/src/misc/prtime.c Thu May 22 16:46:49 2003
@@ -1666,7 +1666,7 @@
*/
-#if defined(SUNOS4) || (__GLIBC__ >= 2) || defined(XP_BEOS)
+#if defined(__FreeBSD__)|| defined(SUNOS4) \
+ || (__GLIBC__ >= 2) || defined(XP_BEOS)
if (mktime(&a) == -1) {
PR_snprintf(buf, buflen, "can't get timezone");
return 0;
}
-#endif
+#endif /* check for __FreeBSD__, too <alane@freebsd.org> */
return strftime(buf, buflen, fmt, &a);
}
#if defined(SUNOS4) || (__GLIBC__ >= 2) || defined(XP_BEOS) \
- || defined(NETBSD)
+ || defined(NETBSD) || defined(__FreeBSD__)
a.tm_zone = NULL;
a.tm_gmtoff = tm->tm_params.tp_gmt_offset + tm->tm_params.tp_dst_offset;
#endif

View file

@ -0,0 +1,69 @@
diff -ru ./nsprpub/pr/include/md/_freebsd.cfg ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.cfg
--- ./nsprpub/pr/include/md/_freebsd.cfg Wed Jan 2 18:38:25 2002
+++ ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.cfg Tue May 20 21:27:31 2003
@@ -138,6 +138,53 @@
#define PR_ALIGN_OF_DOUBLE 8
#define PR_ALIGN_OF_POINTER 8
+#elif defined(__sparc__)
+
+#undef IS_LITTLE_ENDIAN
+#define IS_BIG_ENDIAN 1
+#define HAVE_LONG_LONG
+#define HAVE_ALIGNED_DOUBLES
+#define HAVE_ALIGNED_LONGLONGS
+#define IS_64
+
+#define PR_BYTES_PER_BYTE 1
+#define PR_BYTES_PER_SHORT 2
+#define PR_BYTES_PER_INT 4
+#define PR_BYTES_PER_INT64 8
+#define PR_BYTES_PER_LONG 8
+#define PR_BYTES_PER_FLOAT 4
+#define PR_BYTES_PER_DOUBLE 8
+#define PR_BYTES_PER_WORD 8
+#define PR_BYTES_PER_DWORD 8
+#define PR_BYTES_PER_WORD_LOG2 3
+#define PR_BYTES_PER_DWORD_LOG2 3
+
+#define PR_BITS_PER_BYTE 8
+#define PR_BITS_PER_SHORT 16
+#define PR_BITS_PER_INT 32
+#define PR_BITS_PER_INT64 64
+#define PR_BITS_PER_LONG 64
+#define PR_BITS_PER_FLOAT 32
+#define PR_BITS_PER_DOUBLE 64
+#define PR_BITS_PER_WORD 64
+
+#define PR_BITS_PER_BYTE_LOG2 3
+#define PR_BITS_PER_SHORT_LOG2 4
+#define PR_BITS_PER_INT_LOG2 5
+#define PR_BITS_PER_INT64_LOG2 6
+#define PR_BITS_PER_LONG_LOG2 6
+#define PR_BITS_PER_FLOAT_LOG2 5
+#define PR_BITS_PER_DOUBLE_LOG2 6
+#define PR_BITS_PER_WORD_LOG2 6
+
+#define PR_ALIGN_OF_SHORT 2
+#define PR_ALIGN_OF_INT 4
+#define PR_ALIGN_OF_LONG 8
+#define PR_ALIGN_OF_INT64 8
+#define PR_ALIGN_OF_FLOAT 4
+#define PR_ALIGN_OF_DOUBLE 8
+#define PR_ALIGN_OF_POINTER 8
+
#else
#error "Unknown CPU architecture"
diff -ru ./nsprpub/pr/include/md/_freebsd.h ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.h
--- ./nsprpub/pr/include/md/_freebsd.h Thu Jan 16 15:09:12 2003
+++ ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.h Tue May 20 21:27:13 2003
@@ -48,6 +48,8 @@
#define _PR_SI_ARCHITECTURE "x86"
#elif defined(__alpha)
#define _PR_SI_ARCHITECTURE "alpha"
+#elif defined(__sparc__)
+#define _PR_SI_ARCHITECTURE "sparc"
#else
#error "Unknown CPU architecture"
#endif

View file

@ -0,0 +1,345 @@
--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Mon May 26 13:26:01 2003
+++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Mon May 26 13:30:04 2003
@@ -287,6 +287,15 @@
ASFILES := xptcinvoke_asm_sparc_netbsd.s xptcstubs_asm_sparc_netbsd.s
endif
#
+# FreeBSD/SPARC64
+#
+ifeq ($(OS_ARCH),FreeBSD)
+ifneq (,$(findstring sparc,$(OS_TEST)))
+CPPSRCS := xptcinvoke_sparc64_freebsd.cpp xptcstubs_sparc64_freebsd.cpp
+ASFILES := xptcinvoke_asm_sparc64_freebsd.s xptcstubs_asm_sparcv9_solaris.s
+endif
+endif
+#
# Solaris/SPARC
#
ifeq ($(OS_ARCH),SunOS)
--- /dev/null Mon May 26 13:22:00 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc64_freebsd.cpp Mon May 26 04:12:55 2003
@@ -0,0 +1,123 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * The contents of this file are subject to the Mozilla 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/MPL/
+ *
+ * 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) 2001 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ * Stuart Parmenter <pavlov@netscape.com>
+ */
+
+/* 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 = *((PRInt64*) ap); break;
+ case nsXPTType::T_I16 : dp->val.i16 = *((PRInt64*) ap); break;
+ case nsXPTType::T_I32 : dp->val.i32 = *((PRInt64*) 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 = *((PRUint64*) ap); break;
+ case nsXPTType::T_U16 : dp->val.u16 = *((PRUint64*)ap); break;
+ case nsXPTType::T_U32 : dp->val.u32 = *((PRUint64*)ap); break;
+ case nsXPTType::T_FLOAT : dp->val.f = ((float*) ap)[1]; break;
+ case nsXPTType::T_BOOL : dp->val.b = *((PRInt64*) ap); break;
+ case nsXPTType::T_CHAR : dp->val.c = *((PRUint64*) ap); break;
+ case nsXPTType::T_WCHAR : dp->val.wc = *((PRInt64*) 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__ */
--- /dev/null Mon May 26 13:22:00 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc64_freebsd.s Mon May 26 04:06:09 2003
@@ -0,0 +1,104 @@
+/* -*- Mode: asm; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * The contents of this file are subject to the Mozilla 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/MPL/
+ *
+ * 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) 2001 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ * Stuart Parmenter <pavlov@netscape.com>
+ * Chris Seawood <cls@seawood.org>
+ */
+
+/*
+ Platform specific code to invoke XPCOM methods on native objects
+ for sparcv9 Solaris.
+
+ See the SPARC Compliance Definition (SCD) Chapter 3
+ for more information about what is going on here, including
+ the use of BIAS (0x7ff).
+ The SCD is available from http://www.sparc.com/.
+*/
+
+ .global XPTC_InvokeByIndex
+ .type XPTC_InvokeByIndex, #function
+
+/*
+ XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ PRUint32 paramCount, nsXPTCVariant* params);
+
+*/
+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 %d2
+ 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
+! add %l0,16,%l0 ! there are 2 extra entries in the vTable (16bytes)
+ ldx [%i0],%l1 ! *that --> address of vtable
+ ldx [%l0 + %l1],%l0 ! that->vtable[index * 8 + 16] --> 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
--- /dev/null Mon May 26 14:00:00 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_sparc64_freebsd.cpp Mon May 26 14:00:49 2003
@@ -0,0 +1,91 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * The contents of this file are subject to the Mozilla 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/MPL/
+ *
+ * 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) 2001 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ * Stuart Parmenter <pavlov@netscape.com>
+ * Chris Seawood <cls@seawood.org>
+ */
+
+
+/* Platform specific code to invoke XPCOM methods on native objects */
+
+#include "xptcprivate.h"
+
+#if !defined(__sparc) && !defined(__sparc__)
+#error "This code is for Sparc only"
+#endif
+
+/* Prototype specifies unmangled function name */
+extern "C" PRUint64
+invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s);
+
+extern "C" PRUint64
+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;
+}

View file

@ -1,95 +0,0 @@
#!/usr/bin/env ruby
=begin -*-mode: ruby-*-
MoZiLLa.in
Copyright (c) 2002, Alan Eldridge
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the copyright owner nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$Id: MoZiLLa.in,v 1.18 2002/12/18 02:40:58 alane Exp $
2002-12-16 Alan Eldridge <alane@geeksrus.net>
=end
X11BIN = "/usr/X11R6/bin"
NAME = File::basename($0, ".rb")
APP_PATH = File::join(X11BIN, NAME)
if !File::executable?(APP_PATH)
raise "File '#{APP_PATH}' not found. Giving up."
elsif ($display = ENV["DISPLAY"]) == nil
raise "Environment variable DISPLAY not found. Giving up."
end
if ARGV.size > 0
if ARGV[0] == "--debug"
ARGV.shift
else
$stdin.reopen(File::open("/dev/null", "r"))
$stdout.reopen(File::open("/dev/null", "w"))
$stderr.reopen(File::open("/dev/null", "w"))
end
end
if ARGV.size < 1
$url = nil
else
$url = ARGV.pop
$url.sub!(/^ghelp:/, "file:")
end
IO::popen("xwininfo -display #{$display} -root -tree") {
|io|
if NAME != "phoenix"
$windows = io.grep(%r<"Mozilla"\s+"navigator:\s*browser">)
else
$windows = io.grep(%r<Phoenix.*"Mozilla"\s+"navigator:\s*browser">)
end
}
if $windows.size > 0
$id = $windows.map {
|s| s.strip.split.first
}.sort.first
$args = [ "-id", $id, "-raise", "-remote" ]
$args.push($url ? "\"openURL(#{$url},new-window)\"" :
"\"xfeDoCommand(openBrowser)\"")
else
$args = ARGV
$args.push("\"#{$url}\"") if $url
end
fork {
exec(([APP_PATH] + $args).join(" "))
}
exit!
#EOF

View file

@ -1,6 +1,6 @@
Phoenix is a fast, low-overhead browser from the Mozilla project. See the
phoenix project page for more details.
Mozilla Firebird is the next generation browser from the Mozilla project. See
the Mozilla Firebird project page for more details.
WWW: http://www.mozilla.org/projects/phoenix/
WWW: http://www.mozilla.org/projects/firebird/
-- AlanE <alane@freebsd.org>

View file

@ -1,32 +1,36 @@
======================================================================
As of version 0.4_7, this port appears to be stable *again*. It will work
with either of the port versions of perl, provided you do "use.perl port".
It will NOT work with the -STABLE base-system versions of Perl.
Mozilla Firebird will work with either of the port versions of perl,
provided you do "use.perl port". It will NOT work with the -STABLE
base-system versions of Perl.
If you use the lang/perl5.8 port, please remove the File::Spec package with
the command "pkg_deinstall -f p5-File-Spec". If you are updating to the 5.8
version of perl, please do this *first*.
Any bug reports should be addressed to the maintainers at:
phoenix@freebsd.org
gnome@FreeBSD.org
You may also Cc: freebsd-ports@freebsd.org. Please do not send
bug reports to any other addresses.
Please include the following information with any bug report:
* Output from 'uname -a'.
* Date/time stamp from www/phoenix/Makefile.
* Date/time stamp from www/mozilla-firebird/Makefile.
* Perl version used (/usr/bin/perl --version or
/usr/local/bin/perl --version for -current).
* Where/when did the problem occur: configuring, building, or
running phoenix?
running mozilla-firebird?
* How can you reproduce the problem?
Thank you for your help in testing and reporting bugs, and we hope you
enjoy using Phoenix.
The Maintainers (alane@ & trevor@)
enjoy using Firebird.
The Maintainers (gnome@)
Additional notes:
0.6:
Update to 0.6 version, rename from phoenix to Mozilla Firebird, all
internal names updated accordingly.
0.4_8:
Add patch to fix network ops on -CURRENT.
@ -61,12 +65,9 @@ Patch to hopefully fix crash when formatting time string at end of download.
Thanks to Greg Rumple and Joe Marcus Clarke for the fantastic work debugging
this one.
Added /usr/X11R6/bin/phoenix.rb. If you have ruby installed, you can run
this instead of 'phoenix' and it takes care of the 'profile in use' errors
Added /usr/X11R6/bin/firebird.rb. If you have ruby installed, you can run
this instead of 'firebird' and it takes care of the 'profile in use' errors
by automatically using an existing phoenix if one is running. I didn't put
a dependency because I don't want to require ruby + ruby-shim to run the
browser.
-- AlanE <phoenix@freebsd.org>
======================================================================

View file

@ -1,57 +1,56 @@
# ex:ts=8 -*-mode: makefile-*-
#
# New ports collection makefile for: phoenix
# Date created: 2002/10/21
# Whom: Alan Eldridge <alane@FreeBSD.org>
# New ports collection makefile for: mozilla-firebird
# Date created: May 31, 2003
# Whom: Joe Marcus Clarke <marcus@FreeBSD.org>
#
# $FreeBSD$
#
PORTNAME= phoenix
PORTVERSION= 0.5
PORTREVISION= 4
CATEGORIES= www
MASTER_SITES= ${MASTER_SITE_LOCAL} ${BSD_WEBDIR}
MASTER_SITE_SUBDIR= alane
PORTNAME= firebird
PORTVERSION= 0.6
CATEGORIES= www
MASTER_SITES= http://komodo.mozilla.org/pub/firebird/releases/${PORTVERSION}/
PKGNAMEPREFIX= mozilla-
DISTNAME= MozillaFirebird-${PORTVERSION}-source
MAINTAINER= gnome@freebsd.org
COMMENT= Phoenix is a fast, low-overhead browser from the Mozilla project
MAINTAINER= gnome@FreeBSD.org
COMMENT= Mozilla Firebird is the next generation browser from the mozilla.org project
LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg \
png.5:${PORTSDIR}/graphics/png \
mng.1:${PORTSDIR}/graphics/libmng \
freetype.9:${PORTSDIR}/print/freetype2 \
IDL.2:${PORTSDIR}/devel/ORBit \
iconv.3:${PORTSDIR}/converters/libiconv \
nspr4.1:${PORTSDIR}/devel/nspr
BUILD_DEPENDS= zip:${PORTSDIR}/archivers/zip \
freetype-config:${PORTSDIR}/print/freetype2
BSD_WEBDIR=http://people.freebsd.org/~${MASTER_SITE_SUBDIR}/
USE_X_PREFIX= yes
USE_X_PREFIX= yes
USE_BZIP2= yes
USE_GMAKE= yes
USE_PERL5= yes
USE_REINPLACE= yes
HAS_CONFIGURE= yes
USE_BZIP2= yes
USE_GMAKE= yes
USE_PERL5= yes
USE_REINPLACE= yes
HAS_CONFIGURE= yes
USE_GNOME= gtk12 orbit
.if defined(WITH_GTK2)
USE_GNOME= gtk20 libidl
PKGNAMESUFFIX= -gtk2
.else
USE_GNOME= gtk12 orbit
.endif
NO_MTREE= yes
WRKSRC= ${WRKDIR}/mozilla
LOCAL_SUBDIR= lib/${PORTNAME}
LOCAL_PREFIX= ${PREFIX}/${LOCAL_SUBDIR}
JREDIR= ${LOCALBASE}/jdk1.3.1/jre
MOZVER= 1.3a
PLUGINSDIR= ${LOCAL_PREFIX}/lib/mozilla-${MOZVER}/plugins/
PLUGINSDIR= ${PREFIX}/lib/browser_plugins
.include <bsd.port.pre.mk>
.if ${PERL_LEVEL} < 500601
.undef NO_IGNORE
BROKEN= Phoenix only supports the ports versions of Perl.
BROKEN= Mozilla Firebird only supports the ports versions of Perl.
BROKEN+=If you have installed a Perl port, and are getting this message,
BROKEN+=please make sure you have given the command \'use.perl port\'.
.endif # ${PERL_LEVEL} < 500601
@ -61,13 +60,12 @@ PLIST=${WRKDIR}/plist
.if defined(WITH_DEBUG)
WITH_LOGGING= yes
WITHOUT_OPTIMIZE= yes
CONFIGURE_ENV+= WITH_DEBUG=yes
.endif # defined(WITH_DEBUG)
.if !defined(WITHOUT_OPTIMIZE)
.if defined(WITH_OPTIMIZED_CFLAGS)
CFLAGS+= -O2
.endif # defined(WITH_OPTIMIZE)
.endif # defined(WITH_OPTIMIZED_CFLAGS)
.if defined(WITH_LOGGING)
CONFIGURE_ENV+= WITH_LOGGING=yes
@ -79,12 +77,16 @@ CONFIGURE_ENV+= WITHOUT_XFT=yes
LIB_DEPENDS+= Xft.2:${PORTSDIR}/x11-fonts/Xft
.endif # !defined(WITHOUT_XFT)
.if defined(WITH_GTK2)
CONFIGURE_ENV+= WITH_GTK2=yes
.endif # defined(WITH_GTK2)
CPPFLAGS+= -I${X11BASE}/include
CFLAGS+= ${PTHREAD_CFLAGS}
LDFLAGS+= -L${X11BASE}/lib
LIBS+= ${PTHREAD_LIBS}
EXTRA_SCRIPTS= phoenix.rb
EXTRA_SCRIPTS= firebird.rb
pre-extract::
@${ECHO_MSG}
@ -101,12 +103,17 @@ post-extract::
-e 's|@PREFIX@|${LOCAL_PREFIX}|' \
<${FILESDIR}/mozconfig.in >${WRKSRC}/.mozconfig
post-patch:
@${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' \
${WRKSRC}/build/unix/run-mozilla.sh
post-build:
${RM} -f ${PLIST}
${TOUCH} ${PLIST}
pre-install:
${RM} -fr ${LOCAL_PREFIX}
-${MKDIR} ${PLUGINSDIR}
install-extra:
.for i in ${EXTRA_SCRIPTS}
@ -114,18 +121,20 @@ install-extra:
.endfor # i in ${EXTRA_SCRIPTS}
link-bins:
${RM} -f ${PREFIX}/bin/phoenix
${LN} -s ${LOCAL_PREFIX}/bin/phoenix \
${PREFIX}/bin/phoenix
${RM} -f ${PREFIX}/bin/phoenix-config
${RM} -f ${PREFIX}/bin/firebird
${LN} -s ${LOCAL_PREFIX}/bin/MozillaFirebird \
${PREFIX}/bin/firebird
${RM} -f ${PREFIX}/bin/MozillaFirebird
${LN} -s ${LOCAL_PREFIX}/bin/MozillaFirebird \
${PREFIX}/bin/MozillaFirebird
${RM} -f ${PREFIX}/bin/firebird-config
${LN} -s ${LOCAL_PREFIX}/bin/mozilla-config \
${PREFIX}/bin/phoenix-config
${PREFIX}/bin/firebird-config
# not used because of undefined symbol errors
link-java:
-${RM} -f ${PLUGINSDIR}/libjavaplugin_oji.so
-${LN} -sf \
${JREDIR}/plugin/i386/ns600/libjavaplugin_oji.so \
${JREDIR}/plugin/${ARCH}/ns600/libjavaplugin_oji.so \
${PLUGINSDIR}/libjavaplugin_oji.so
cleanup-install:
@ -134,8 +143,9 @@ cleanup-install:
cons-plist:
-${RM} -f ${PLIST}
${ECHO_CMD} bin/phoenix >>${PLIST}
${ECHO_CMD} bin/phoenix-config >>${PLIST}
${ECHO_CMD} bin/firebird >>${PLIST}
${ECHO_CMD} bin/MozillaFirebird >>${PLIST}
${ECHO_CMD} bin/firebird-config >>${PLIST}
.for i in ${EXTRA_SCRIPTS}
${ECHO_CMD} bin/${i} >>${PLIST}
.endfor # i in ${EXTRA_SCRIPTS}
@ -158,8 +168,8 @@ cons-plist:
# Under normal circumstances, you should not put anything after
# the above line. However, this is the only way I can state the
# dependency without trashing the actual code of the generate-plist
# target. This is a limitation of the make(1) program itself.
# target. This is a limitation of the make(1) program itself.
# </alane>
generate-plist: install-extra link-bins cleanup-install cons-plist
generate-plist: install-extra link-bins link-java cleanup-install cons-plist
#EOF

View file

@ -1 +1 @@
MD5 (phoenix-0.5.tar.bz2) = fb99a5a866a99fbb15269699a1022b47
MD5 (MozillaFirebird-0.6-source.tar.bz2) = de52dd03f8628724f14f517cd6346755

View file

@ -0,0 +1,95 @@
#!/usr/bin/env ruby
=begin -*-mode: ruby-*-
MoZiLLa.in
Copyright (c) 2002, Alan Eldridge
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the copyright owner nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$Id: firebird.rb,v 1.2 2003/05/31 17:24:19 marcus Exp $
2002-12-16 Alan Eldridge <alane@geeksrus.net>
=end
X11BIN = "/usr/X11R6/bin"
NAME = File::basename($0, ".rb")
APP_PATH = File::join(X11BIN, NAME)
if !File::executable?(APP_PATH)
raise "File '#{APP_PATH}' not found. Giving up."
elsif ($display = ENV["DISPLAY"]) == nil
raise "Environment variable DISPLAY not found. Giving up."
end
if ARGV.size > 0
if ARGV[0] == "--debug"
ARGV.shift
else
$stdin.reopen(File::open("/dev/null", "r"))
$stdout.reopen(File::open("/dev/null", "w"))
$stderr.reopen(File::open("/dev/null", "w"))
end
end
if ARGV.size < 1
$url = nil
else
$url = ARGV.pop
$url.sub!(/^ghelp:/, "file:")
end
IO::popen("xwininfo -display #{$display} -root -tree") {
|io|
if NAME != "firebird"
$windows = io.grep(%r<"Mozilla"\s+"navigator:\s*browser">)
else
$windows = io.grep(%r<MozillaFirebird-bin.*>)
end
}
if $windows.size > 0
$id = $windows.map {
|s| s.strip.split.first
}.sort.first
$args = [ "-id", $id, "-raise", "-remote" ]
$args.push($url ? "\"openURL(#{$url},new-window)\"" :
"\"xfeDoCommand(openBrowser)\"")
else
$args = ARGV
$args.push("\"#{$url}\"") if $url
end
fork {
exec(([APP_PATH] + $args).join(" "))
}
exit!
#EOF

View file

@ -1,7 +1,7 @@
#!/bin/sh
# -*-shell-script-*-
#
# mkdistfile -- maintainer's utility to make a phoenix distfile
# mkdistfile -- maintainer's utility to make a firebird distfile
#
# Copyright (c) 2002, Alan Eldridge
# All rights reserved.
@ -87,7 +87,7 @@ EOF
############################################################
# show version and exit
############################################################
VERSION='$Revision$'
VERSION='$Revision: 1.1 $'
VERSION=${VERSION#* }; VERSION=${VERSION% *}
version() { echo "$APPNAME $VERSION" \
"Copyright (c) 2002 Alan Eldridge"; exit $1;}
@ -165,7 +165,7 @@ EOF
test -d mozilla || die "No mozilla dir here."
find mozilla 2>/dev/null | egrep -f $exfile | xargs rm -fr
rm -f $exfile
status "making phoenix-$REV.tar.bz2 ..."
tar -cjpf phoenix-$REV.tar.bz2 mozilla
status "making firebird-$REV.tar.bz2 ..."
tar -cjpf firebird-$REV.tar.bz2 mozilla
status "done."
#EOF

View file

@ -20,10 +20,6 @@ export XP_UNIX=1
mk_add_options XP_UNIX=1
export PERL=/usr/local/bin/perl
mk_add_options PERL=$PERL
export GTK_CONFIG=@X11BASE@/bin/gtk12-config
mk_add_options GTK_CONFIG=$GTK_CONFIG
export GLIB_CONFIG=@LOCALBASE@/bin/glib12-config
mk_add_options GLIB_CONFIG=$GLIB_CONFIG
# Configure options for installation
ac_add_options --prefix=@PREFIX@
######################################################################
@ -46,6 +42,8 @@ ac_add_options --disable-jsd
ac_add_options --disable-ldap
ac_add_options --disable-pedantic
ac_add_options --disable-xinerama
ac_add_options --enable-extensions=default,-inspector,-irc,-venkman,-content-packs,-help
ac_add_options --enable-plaintext-editor-only
######################################################################
# conditional from port Makefile
if test -n "$WITH_DEBUG"; then
@ -63,4 +61,9 @@ if test -z "$WITHOUT_XFT"; then
else
ac_add_options --disable-xft
fi # test -z "$WITHOUT_XFT"
if test -n "$WITH_GTK2"; then
ac_add_options --enable-default-toolkit=gtk2
else
ac_add_options --enable-default-toolkit=gtk
fi # test -n "$WITH_GTK2"
######################################################################

View file

@ -0,0 +1,11 @@
--- extensions/transformiix/source/base/Double.cpp.orig Wed May 21 04:42:05 2003
+++ extensions/transformiix/source/base/Double.cpp Wed May 21 04:42:24 2003
@@ -51,7 +51,7 @@
//A trick to handle IEEE floating point exceptions on FreeBSD - E.D.
#ifdef __FreeBSD__
#include <ieeefp.h>
-#ifdef __alpha__
+#if defined(__alpha__) || defined(__sparc64__)
fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
#else
fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP|FP_X_DNML;

View file

@ -0,0 +1,492 @@
--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Mon Jan 27 22:52:51 2003
+++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Tue May 27 01:41:12 2003
@@ -100,9 +100,15 @@
ASFILES := xptcinvoke_asm_osf1_alpha.s xptcstubs_asm_osf1_alpha.s
endif
#
+# FreeBSD/Alpha
+#
+ifeq ($(OS_ARCH)$(OS_TEST),FreeBSDalpha)
+CPPSRCS := xptcinvoke_freebsd_alpha.cpp xptcstubs_freebsd_alpha.cpp
+endif
+#
# Linux/Alpha
#
-ifneq (,$(filter Linuxalpha FreeBSDalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
+ifneq (,$(filter Linuxalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
CPPSRCS := xptcinvoke_linux_alpha.cpp xptcstubs_linux_alpha.cpp
endif
#
--- config/rules.mk.orig Mon May 5 21:04:55 2003
+++ config/rules.mk Tue May 27 01:33:11 2003
@@ -444,7 +444,11 @@
ifeq ($(OS_ARCH),FreeBSD)
ifdef IS_COMPONENT
+ifneq (,$(filter alpha,$(OS_TEST)))
+EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic -lc
+else
EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic
+endif
endif
endif
--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp.orig Tue May 27 01:37:25 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp Tue May 27 01:37:00 2003
@@ -0,0 +1,184 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * 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 the Initial Developer are Copyright (C) 1998
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the NPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the NPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/* Platform specific code to invoke XPCOM methods on native objects */
+
+/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
+
+#include "xptcprivate.h"
+
+/* Prototype specifies unmangled function name and disables unused warning */
+static void
+invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
+__asm__("invoke_copy_to_stack") __attribute__((unused));
+
+static void
+invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
+{
+ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
+
+ for(PRUint32 i = 0; i < paramCount; i++, d++, s++)
+ {
+ if(s->IsPtrData())
+ {
+ *d = (PRUint64)s->ptr;
+ continue;
+ }
+ switch(s->type)
+ {
+ case nsXPTType::T_I8 : *d = (PRUint64)s->val.i8; break;
+ case nsXPTType::T_I16 : *d = (PRUint64)s->val.i16; break;
+ case nsXPTType::T_I32 : *d = (PRUint64)s->val.i32; break;
+ case nsXPTType::T_I64 : *d = (PRUint64)s->val.i64; break;
+ case nsXPTType::T_U8 : *d = (PRUint64)s->val.u8; break;
+ case nsXPTType::T_U16 : *d = (PRUint64)s->val.u16; break;
+ case nsXPTType::T_U32 : *d = (PRUint64)s->val.u32; break;
+ case nsXPTType::T_U64 : *d = (PRUint64)s->val.u64; break;
+ case nsXPTType::T_FLOAT :
+ if(i < NUM_ARG_REGS)
+ {
+ // convert floats to doubles if they are to be passed
+ // via registers so we can just deal with doubles later
+ union { PRUint64 u64; double d; } t;
+ t.d = (double)s->val.f;
+ *d = t.u64;
+ }
+ else
+ // otherwise copy to stack normally
+ *d = (PRUint64)s->val.u32;
+ break;
+ case nsXPTType::T_DOUBLE : *d = (PRUint64)s->val.u64; break;
+ case nsXPTType::T_BOOL : *d = (PRUint64)s->val.b; break;
+ case nsXPTType::T_CHAR : *d = (PRUint64)s->val.c; break;
+ case nsXPTType::T_WCHAR : *d = (PRUint64)s->val.wc; break;
+ default:
+ // all the others are plain pointer types
+ *d = (PRUint64)s->val.p;
+ break;
+ }
+ }
+}
+
+/*
+ * XPTC_PUBLIC_API(nsresult)
+ * XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ * PRUint32 paramCount, nsXPTCVariant* params, void* vt)
+ */
+__asm__(
+ "#### XPTC_InvokeByIndex ####\n"
+".text\n\t"
+ ".align 5\n\t"
+ ".globl XPTC_InvokeByIndex\n\t"
+ ".ent XPTC_InvokeByIndex\n"
+"XPTC_InvokeByIndex:\n\t"
+ ".frame $15,32,$26,0\n\t"
+ ".mask 0x4008000,-32\n\t"
+ "ldgp $29,0($27)\n"
+"$XPTC_InvokeByIndex..ng:\n\t"
+ "subq $30,32,$30\n\t"
+ "stq $26,0($30)\n\t"
+ "stq $15,8($30)\n\t"
+ "bis $30,$30,$15\n\t"
+ ".prologue 1\n\t"
+
+ /*
+ * Allocate enough stack space to hold the greater of 6 or "paramCount"+1
+ * parameters. (+1 for "this" pointer) Room for at least 6 parameters
+ * is required for storage of those passed via registers.
+ */
+
+ "bis $31,5,$2\n\t" /* count = MAX(5, "paramCount") */
+ "cmplt $2,$18,$1\n\t"
+ "cmovne $1,$18,$2\n\t"
+ "s8addq $2,16,$1\n\t" /* room for count+1 params (8 bytes each) */
+ "bic $1,15,$1\n\t" /* stack space is rounded up to 0 % 16 */
+ "subq $30,$1,$30\n\t"
+
+ "stq $16,0($30)\n\t" /* save "that" (as "this" pointer) */
+ "stq $17,16($15)\n\t" /* save "methodIndex" */
+
+ "addq $30,8,$16\n\t" /* pass stack pointer */
+ "bis $18,$18,$17\n\t" /* pass "paramCount" */
+ "bis $19,$19,$18\n\t" /* pass "params" */
+ "bsr $26,$invoke_copy_to_stack..ng\n\t" /* call invoke_copy_to_stack */
+
+ /*
+ * Copy the first 6 parameters to registers and remove from stack frame.
+ * Both the integer and floating point registers are set for each parameter
+ * except the first which is the "this" pointer. (integer only)
+ * The floating point registers are all set as doubles since the
+ * invoke_copy_to_stack function should have converted the floats.
+ */
+ "ldq $16,0($30)\n\t" /* integer registers */
+ "ldq $17,8($30)\n\t"
+ "ldq $18,16($30)\n\t"
+ "ldq $19,24($30)\n\t"
+ "ldq $20,32($30)\n\t"
+ "ldq $21,40($30)\n\t"
+ "ldt $f17,8($30)\n\t" /* floating point registers */
+ "ldt $f18,16($30)\n\t"
+ "ldt $f19,24($30)\n\t"
+ "ldt $f20,32($30)\n\t"
+ "ldt $f21,40($30)\n\t"
+
+ "addq $30,48,$30\n\t" /* remove params from stack */
+
+ /*
+ * Call the virtual function with the constructed stack frame.
+ */
+ "bis $16,$16,$1\n\t" /* load "this" */
+ "ldq $2,16($15)\n\t" /* load "methodIndex" */
+ "ldq $1,0($1)\n\t" /* load vtable */
+#if 0
+ "s8addq $2,16,$2\n\t" /* vtable index = "methodIndex" * 8 + 16 */
+#else
+ "mulq $2, 8, $2\n\t"
+ "addq $2, 0, $2\n\t" /* vtable index = "methodIndex" * 16 + 24 */
+#endif
+ "addq $1,$2,$1\n\t"
+ "ldq $27,0($1)\n\t" /* load address of function */
+ "jsr $26,($27),0\n\t" /* call virtual function */
+ "ldgp $29,0($26)\n\t"
+
+ "bis $15,$15,$30\n\t"
+ "ldq $26,0($30)\n\t"
+ "ldq $15,8($30)\n\t"
+ "addq $30,32,$30\n\t"
+ "ret $31,($26),1\n\t"
+ ".end XPTC_InvokeByIndex"
+ );
+
--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp.orig Tue May 27 01:37:30 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp Tue May 27 01:37:04 2003
@@ -0,0 +1,269 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * 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 the Initial Developer are Copyright (C) 1999
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the NPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the NPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/* Implement shared vtbl methods. */
+
+/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
+
+#include <sys/types.h>
+#include <machine/cpu.h>
+#include "xptcprivate.h"
+
+/* Prototype specifies unmangled function name and disables unused warning */
+static nsresult
+PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
+__asm__("PrepareAndDispatch") __attribute__((unused));
+
+static nsresult
+PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
+{
+ const PRUint8 PARAM_BUFFER_COUNT = 16;
+ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
+
+ 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");
+
+ // args[0] to args[NUM_ARG_REGS] hold floating point register values
+ PRUint64* ap = args + NUM_ARG_REGS;
+ 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 = (PRInt8) *ap; break;
+ case nsXPTType::T_I16 : dp->val.i16 = (PRInt16) *ap; break;
+ case nsXPTType::T_I32 : dp->val.i32 = (PRInt32) *ap; break;
+ case nsXPTType::T_I64 : dp->val.i64 = (PRInt64) *ap; break;
+ case nsXPTType::T_U8 : dp->val.u8 = (PRUint8) *ap; break;
+ case nsXPTType::T_U16 : dp->val.u16 = (PRUint16) *ap; break;
+ case nsXPTType::T_U32 : dp->val.u32 = (PRUint32) *ap; break;
+ case nsXPTType::T_U64 : dp->val.u64 = (PRUint64) *ap; break;
+ case nsXPTType::T_FLOAT :
+ if(i < NUM_ARG_REGS)
+ {
+ // floats passed via registers are stored as doubles
+ // in the first NUM_ARG_REGS entries in args
+ dp->val.u64 = (PRUint64) args[i];
+ dp->val.f = (float) dp->val.d; // convert double to float
+ }
+ else
+ dp->val.u32 = (PRUint32) *ap;
+ break;
+ case nsXPTType::T_DOUBLE :
+ // doubles passed via registers are also stored
+ // in the first NUM_ARG_REGS entries in args
+ dp->val.u64 = (i < NUM_ARG_REGS) ? args[i] : *ap;
+ break;
+ case nsXPTType::T_BOOL : dp->val.b = (PRBool) *ap; break;
+ case nsXPTType::T_CHAR : dp->val.c = (char) *ap; break;
+ case nsXPTType::T_WCHAR : dp->val.wc = (PRUnichar) *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;
+}
+
+/*
+ * SharedStub()
+ * Collects arguments and calls PrepareAndDispatch. The "methodIndex" is
+ * passed to this function via $1 to preserve the argument registers.
+ */
+__asm__(
+ "#### SharedStub ####\n"
+".text\n\t"
+ ".align 5\n\t"
+ ".ent SharedStub\n"
+"SharedStub:\n\t"
+ ".frame $30,96,$26,0\n\t"
+ ".mask 0x4000000,-96\n\t"
+ "ldgp $29,0($27)\n"
+"$SharedStub..ng:\n\t"
+ "subq $30,96,$30\n\t"
+ "stq $26,0($30)\n\t"
+ ".prologue 1\n\t"
+
+ /*
+ * Store arguments passed via registers to the stack.
+ * Floating point registers are stored as doubles and converted
+ * to floats in PrepareAndDispatch if necessary.
+ */
+ "stt $f17,16($30)\n\t" /* floating point registers */
+ "stt $f18,24($30)\n\t"
+ "stt $f19,32($30)\n\t"
+ "stt $f20,40($30)\n\t"
+ "stt $f21,48($30)\n\t"
+ "stq $17,56($30)\n\t" /* integer registers */
+ "stq $18,64($30)\n\t"
+ "stq $19,72($30)\n\t"
+ "stq $20,80($30)\n\t"
+ "stq $21,88($30)\n\t"
+
+ /*
+ * Call PrepareAndDispatch function.
+ */
+ "bis $1,$1,$17\n\t" /* pass "methodIndex" */
+ "addq $30,16,$18\n\t" /* pass "args" */
+ "bsr $26,$PrepareAndDispatch..ng\n\t"
+
+ "ldq $26,0($30)\n\t"
+ "addq $30,96,$30\n\t"
+ "ret $31,($26),1\n\t"
+ ".end SharedStub"
+ );
+
+#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
+/*
+ * nsresult nsXPTCStubBase::Stub##n()
+ * Sets register $1 to "methodIndex" and jumps to SharedStub.
+ */
+#define STUB_ENTRY(n) \
+__asm__( \
+ "#### Stub"#n" ####\n" \
+".text\n\t" \
+ ".align 5\n\t" \
+ ".globl _ZN14nsXPTCStubBase5Stub"#n"Ev\n\t" \
+ ".ent _ZN14nsXPTCStubBase5Stub"#n"Ev\n" \
+"_ZN14nsXPTCStubBase5Stub"#n"Ev:\n\t" \
+ ".frame $30,0,$26,0\n\t" \
+ "ldgp $29,0($27)\n" \
+"$_ZN14nsXPTCStubBase5Stub"#n"Ev..ng:\n\t" \
+ ".prologue 1\n\t" \
+ "lda $1,"#n"\n\t" \
+ "br $31,$SharedStub..ng\n\t" \
+ ".end _ZN14nsXPTCStubBase5Stub"#n"Ev" \
+ ); \
+__asm__( \
+ "#### Stub"#n" ####\n" \
+".text\n\t" \
+ ".align 5\n\t" \
+ ".globl _ZN14nsXPTCStubBase6Stub"#n"Ev\n\t" \
+ ".ent _ZN14nsXPTCStubBase6Stub"#n"Ev\n" \
+"_ZN14nsXPTCStubBase6Stub"#n"Ev:\n\t" \
+ ".frame $30,0,$26,0\n\t" \
+ "ldgp $29,0($27)\n" \
+"$_ZN14nsXPTCStubBase6Stub"#n"Ev..ng:\n\t" \
+ ".prologue 1\n\t" \
+ "lda $1,"#n"\n\t" \
+ "br $31,$SharedStub..ng\n\t" \
+ ".end _ZN14nsXPTCStubBase6Stub"#n"Ev" \
+ ); \
+__asm__( \
+ "#### Stub"#n" ####\n" \
+".text\n\t" \
+ ".align 5\n\t" \
+ ".globl _ZN14nsXPTCStubBase7Stub"#n"Ev\n\t" \
+ ".ent _ZN14nsXPTCStubBase7Stub"#n"Ev\n" \
+"_ZN14nsXPTCStubBase7Stub"#n"Ev:\n\t" \
+ ".frame $30,0,$26,0\n\t" \
+ "ldgp $29,0($27)\n" \
+"$_ZN14nsXPTCStubBase7Stub"#n"Ev..ng:\n\t" \
+ ".prologue 1\n\t" \
+ "lda $1,"#n"\n\t" \
+ "br $31,$SharedStub..ng\n\t" \
+ ".end _ZN14nsXPTCStubBase7Stub"#n"Ev" \
+ );
+#else
+/*
+ * nsresult nsXPTCStubBase::Stub##n()
+ * Sets register $1 to "methodIndex" and jumps to SharedStub.
+ */
+#define STUB_ENTRY(n) \
+nsresult nsXPTCStubBase::Stub##n() \
+{ \
+ nsresult result; \
+__asm__ __volatile__( \
+ "ldah $29,0($27)\n\t" \
+ "lda $29,0($29)\n\t" \
+ "lda $1, "#n"\n\t" \
+ "br $31, $SharedStub..ng\n\t" \
+ "mov $0, %0\n\t" \
+ : "=r" (result) \
+ ); \
+ return result; \
+}
+#endif
+
+#define SENTINEL_ENTRY(n) \
+nsresult nsXPTCStubBase::Sentinel##n() \
+{ \
+ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
+ return NS_ERROR_NOT_IMPLEMENTED; \
+}
+
+#include "xptcstubsdef.inc"
+

View file

@ -0,0 +1,30 @@
--- build/unix/run-mozilla.sh.orig Fri Apr 18 23:12:28 2003
+++ build/unix/run-mozilla.sh Sat May 31 19:03:29 2003
@@ -355,7 +355,7 @@
fi
##
## Set LD_LIBRARY_PATH
-LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
+LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:%%PREFIX%%/lib/browser_plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
if [ -n "$LD_LIBRARYN32_PATH" ]
then
LD_LIBRARYN32_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN32_PATH+":$LD_LIBRARYN32_PATH"}
@@ -402,7 +402,7 @@
fi
fi
# Font path for Xft
-FONTCONFIG_PATH="/etc/fonts:${MOZILLA_FIVE_HOME}/res/Xft"
+FONTCONFIG_PATH="%%PREFIX%%/etc/fonts:${MOZILLA_FIVE_HOME}/res/Xft"
export FONTCONFIG_PATH
if [ "$moz_debug" -eq 1 ]
@@ -445,6 +445,9 @@
#
export MOZILLA_FIVE_HOME LD_LIBRARY_PATH
export SHLIB_PATH LIBPATH LIBRARY_PATH ADDON_PATH DYLD_LIBRARY_PATH
+
+MOZ_PLUGIN_PATH=%%PREFIX%%/lib/browser_plugins
+export MOZ_PLUGIN_PATH
if [ $moz_debug -eq 1 ]
then

View file

@ -0,0 +1,57 @@
--- gfx/src/gtk/nsFontMetricsXft.cpp.orig Mon May 12 06:03:28 2003
+++ gfx/src/gtk/nsFontMetricsXft.cpp Sat May 31 11:32:14 2003
@@ -90,6 +90,7 @@
FcPattern *mPattern;
FcPattern *mFontName;
FcCharSet *mCharset;
+ int mNotXft;
};
struct MozXftLangGroup {
@@ -772,7 +773,7 @@
// font in our loaded list that supports the character
for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
- if (FcCharSetHasChar(font->mCharset, aChar))
+ if (FcCharSetHasChar(font->mCharset, aChar) && font->GetXftFont())
return font;
}
@@ -1194,7 +1195,7 @@
for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
nsFontXft *font;
font = (nsFontXft *)mLoadedFonts.ElementAt(j);
- if (FcCharSetHasChar(font->mCharset, c)) {
+ if (FcCharSetHasChar(font->mCharset, c) && font->GetXftFont()) {
foundFont = font;
break;
}
@@ -1503,6 +1504,7 @@
FcPatternReference(mFontName);
mXftFont = nsnull;
+ mNotXft = 0;
// set up our charset
mCharset = nsnull;
@@ -1529,7 +1531,7 @@
XftFont *
nsFontXft::GetXftFont(void)
{
- if (!mXftFont) {
+ if (!mXftFont && !mNotXft) {
FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
if (!pat)
return nsnull;
@@ -1548,8 +1550,10 @@
FcPatternDel(pat, FC_SPACING);
mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
- if (!mXftFont)
+ if (!mXftFont) {
FcPatternDestroy(pat);
+ mNotXft = 1;
+ }
}
return mXftFont;

View file

@ -0,0 +1,29 @@
--- js/src/jsfun.c.orig Fri May 30 20:55:38 2003
+++ js/src/jsfun.c Fri May 30 20:54:24 2003
@@ -1081,7 +1081,7 @@
JSString *atomstr;
char *propname;
JSScopeProperty *sprop;
- jsid userid;
+ uint32 userid;
JSAtom *atom;
uintN i, n, dupflag;
uint32 type;
@@ -1157,7 +1157,7 @@
userid = INT_TO_JSVAL(sprop->shortid);
propname = ATOM_BYTES((JSAtom *)sprop->id);
if (!JS_XDRUint32(xdr, &type) ||
- !JS_XDRUint32(xdr, (uint32 *)&userid) ||
+ !JS_XDRUint32(xdr, &userid) ||
!JS_XDRCString(xdr, &propname)) {
if (mark)
JS_ARENA_RELEASE(&cx->tempPool, mark);
@@ -1173,7 +1173,7 @@
uintN attrs = JSPROP_ENUMERATE | JSPROP_PERMANENT;
if (!JS_XDRUint32(xdr, &type) ||
- !JS_XDRUint32(xdr, (uint32 *)&userid) ||
+ !JS_XDRUint32(xdr, &userid) ||
!JS_XDRCString(xdr, &propname)) {
return JS_FALSE;
}

View file

@ -0,0 +1,21 @@
--- nsprpub/pr/src/md/unix/unix.c.orig Sat May 31 18:06:04 2003
+++ nsprpub/pr/src/md/unix/unix.c Sat May 31 18:04:43 2003
@@ -65,7 +65,8 @@
* PRInt32* pointer to a _PRSockLen_t* pointer.
*/
#if defined(HAVE_SOCKLEN_T) \
- || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2)
+ || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2) \
+ || defined(FREEBSD)
#define _PRSockLen_t socklen_t
#elif defined(IRIX) || defined(HPUX) || defined(OSF1) || defined(SOLARIS) \
|| defined(AIX4_1) || defined(LINUX) || defined(SONY) \
@@ -73,7 +74,7 @@
|| defined(SUNOS4) || defined(NCR) || defined(DARWIN) \
|| defined(NEXTSTEP) || defined(QNX)
#define _PRSockLen_t int
-#elif (defined(AIX) && !defined(AIX4_1)) || defined(FREEBSD) \
+#elif (defined(AIX) && !defined(AIX4_1)) \
|| defined(NETBSD) || defined(OPENBSD) || defined(UNIXWARE) \
|| defined(DGUX) || defined(VMS) || defined(NTO)
#define _PRSockLen_t size_t

View file

@ -1,18 +1,11 @@
--- nsprpub/pr/src/misc/prtime.c.orig Sun Mar 31 12:17:46 2002
+++ nsprpub/pr/src/misc/prtime.c Tue Dec 17 21:30:30 2002
@@ -1666,12 +1666,13 @@
* values for these two fields.
--- nsprpub/pr/src/misc/prtime.c.orig Thu Feb 27 01:01:02 2003
+++ nsprpub/pr/src/misc/prtime.c Thu May 22 16:46:49 2003
@@ -1666,7 +1666,7 @@
*/
-#if defined(SUNOS4) || (__GLIBC__ >= 2) || defined(XP_BEOS)
+#if defined(__FreeBSD__)|| defined(SUNOS4) \
+ || (__GLIBC__ >= 2) || defined(XP_BEOS)
if (mktime(&a) == -1) {
PR_snprintf(buf, buflen, "can't get timezone");
return 0;
}
-#endif
+#endif /* check for __FreeBSD__, too <alane@freebsd.org> */
return strftime(buf, buflen, fmt, &a);
}
#if defined(SUNOS4) || (__GLIBC__ >= 2) || defined(XP_BEOS) \
- || defined(NETBSD)
+ || defined(NETBSD) || defined(__FreeBSD__)
a.tm_zone = NULL;
a.tm_gmtoff = tm->tm_params.tp_gmt_offset + tm->tm_params.tp_dst_offset;
#endif

View file

@ -0,0 +1,69 @@
diff -ru ./nsprpub/pr/include/md/_freebsd.cfg ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.cfg
--- ./nsprpub/pr/include/md/_freebsd.cfg Wed Jan 2 18:38:25 2002
+++ ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.cfg Tue May 20 21:27:31 2003
@@ -138,6 +138,53 @@
#define PR_ALIGN_OF_DOUBLE 8
#define PR_ALIGN_OF_POINTER 8
+#elif defined(__sparc__)
+
+#undef IS_LITTLE_ENDIAN
+#define IS_BIG_ENDIAN 1
+#define HAVE_LONG_LONG
+#define HAVE_ALIGNED_DOUBLES
+#define HAVE_ALIGNED_LONGLONGS
+#define IS_64
+
+#define PR_BYTES_PER_BYTE 1
+#define PR_BYTES_PER_SHORT 2
+#define PR_BYTES_PER_INT 4
+#define PR_BYTES_PER_INT64 8
+#define PR_BYTES_PER_LONG 8
+#define PR_BYTES_PER_FLOAT 4
+#define PR_BYTES_PER_DOUBLE 8
+#define PR_BYTES_PER_WORD 8
+#define PR_BYTES_PER_DWORD 8
+#define PR_BYTES_PER_WORD_LOG2 3
+#define PR_BYTES_PER_DWORD_LOG2 3
+
+#define PR_BITS_PER_BYTE 8
+#define PR_BITS_PER_SHORT 16
+#define PR_BITS_PER_INT 32
+#define PR_BITS_PER_INT64 64
+#define PR_BITS_PER_LONG 64
+#define PR_BITS_PER_FLOAT 32
+#define PR_BITS_PER_DOUBLE 64
+#define PR_BITS_PER_WORD 64
+
+#define PR_BITS_PER_BYTE_LOG2 3
+#define PR_BITS_PER_SHORT_LOG2 4
+#define PR_BITS_PER_INT_LOG2 5
+#define PR_BITS_PER_INT64_LOG2 6
+#define PR_BITS_PER_LONG_LOG2 6
+#define PR_BITS_PER_FLOAT_LOG2 5
+#define PR_BITS_PER_DOUBLE_LOG2 6
+#define PR_BITS_PER_WORD_LOG2 6
+
+#define PR_ALIGN_OF_SHORT 2
+#define PR_ALIGN_OF_INT 4
+#define PR_ALIGN_OF_LONG 8
+#define PR_ALIGN_OF_INT64 8
+#define PR_ALIGN_OF_FLOAT 4
+#define PR_ALIGN_OF_DOUBLE 8
+#define PR_ALIGN_OF_POINTER 8
+
#else
#error "Unknown CPU architecture"
diff -ru ./nsprpub/pr/include/md/_freebsd.h ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.h
--- ./nsprpub/pr/include/md/_freebsd.h Thu Jan 16 15:09:12 2003
+++ ../../work~/mozilla/nsprpub/pr/include/md/_freebsd.h Tue May 20 21:27:13 2003
@@ -48,6 +48,8 @@
#define _PR_SI_ARCHITECTURE "x86"
#elif defined(__alpha)
#define _PR_SI_ARCHITECTURE "alpha"
+#elif defined(__sparc__)
+#define _PR_SI_ARCHITECTURE "sparc"
#else
#error "Unknown CPU architecture"
#endif

View file

@ -0,0 +1,345 @@
--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Mon May 26 13:26:01 2003
+++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Mon May 26 13:30:04 2003
@@ -287,6 +287,15 @@
ASFILES := xptcinvoke_asm_sparc_netbsd.s xptcstubs_asm_sparc_netbsd.s
endif
#
+# FreeBSD/SPARC64
+#
+ifeq ($(OS_ARCH),FreeBSD)
+ifneq (,$(findstring sparc,$(OS_TEST)))
+CPPSRCS := xptcinvoke_sparc64_freebsd.cpp xptcstubs_sparc64_freebsd.cpp
+ASFILES := xptcinvoke_asm_sparc64_freebsd.s xptcstubs_asm_sparcv9_solaris.s
+endif
+endif
+#
# Solaris/SPARC
#
ifeq ($(OS_ARCH),SunOS)
--- /dev/null Mon May 26 13:22:00 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc64_freebsd.cpp Mon May 26 04:12:55 2003
@@ -0,0 +1,123 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * The contents of this file are subject to the Mozilla 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/MPL/
+ *
+ * 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) 2001 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ * Stuart Parmenter <pavlov@netscape.com>
+ */
+
+/* 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 = *((PRInt64*) ap); break;
+ case nsXPTType::T_I16 : dp->val.i16 = *((PRInt64*) ap); break;
+ case nsXPTType::T_I32 : dp->val.i32 = *((PRInt64*) 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 = *((PRUint64*) ap); break;
+ case nsXPTType::T_U16 : dp->val.u16 = *((PRUint64*)ap); break;
+ case nsXPTType::T_U32 : dp->val.u32 = *((PRUint64*)ap); break;
+ case nsXPTType::T_FLOAT : dp->val.f = ((float*) ap)[1]; break;
+ case nsXPTType::T_BOOL : dp->val.b = *((PRInt64*) ap); break;
+ case nsXPTType::T_CHAR : dp->val.c = *((PRUint64*) ap); break;
+ case nsXPTType::T_WCHAR : dp->val.wc = *((PRInt64*) 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__ */
--- /dev/null Mon May 26 13:22:00 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc64_freebsd.s Mon May 26 04:06:09 2003
@@ -0,0 +1,104 @@
+/* -*- Mode: asm; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * The contents of this file are subject to the Mozilla 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/MPL/
+ *
+ * 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) 2001 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ * Stuart Parmenter <pavlov@netscape.com>
+ * Chris Seawood <cls@seawood.org>
+ */
+
+/*
+ Platform specific code to invoke XPCOM methods on native objects
+ for sparcv9 Solaris.
+
+ See the SPARC Compliance Definition (SCD) Chapter 3
+ for more information about what is going on here, including
+ the use of BIAS (0x7ff).
+ The SCD is available from http://www.sparc.com/.
+*/
+
+ .global XPTC_InvokeByIndex
+ .type XPTC_InvokeByIndex, #function
+
+/*
+ XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ PRUint32 paramCount, nsXPTCVariant* params);
+
+*/
+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 %d2
+ 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
+! add %l0,16,%l0 ! there are 2 extra entries in the vTable (16bytes)
+ ldx [%i0],%l1 ! *that --> address of vtable
+ ldx [%l0 + %l1],%l0 ! that->vtable[index * 8 + 16] --> 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
--- /dev/null Mon May 26 14:00:00 2003
+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_sparc64_freebsd.cpp Mon May 26 14:00:49 2003
@@ -0,0 +1,91 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * The contents of this file are subject to the Mozilla 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/MPL/
+ *
+ * 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) 2001 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ * Stuart Parmenter <pavlov@netscape.com>
+ * Chris Seawood <cls@seawood.org>
+ */
+
+
+/* Platform specific code to invoke XPCOM methods on native objects */
+
+#include "xptcprivate.h"
+
+#if !defined(__sparc) && !defined(__sparc__)
+#error "This code is for Sparc only"
+#endif
+
+/* Prototype specifies unmangled function name */
+extern "C" PRUint64
+invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s);
+
+extern "C" PRUint64
+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;
+}

View file

@ -1,95 +0,0 @@
#!/usr/bin/env ruby
=begin -*-mode: ruby-*-
MoZiLLa.in
Copyright (c) 2002, Alan Eldridge
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the copyright owner nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$Id: MoZiLLa.in,v 1.18 2002/12/18 02:40:58 alane Exp $
2002-12-16 Alan Eldridge <alane@geeksrus.net>
=end
X11BIN = "/usr/X11R6/bin"
NAME = File::basename($0, ".rb")
APP_PATH = File::join(X11BIN, NAME)
if !File::executable?(APP_PATH)
raise "File '#{APP_PATH}' not found. Giving up."
elsif ($display = ENV["DISPLAY"]) == nil
raise "Environment variable DISPLAY not found. Giving up."
end
if ARGV.size > 0
if ARGV[0] == "--debug"
ARGV.shift
else
$stdin.reopen(File::open("/dev/null", "r"))
$stdout.reopen(File::open("/dev/null", "w"))
$stderr.reopen(File::open("/dev/null", "w"))
end
end
if ARGV.size < 1
$url = nil
else
$url = ARGV.pop
$url.sub!(/^ghelp:/, "file:")
end
IO::popen("xwininfo -display #{$display} -root -tree") {
|io|
if NAME != "phoenix"
$windows = io.grep(%r<"Mozilla"\s+"navigator:\s*browser">)
else
$windows = io.grep(%r<Phoenix.*"Mozilla"\s+"navigator:\s*browser">)
end
}
if $windows.size > 0
$id = $windows.map {
|s| s.strip.split.first
}.sort.first
$args = [ "-id", $id, "-raise", "-remote" ]
$args.push($url ? "\"openURL(#{$url},new-window)\"" :
"\"xfeDoCommand(openBrowser)\"")
else
$args = ARGV
$args.push("\"#{$url}\"") if $url
end
fork {
exec(([APP_PATH] + $args).join(" "))
}
exit!
#EOF

View file

@ -1,6 +1,6 @@
Phoenix is a fast, low-overhead browser from the Mozilla project. See the
phoenix project page for more details.
Mozilla Firebird is the next generation browser from the Mozilla project. See
the Mozilla Firebird project page for more details.
WWW: http://www.mozilla.org/projects/phoenix/
WWW: http://www.mozilla.org/projects/firebird/
-- AlanE <alane@freebsd.org>

View file

@ -1,32 +1,36 @@
======================================================================
As of version 0.4_7, this port appears to be stable *again*. It will work
with either of the port versions of perl, provided you do "use.perl port".
It will NOT work with the -STABLE base-system versions of Perl.
Mozilla Firebird will work with either of the port versions of perl,
provided you do "use.perl port". It will NOT work with the -STABLE
base-system versions of Perl.
If you use the lang/perl5.8 port, please remove the File::Spec package with
the command "pkg_deinstall -f p5-File-Spec". If you are updating to the 5.8
version of perl, please do this *first*.
Any bug reports should be addressed to the maintainers at:
phoenix@freebsd.org
gnome@FreeBSD.org
You may also Cc: freebsd-ports@freebsd.org. Please do not send
bug reports to any other addresses.
Please include the following information with any bug report:
* Output from 'uname -a'.
* Date/time stamp from www/phoenix/Makefile.
* Date/time stamp from www/mozilla-firebird/Makefile.
* Perl version used (/usr/bin/perl --version or
/usr/local/bin/perl --version for -current).
* Where/when did the problem occur: configuring, building, or
running phoenix?
running mozilla-firebird?
* How can you reproduce the problem?
Thank you for your help in testing and reporting bugs, and we hope you
enjoy using Phoenix.
The Maintainers (alane@ & trevor@)
enjoy using Firebird.
The Maintainers (gnome@)
Additional notes:
0.6:
Update to 0.6 version, rename from phoenix to Mozilla Firebird, all
internal names updated accordingly.
0.4_8:
Add patch to fix network ops on -CURRENT.
@ -61,12 +65,9 @@ Patch to hopefully fix crash when formatting time string at end of download.
Thanks to Greg Rumple and Joe Marcus Clarke for the fantastic work debugging
this one.
Added /usr/X11R6/bin/phoenix.rb. If you have ruby installed, you can run
this instead of 'phoenix' and it takes care of the 'profile in use' errors
Added /usr/X11R6/bin/firebird.rb. If you have ruby installed, you can run
this instead of 'firebird' and it takes care of the 'profile in use' errors
by automatically using an existing phoenix if one is running. I didn't put
a dependency because I don't want to require ruby + ruby-shim to run the
browser.
-- AlanE <phoenix@freebsd.org>
======================================================================

View file

@ -1,57 +1,56 @@
# ex:ts=8 -*-mode: makefile-*-
#
# New ports collection makefile for: phoenix
# Date created: 2002/10/21
# Whom: Alan Eldridge <alane@FreeBSD.org>
# New ports collection makefile for: mozilla-firebird
# Date created: May 31, 2003
# Whom: Joe Marcus Clarke <marcus@FreeBSD.org>
#
# $FreeBSD$
#
PORTNAME= phoenix
PORTVERSION= 0.5
PORTREVISION= 4
CATEGORIES= www
MASTER_SITES= ${MASTER_SITE_LOCAL} ${BSD_WEBDIR}
MASTER_SITE_SUBDIR= alane
PORTNAME= firebird
PORTVERSION= 0.6
CATEGORIES= www
MASTER_SITES= http://komodo.mozilla.org/pub/firebird/releases/${PORTVERSION}/
PKGNAMEPREFIX= mozilla-
DISTNAME= MozillaFirebird-${PORTVERSION}-source
MAINTAINER= gnome@freebsd.org
COMMENT= Phoenix is a fast, low-overhead browser from the Mozilla project
MAINTAINER= gnome@FreeBSD.org
COMMENT= Mozilla Firebird is the next generation browser from the mozilla.org project
LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg \
png.5:${PORTSDIR}/graphics/png \
mng.1:${PORTSDIR}/graphics/libmng \
freetype.9:${PORTSDIR}/print/freetype2 \
IDL.2:${PORTSDIR}/devel/ORBit \
iconv.3:${PORTSDIR}/converters/libiconv \
nspr4.1:${PORTSDIR}/devel/nspr
BUILD_DEPENDS= zip:${PORTSDIR}/archivers/zip \
freetype-config:${PORTSDIR}/print/freetype2
BSD_WEBDIR=http://people.freebsd.org/~${MASTER_SITE_SUBDIR}/
USE_X_PREFIX= yes
USE_X_PREFIX= yes
USE_BZIP2= yes
USE_GMAKE= yes
USE_PERL5= yes
USE_REINPLACE= yes
HAS_CONFIGURE= yes
USE_BZIP2= yes
USE_GMAKE= yes
USE_PERL5= yes
USE_REINPLACE= yes
HAS_CONFIGURE= yes
USE_GNOME= gtk12 orbit
.if defined(WITH_GTK2)
USE_GNOME= gtk20 libidl
PKGNAMESUFFIX= -gtk2
.else
USE_GNOME= gtk12 orbit
.endif
NO_MTREE= yes
WRKSRC= ${WRKDIR}/mozilla
LOCAL_SUBDIR= lib/${PORTNAME}
LOCAL_PREFIX= ${PREFIX}/${LOCAL_SUBDIR}
JREDIR= ${LOCALBASE}/jdk1.3.1/jre
MOZVER= 1.3a
PLUGINSDIR= ${LOCAL_PREFIX}/lib/mozilla-${MOZVER}/plugins/
PLUGINSDIR= ${PREFIX}/lib/browser_plugins
.include <bsd.port.pre.mk>
.if ${PERL_LEVEL} < 500601
.undef NO_IGNORE
BROKEN= Phoenix only supports the ports versions of Perl.
BROKEN= Mozilla Firebird only supports the ports versions of Perl.
BROKEN+=If you have installed a Perl port, and are getting this message,
BROKEN+=please make sure you have given the command \'use.perl port\'.
.endif # ${PERL_LEVEL} < 500601
@ -61,13 +60,12 @@ PLIST=${WRKDIR}/plist
.if defined(WITH_DEBUG)
WITH_LOGGING= yes
WITHOUT_OPTIMIZE= yes
CONFIGURE_ENV+= WITH_DEBUG=yes
.endif # defined(WITH_DEBUG)
.if !defined(WITHOUT_OPTIMIZE)
.if defined(WITH_OPTIMIZED_CFLAGS)
CFLAGS+= -O2
.endif # defined(WITH_OPTIMIZE)
.endif # defined(WITH_OPTIMIZED_CFLAGS)
.if defined(WITH_LOGGING)
CONFIGURE_ENV+= WITH_LOGGING=yes
@ -79,12 +77,16 @@ CONFIGURE_ENV+= WITHOUT_XFT=yes
LIB_DEPENDS+= Xft.2:${PORTSDIR}/x11-fonts/Xft
.endif # !defined(WITHOUT_XFT)
.if defined(WITH_GTK2)
CONFIGURE_ENV+= WITH_GTK2=yes
.endif # defined(WITH_GTK2)
CPPFLAGS+= -I${X11BASE}/include
CFLAGS+= ${PTHREAD_CFLAGS}
LDFLAGS+= -L${X11BASE}/lib
LIBS+= ${PTHREAD_LIBS}
EXTRA_SCRIPTS= phoenix.rb
EXTRA_SCRIPTS= firebird.rb
pre-extract::
@${ECHO_MSG}
@ -101,12 +103,17 @@ post-extract::
-e 's|@PREFIX@|${LOCAL_PREFIX}|' \
<${FILESDIR}/mozconfig.in >${WRKSRC}/.mozconfig
post-patch:
@${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' \
${WRKSRC}/build/unix/run-mozilla.sh
post-build:
${RM} -f ${PLIST}
${TOUCH} ${PLIST}
pre-install:
${RM} -fr ${LOCAL_PREFIX}
-${MKDIR} ${PLUGINSDIR}
install-extra:
.for i in ${EXTRA_SCRIPTS}
@ -114,18 +121,20 @@ install-extra:
.endfor # i in ${EXTRA_SCRIPTS}
link-bins:
${RM} -f ${PREFIX}/bin/phoenix
${LN} -s ${LOCAL_PREFIX}/bin/phoenix \
${PREFIX}/bin/phoenix
${RM} -f ${PREFIX}/bin/phoenix-config
${RM} -f ${PREFIX}/bin/firebird
${LN} -s ${LOCAL_PREFIX}/bin/MozillaFirebird \
${PREFIX}/bin/firebird
${RM} -f ${PREFIX}/bin/MozillaFirebird
${LN} -s ${LOCAL_PREFIX}/bin/MozillaFirebird \
${PREFIX}/bin/MozillaFirebird
${RM} -f ${PREFIX}/bin/firebird-config
${LN} -s ${LOCAL_PREFIX}/bin/mozilla-config \
${PREFIX}/bin/phoenix-config
${PREFIX}/bin/firebird-config
# not used because of undefined symbol errors
link-java:
-${RM} -f ${PLUGINSDIR}/libjavaplugin_oji.so
-${LN} -sf \
${JREDIR}/plugin/i386/ns600/libjavaplugin_oji.so \
${JREDIR}/plugin/${ARCH}/ns600/libjavaplugin_oji.so \
${PLUGINSDIR}/libjavaplugin_oji.so
cleanup-install:
@ -134,8 +143,9 @@ cleanup-install:
cons-plist:
-${RM} -f ${PLIST}
${ECHO_CMD} bin/phoenix >>${PLIST}
${ECHO_CMD} bin/phoenix-config >>${PLIST}
${ECHO_CMD} bin/firebird >>${PLIST}
${ECHO_CMD} bin/MozillaFirebird >>${PLIST}
${ECHO_CMD} bin/firebird-config >>${PLIST}
.for i in ${EXTRA_SCRIPTS}
${ECHO_CMD} bin/${i} >>${PLIST}
.endfor # i in ${EXTRA_SCRIPTS}
@ -158,8 +168,8 @@ cons-plist:
# Under normal circumstances, you should not put anything after
# the above line. However, this is the only way I can state the
# dependency without trashing the actual code of the generate-plist
# target. This is a limitation of the make(1) program itself.
# target. This is a limitation of the make(1) program itself.
# </alane>
generate-plist: install-extra link-bins cleanup-install cons-plist
generate-plist: install-extra link-bins link-java cleanup-install cons-plist
#EOF

View file

@ -1 +1 @@
MD5 (phoenix-0.5.tar.bz2) = fb99a5a866a99fbb15269699a1022b47
MD5 (MozillaFirebird-0.6-source.tar.bz2) = de52dd03f8628724f14f517cd6346755

Some files were not shown because too many files have changed in this diff Show more