diff options
Diffstat (limited to 'mail')
22 files changed, 1540 insertions, 0 deletions
diff --git a/mail/thunderbird/Makefile b/mail/thunderbird/Makefile new file mode 100644 index 000000000..c312a75a2 --- /dev/null +++ b/mail/thunderbird/Makefile @@ -0,0 +1,94 @@ +# New ports collection makefile for: mozilla-thunderbird +# Date created: 4 September 2003 +# Whom: Joe Marcus Clarke <marcus@FreeBSD.org> +# +# $FreeBSD$ +# $MCom$ +# + +PORTNAME= thunderbird +DISTVERSION= 2.0.0.9 +PORTREVISION= 1 +CATEGORIES= mail ipv6 +MASTER_SITES= ${MASTER_SITE_MOZILLA_EXTENDED} +MASTER_SITE_SUBDIR= thunderbird/releases/${DISTVERSION}/source +DISTNAME= ${PORTNAME}-${DISTVERSION}-source + +MAINTAINER= gnome@FreeBSD.org +COMMENT= Mozilla Thunderbird is standalone mail and news that stands above + +CONFLICTS= lightning-0.[0-9]* +WANT_GNOME= yes +ALL_TARGET= default +CONFIGURE_ENV= LOCALBASE=${LOCALBASE} +HAS_CONFIGURE= yes +USE_BZIP2= yes +USE_GMAKE= yes +USE_GCC= 3.4+ +WANT_PERL= yes + +MOZ_EXTENSIONS= wallet,spellcheck,xmlextras,webservices +MOZ_PROTOCOLS= http,file,jar,viewsource,res,data +MOZ_GRAPHICS= default,-xbm +MOZ_OPTIONS= --with-default-mozilla-five-home=${PREFIX}/lib/${MOZILLA} \ + --enable-single-profile --disable-profilesharing \ + --enable-application=mail --enable-official-branding +MOZ_MK_OPTIONS= MOZ_MOZ_THUNDERBIRD=1 +MOZ_EXPORT= MOZ_THUNDERBIRD=1 + +PORTNAME_ICON= ${PREFIX}/lib/${PORTNAME}/icons/default.xpm + +SYSTEM_PREFS= ${FAKEDIR}/lib/${PORTNAME}-${PORTVERSION}/defaults/pref/${PORTNAME}.js +MOZ_PIS_SCRIPTS=moz_pis_S50cleanhome + +OPTIONS= + +.include <bsd.port.pre.mk> + +GECKO_PTHREAD_LIBS!=${CC} -dumpspecs | ${GREP} pthread | ${SED} -e 's|^.*%{\!pg: %{pthread:|| ; s|}.*$$||' || ${TRUE} + +.if (${ARCH}=="sparc64" && ${OSVERSION} < 601101) +IGNORE= core dumps on ${ARCH}, kern.osreldate>=601101 needed +.endif + +post-extract:: + @${SED} -e 's|@PORTNAME_ICON@|${PORTNAME_ICON}|' \ + <${FILESDIR}/${PORTNAME}.desktop.in >${WRKDIR}/${PORTNAME}.desktop + +post-patch: + @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \ + ${WRKSRC}/security/manager/ssl/src/Makefile.in + @${REINPLACE_CMD} -e 's|--without-nss||' ${WRKSRC}/configure + @${REINPLACE_CMD} -e 's|%%PTHREAD_LIBS%%|${PTHREAD_LIBS:C/-pthread/${GECKO_PTHREAD_LIBS}/}|' \ + ${WRKSRC}/storage/build/Makefile.in + @${REINPLACE_CMD} -e 's|/usr/local/netscape|${LOCALBASE}|g' \ + -e 's|/usr/local/lib/netscape|${LOCALBASE}/lib|g' \ + ${WRKSRC}/xpcom/*/SpecialSystemDirectory.cpp + @${FIND} ${WRKSRC} -name all.js | ${XARGS} ${REINPLACE_CMD} -e \ + '/accessibility.typeaheadfind.enablesound/s/true/false/ ; \ + /dom.disable_window_open_feature.toolbar/s/false/true/' + @${REINPLACE_CMD} -e 's|<iconv.h>|\"${LOCALBASE}/include/iconv.h\"|g' \ + ${WRKSRC}/configure \ + ${WRKSRC}/intl/uconv/native/nsNativeUConvService.cpp \ + ${WRKSRC}/xpcom/io/nsNativeCharsetUtils.cpp + +port-pre-install: + ${REINPLACE_CMD} -e 's|/usr/local|${PREFIX}|' \ + ${FAKEDIR}/bin/thunderbird-config ${FAKEDIR}/bin/thunderbird + ${RM} -f ${FAKEDIR}/bin/*.bak + ${MKDIR} ${FAKEDIR}/lib/${PORTNAME}/defaults + ${CP} -RL ${WRKSRC}/dist/bin/isp \ + ${FAKEDIR}/lib/${PORTNAME}/defaults + +pre-install: + @${ECHO_CMD} 'share/applications/${PORTNAME}.desktop' >> ${PLIST} + @${ECHO_CMD} '@dirrmtry share/applications' >> ${PLIST} + +post-install: + ${MKDIR} ${PREFIX}/share/applications + ${INSTALL_DATA} ${WRKDIR}/${PORTNAME}.desktop ${PREFIX}/share/applications + ${INSTALL_DATA} ${WRKSRC}/other-licenses/branding/${PORTNAME}/default.xpm \ + ${PORTNAME_ICON} + +.include "${PORTSDIR}/www/mozilla/Makefile.common" +.include <bsd.port.post.mk> diff --git a/mail/thunderbird/distinfo b/mail/thunderbird/distinfo new file mode 100644 index 000000000..9ca2ab962 --- /dev/null +++ b/mail/thunderbird/distinfo @@ -0,0 +1,3 @@ +MD5 (thunderbird-2.0.0.9-source.tar.bz2) = a6dd74f87dafc7516e7970ecefee046b +SHA256 (thunderbird-2.0.0.9-source.tar.bz2) = bff4078379abd8616811e06f848aaaebd2cf39b7ae70c1434377c2aaaa6fec80 +SIZE (thunderbird-2.0.0.9-source.tar.bz2) = 37562994 diff --git a/mail/thunderbird/files/moz_pis_S50cleanhome b/mail/thunderbird/files/moz_pis_S50cleanhome new file mode 100644 index 000000000..348592392 --- /dev/null +++ b/mail/thunderbird/files/moz_pis_S50cleanhome @@ -0,0 +1,34 @@ +#!/bin/sh +# + +# S50cleanhome +# a script to polite ${HOME}/${MOZ_PIS_USER_DIR} + +# We run in our own subshell + +# First, verify protocol +[ "$1" != "start" ] && exit 1 +[ -z "${MOZ_PIS_API}" -o ${MOZ_PIS_API} -ne 2 ] && exit 1 +[ -z "${MOZ_PIS_MOZBINDIR}" -o ! -d "${MOZ_PIS_MOZBINDIR}" ] && exit 1 +[ -z "${HOME}" -o ! -d "${HOME}" ] && exit 1 +[ -z "${MOZ_PIS_USER_DIR}" -o ! -d "${HOME}/${MOZ_PIS_USER_DIR}" ] && exit 1 + +# Try to polite ${HOME}/${MOZ_PIS_USER_DIR} + +# This must be really needed? +# rm -f "${$HOME}/${MOZ_PIS_USER_DIR}/pluginreg.dat" + +# Try to polite profile dirs +if [ -f "${HOME}/${MOZ_PIS_USER_DIR}/profiles.ini" ]; then + sed -e '/Path=/! d' -e "s,Path=,${HOME}/${MOZ_PIS_USER_DIR}/," \ + "${HOME}/${MOZ_PIS_USER_DIR}/profiles.ini" \ + | while read dir + do + [ ! -d "${dir}" ] && continue + # at last, debian do this, we do for new builds + # rm -f "${dir}/XUL.mfasl" + # make reclaculate compreg.dat, xpti.dat for new builds + [ "${dir}/compreg.dat" -ot "${MOZ_PIS_MOZBINDIR}/components.ini" ] && + rm -f "${dir}/compatibility.ini" "${dir}/XUL.mfasl" + done +fi diff --git a/mail/thunderbird/files/patch-Double.cpp b/mail/thunderbird/files/patch-Double.cpp new file mode 100644 index 000000000..5cd13e4ff --- /dev/null +++ b/mail/thunderbird/files/patch-Double.cpp @@ -0,0 +1,59 @@ +--- extensions/transformiix/source/base/Double.cpp.orig Thu Jan 30 09:26:46 2003 ++++ extensions/transformiix/source/base/Double.cpp Sun Nov 16 01:46:42 2003 +@@ -51,10 +51,10 @@ + //A trick to handle IEEE floating point exceptions on FreeBSD - E.D. + #ifdef __FreeBSD__ + #include <ieeefp.h> +-#ifdef __alpha__ +-fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP; +-#else ++#if defined(__i386__) + fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP|FP_X_DNML; ++#else ++fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP; + #endif + fp_except_t oldmask = fpsetmask(~allmask); + #endif +@@ -75,22 +75,31 @@ + #define TX_DOUBLE_HI32_EXPMASK 0x7ff00000 + #define TX_DOUBLE_HI32_MANTMASK 0x000fffff + ++union ui32dun { ++ PRUint32 i[2]; ++ double d; ++}; ++ + //-- Initialize Double related constants + #ifdef IS_BIG_ENDIAN +-const PRUint32 nanMask[2] = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK, +- 0xffffffff}; +-const PRUint32 infMask[2] = {TX_DOUBLE_HI32_EXPMASK, 0}; +-const PRUint32 negInfMask[2] = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0}; ++const union ui32dun nanMask = ++ {{TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK, 0xffffffff}}; ++const union ui32dun infMask = ++ {{TX_DOUBLE_HI32_EXPMASK, 0}}; ++const union ui32dun negInfMask = ++ {{TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0}}; + #else +-const PRUint32 nanMask[2] = {0xffffffff, +- TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK}; +-const PRUint32 infMask[2] = {0, TX_DOUBLE_HI32_EXPMASK}; +-const PRUint32 negInfMask[2] = {0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT}; ++const union ui32dun nanMask = ++ {{0xffffffff, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK}}; ++const union ui32dun infMask = ++ {{0, TX_DOUBLE_HI32_EXPMASK}}; ++const union ui32dun negInfMask = ++ {{0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT}}; + #endif + +-const double Double::NaN = *((double*)nanMask); +-const double Double::POSITIVE_INFINITY = *((double*)infMask); +-const double Double::NEGATIVE_INFINITY = *((double*)negInfMask); ++const double Double::NaN = nanMask.d; ++const double Double::POSITIVE_INFINITY = infMask.d; ++const double Double::NEGATIVE_INFINITY = negInfMask.d; + + /* + * Determines whether the given double represents positive or negative diff --git a/mail/thunderbird/files/patch-build_unix_run-mozilla.sh b/mail/thunderbird/files/patch-build_unix_run-mozilla.sh new file mode 100644 index 000000000..7e038a39d --- /dev/null +++ b/mail/thunderbird/files/patch-build_unix_run-mozilla.sh @@ -0,0 +1,11 @@ +--- build/unix/run-mozilla.sh.orig Mon Dec 15 18:27:28 2003 ++++ build/unix/run-mozilla.sh Fri Feb 27 11:54:10 2004 +@@ -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:%%PREFIX%%/lib/browser_linux_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"} diff --git a/mail/thunderbird/files/patch-config-mkdepend-imakemdep.h b/mail/thunderbird/files/patch-config-mkdepend-imakemdep.h new file mode 100644 index 000000000..b688e6644 --- /dev/null +++ b/mail/thunderbird/files/patch-config-mkdepend-imakemdep.h @@ -0,0 +1,10 @@ +--- config/mkdepend/imakemdep.h Fri Sep 4 21:22:25 1998 ++++ config/mkdepend/imakemdep.h Thu Oct 16 22:43:25 2003 +@@ -278,4 +278,7 @@ + "-D__i386__", + # endif ++# if defined(__amd64__) || defined(__x86_64__) ++ "-D__amd64__ -D__x86_64__", ++# endif + # ifdef __GNUC__ + "-traditional", diff --git a/mail/thunderbird/files/patch-config-rules.mk b/mail/thunderbird/files/patch-config-rules.mk new file mode 100644 index 000000000..8ab35f5a8 --- /dev/null +++ b/mail/thunderbird/files/patch-config-rules.mk @@ -0,0 +1,13 @@ +--- config/rules.mk.orig Thu Sep 14 14:07:03 2006 ++++ config/rules.mk Wed Oct 18 11:00:09 2006 +@@ -442,9 +442,7 @@ + endif + + ifeq ($(OS_ARCH),FreeBSD) +-ifdef IS_COMPONENT +-EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic +-endif ++EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic -lc + endif + + ifeq ($(OS_ARCH),NetBSD) diff --git a/mail/thunderbird/files/patch-config_autoconf.mk.in b/mail/thunderbird/files/patch-config_autoconf.mk.in new file mode 100644 index 000000000..29fe7f8fb --- /dev/null +++ b/mail/thunderbird/files/patch-config_autoconf.mk.in @@ -0,0 +1,18 @@ +--- config/autoconf.mk.in.orig Thu Jul 14 00:50:06 2005 ++++ config/autoconf.mk.in Thu Jul 14 00:50:40 2005 +@@ -50,13 +50,13 @@ + prefix = @prefix@ + exec_prefix = @exec_prefix@ + bindir = @bindir@ +-includedir = @includedir@/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) ++includedir = @includedir@/%%MOZILLA%% + libdir = @libdir@ + datadir = @datadir@ + mandir = @mandir@ + idldir = @datadir@/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) + +-mozappdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) ++mozappdir = $(libdir)/%%MOZILLA%% + mredir = $(libdir)/mre/mre-$(MOZ_APP_VERSION) + mrelibdir = $(mredir)/lib + diff --git a/mail/thunderbird/files/patch-configure b/mail/thunderbird/files/patch-configure new file mode 100644 index 000000000..f38bd5ee8 --- /dev/null +++ b/mail/thunderbird/files/patch-configure @@ -0,0 +1,11 @@ +--- configure.orig 2007-07-30 02:45:45.000000000 -0400 ++++ configure 2007-07-30 02:46:26.000000000 -0400 +@@ -20025,7 +20025,7 @@ MOZILLA_1_8_BRANCH=1 + LIBS_PATH= + for lib_arg in $NSPR_LIBS $TK_LIBS; do + case $lib_arg in +- -L* ) LIBS_PATH="${LIBS_PATH:+$LIBS_PATH:}"`expr $lib_arg : "-L\(.*\)"` ;; ++ -L* ) LIBS_PATH="${LIBS_PATH:+$LIBS_PATH:}"`expr -- $lib_arg : "-L\(.*\)"` ;; + * ) ;; + esac + done diff --git a/mail/thunderbird/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp b/mail/thunderbird/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp new file mode 100644 index 000000000..41c462d74 --- /dev/null +++ b/mail/thunderbird/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp @@ -0,0 +1,46 @@ +--- extensions/typeaheadfind/src/nsTypeAheadFind.cpp.orig Wed Nov 19 01:20:47 2003 ++++ extensions/typeaheadfind/src/nsTypeAheadFind.cpp Tue Feb 10 02:52:26 2004 +@@ -323,11 +323,11 @@ + prefBranch->GetBoolPref("accessibility.typeaheadfind.startlinksonly", + &mStartLinksOnlyPref); + +- PRBool isSoundEnabled = PR_TRUE; ++ mIsSoundEnabled = PR_TRUE; + prefBranch->GetBoolPref("accessibility.typeaheadfind.enablesound", +- &isSoundEnabled); ++ &mIsSoundEnabled); + nsXPIDLCString soundStr; +- if (isSoundEnabled) { ++ if (mIsSoundEnabled && mIsSoundEnabled) { + prefBranch->GetCharPref("accessibility.typeaheadfind.soundURL", + getter_Copies(soundStr)); + } +@@ -758,7 +758,7 @@ + } + else { + // No find string to backspace in! +- if (mIsBackspaceProtectOn) { ++ if (mIsBackspaceProtectOn && mIsSoundEnabled) { + // This flag should be on only if the last key was a backspace. + // It keeps us from accidentally hitting backspace too many times and + // going back in history when we really just wanted to clear +@@ -1012,7 +1012,9 @@ + + // Error sound (don't fire when backspace is pressed, they're + // trying to correct the mistake!) +- PlayNotFoundSound(); ++ if (mIsSoundEnabled) { ++ PlayNotFoundSound(); ++ } + + // Remove bad character from buffer, so we can continue typing from + // last matched character +@@ -1059,7 +1061,7 @@ + void + nsTypeAheadFind::PlayNotFoundSound() + { +- if (mNotFoundSoundURL.IsEmpty()) // no sound ++ if (mNotFoundSoundURL.IsEmpty() || !mIsSoundEnabled) // no sound + return; + if (!mSoundInterface) { + mSoundInterface = do_CreateInstance("@mozilla.org/sound;1"); diff --git a/mail/thunderbird/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h b/mail/thunderbird/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h new file mode 100644 index 000000000..07ad43b43 --- /dev/null +++ b/mail/thunderbird/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h @@ -0,0 +1,12 @@ +--- extensions/typeaheadfind/src/nsTypeAheadFind.h.orig Fri May 23 22:00:33 2003 ++++ extensions/typeaheadfind/src/nsTypeAheadFind.h Mon Feb 9 22:21:43 2004 +@@ -194,6 +194,9 @@ + + nsCString mNotFoundSoundURL; + ++ // Move the sound enabled boolean out for all methods to access. ++ PRBool mIsSoundEnabled; ++ + // PRBool's are used instead of PRPackedBool's where the address of the + // boolean variable is getting passed into a method. For example: + // GetBoolPref("accessibility.typeaheadfind.linksonly", &mLinksOnlyPref); diff --git a/mail/thunderbird/files/patch-js_src_Makefile.in b/mail/thunderbird/files/patch-js_src_Makefile.in new file mode 100644 index 000000000..fb0bd7f19 --- /dev/null +++ b/mail/thunderbird/files/patch-js_src_Makefile.in @@ -0,0 +1,10 @@ +--- js/src/Makefile.in.orig Wed Oct 18 09:23:09 2006 ++++ js/src/Makefile.in Wed Oct 18 09:27:27 2006 +@@ -244,6 +244,7 @@ + endif + + LDFLAGS += $(pathsubst -l%,$(NSPR_STATIC_PATH)/%.a,$(NSPR_LIBS)) ++LDFLAGS += -lc + + # BeOS and HP-UX do not require the extra linking of "-lm" + ifeq (,$(filter BeOS HP-UX WINNT WINCE OpenVMS,$(OS_ARCH))) diff --git a/mail/thunderbird/files/patch-mail_app_mozilla.in b/mail/thunderbird/files/patch-mail_app_mozilla.in new file mode 100644 index 000000000..7fcb98bd2 --- /dev/null +++ b/mail/thunderbird/files/patch-mail_app_mozilla.in @@ -0,0 +1,124 @@ +--- mail/app/mozilla.in.orig Mon Apr 4 15:08:49 2005 ++++ mail/app/mozilla.in Fri Jun 10 06:18:49 2005 +@@ -49,51 +49,82 @@ + ## the mozilla-bin binary to work. + ## + ++# ++# MOZ_PIS, "Mozilla Plugable Init Scripts" ++# MOZ_PIS_ is the name space used ++# These variables and there meaning are specified in ++# mozilla/xpfe/bootstrap/init.d/README + moz_pis_startstop_scripts() + { +- MOZ_USER_DIR="%MOZ_USER_DIR%" +- # MOZ_PIS_ is the name space for "Mozilla Plugable Init Scripts" +- # These variables and there meaning are specified in +- # mozilla/xpfe/bootstrap/init.d/README +- MOZ_PIS_API=2 +- MOZ_PIS_MOZBINDIR="${dist_bin}" +- MOZ_PIS_SESSION_PID="$$" +- MOZ_PIS_USER_DIR="${MOZ_USER_DIR}" +- export MOZ_PIS_API MOZ_PIS_MOZBINDIR MOZ_PIS_SESSION_PID MOZ_PIS_USER_DIR +- +- case "${1}" in +- "start") +- for curr_pis in "${dist_bin}/init.d"/S* "${HOME}/${MOZ_USER_DIR}/init.d"/S* ; do +- if [ -x "${curr_pis}" ] ; then +- case "${curr_pis}" in +- *.sh) . "${curr_pis}" ;; +- *) "${curr_pis}" "start" ;; +- esac +- fi +- done +- ;; +- "stop") +- for curr_pis in "${HOME}/${MOZ_USER_DIR}/init.d"/K* "${dist_bin}/init.d"/K* ; do +- if [ -x "${curr_pis}" ] ; then +- case "${curr_pis}" in +- *.sh) . "${curr_pis}" ;; +- *) "${curr_pis}" "stop" ;; +- esac +- fi +- done +- ;; +- *) +- echo 1>&2 "$0: Internal error in moz_pis_startstop_scripts." +- exit 1 +- ;; +- esac ++ MOZ_PIS_API=2 ++ MOZ_PIS_MOZBINDIR="${dist_bin}" ++ MOZ_PIS_SESSION_PID="$$" ++ MOZ_PIS_USER_DIR="${MOZ_USER_DIR}" ++ export MOZ_PIS_API MOZ_PIS_MOZBINDIR MOZ_PIS_SESSION_PID MOZ_PIS_USER_DIR ++ ++ case "${1}" in ++ "start") ++ for curr_pis in "${MOZ_PIS_MOZBINDIR}/init.d"/S* \ ++ "${HOME}/${MOZ_PIS_USER_DIR}/init.d"/S*; do ++ if [ -x "${curr_pis}" ]; then ++ case "${curr_pis}" in ++ *.sh) ++ . "${curr_pis}" ++ ;; ++ *) ++ ${curr_pis} "start" ++ ;; ++ esac ++ fi ++ done ++ ;; ++ "stop") ++ for curr_pis in "${MOZ_PIS_MOZBINDIR}/init.d"/K* \ ++ "${HOME}/${MOZ_PIS_USER_DIR}/init.d"/K*; do ++ if [ -x "${curr_pis}" ]; then ++ case "${curr_pis}" in ++ *.sh) ++ . "${curr_pis}" ++ ;; ++ *) ++ ${curr_pis} "stop" ++ ;; ++ esac ++ fi ++ done ++ ;; ++ *) ++ echo "$0: Internal error in moz_pis_startstop_scripts." 1>&2 ++ exit 1 ++ ;; ++ esac + } + +-#uncomment for debugging ++# uncomment for debugging + #set -x + +-moz_libdir=%MOZAPPDIR% +-MRE_HOME=%MREDIR% ++# ++# variables ++# ++#location="new-tab" ++#MOZILLA_UILOCALE="en-US" ++#MOZILLA_UIREGION="US" ++ ++# ++# working definitions ++# ++MOZ_USER_DIR="%MOZ_USER_DIR%" ++moz_libdir="%MOZAPPDIR%" ++MRE_HOME="%MREDIR%" ++ ++debugging= # set the debugging level ++here=`pwd` ++ ++if [ ! -d "${MRE_HOME}" ]; then ++ # use moz_libdir as MRE_HOME ++ MRE_HOME="${moz_libdir}" ++fi ++export MRE_HOME + + # Use run-mozilla.sh in the current dir if it exists + # If not, then start resolving symlinks until we find run-mozilla.sh diff --git a/mail/thunderbird/files/patch-security-coreconf-FreeBSD.mk b/mail/thunderbird/files/patch-security-coreconf-FreeBSD.mk new file mode 100644 index 000000000..0f7a04a02 --- /dev/null +++ b/mail/thunderbird/files/patch-security-coreconf-FreeBSD.mk @@ -0,0 +1,24 @@ +--- security/coreconf/FreeBSD.mk.orig Mon Sep 25 18:26:23 2006 ++++ security/coreconf/FreeBSD.mk Mon Sep 25 18:27:03 2006 +@@ -45,8 +45,12 @@ + ifeq ($(OS_TEST),alpha) + CPU_ARCH = alpha + else ++ifeq ($(OS_TEST),amd64) ++CPU_ARCH = amd64 ++else + CPU_ARCH = x86 + endif ++endif + + OS_CFLAGS = $(DSO_CFLAGS) -ansi -Wall -DFREEBSD -DHAVE_STRERROR -DHAVE_BSD_FLOCK + +@@ -73,7 +77,7 @@ + DLL_SUFFIX = so.1.0 + endif + +-MKSHLIB = $(CC) $(DSO_LDOPTS) ++MKSHLIB = $(CC) -Wl,-Bsymbolic -lc $(DSO_LDOPTS) -o $@ + ifdef MAPFILE + MKSHLIB += -Wl,--version-script,$(MAPFILE) + endif diff --git a/mail/thunderbird/files/patch-storage_build_Makefile.in b/mail/thunderbird/files/patch-storage_build_Makefile.in new file mode 100644 index 000000000..18202a5a6 --- /dev/null +++ b/mail/thunderbird/files/patch-storage_build_Makefile.in @@ -0,0 +1,10 @@ +--- storage/build/Makefile.in.orig Tue Feb 21 11:18:56 2006 ++++ storage/build/Makefile.in Sun Nov 5 16:16:06 2006 +@@ -77,6 +77,7 @@ + $(EXTRA_DSO_LIBS) \ + $(MOZ_COMPONENT_LIBS) \ + $(MOZ_JS_LIBS) \ ++ %%PTHREAD_LIBS%% \ + $(NULL) + + include $(topsrcdir)/config/rules.mk diff --git a/mail/thunderbird/files/patch-sysnss b/mail/thunderbird/files/patch-sysnss new file mode 100644 index 000000000..bd61c2660 --- /dev/null +++ b/mail/thunderbird/files/patch-sysnss @@ -0,0 +1,175 @@ +--- Makefile.in Tue Sep 14 16:59:40 2004 ++++ Makefile.in Tue Aug 2 08:26:55 2005 +@@ -102,6 +102,4 @@ + # tier 1 - 3rd party individual libraries + # +-tier_1_dirs += dbm +- + ifndef MOZ_NATIVE_JPEG + tier_1_dirs += jpeg +--- security/manager/Makefile.in.orig Tue Mar 28 14:36:54 2006 ++++ security/manager/Makefile.in Tue Mar 28 14:40:29 2006 +@@ -54,22 +54,13 @@ + SSL3_LIB \ + SOFTOKEN3_LIB \ + SOFTOKEN3_CHK \ +- LOADABLE_ROOT_MODULE \ + HAVE_FREEBL_LIBS \ + HAVE_FREEBL_LIBS_32 \ + HAVE_FREEBL_LIBS_32INT64 \ + HAVE_FREEBL_LIBS_64 \ + $(NULL) +- +-LOADABLE_ROOT_MODULE = $(DLL_PREFIX)nssckbi$(DLL_SUFFIX) + endif + +-NSS3_LIB = $(DLL_PREFIX)nss3$(DLL_SUFFIX) +-SMIME3_LIB = $(DLL_PREFIX)smime3$(DLL_SUFFIX) +-SSL3_LIB = $(DLL_PREFIX)ssl3$(DLL_SUFFIX) +-SOFTOKEN3_LIB = $(DLL_PREFIX)softokn3$(DLL_SUFFIX) +-SOFTOKEN3_CHK = $(DLL_PREFIX)softokn3.chk +- + # Default + HAVE_FREEBL_LIBS = 1 + +@@ -217,11 +208,6 @@ + .nss.cleaned: .nss.checkout + ifndef MOZ_NATIVE_NSS + $(MAKE) -C $(topsrcdir)/security/coreconf $(DEFAULT_GMAKE_FLAGS) clean +- $(MAKE) -C $(topsrcdir)/security/nss/lib $(DEFAULT_GMAKE_FLAGS) clean +-ifndef SKIP_CHK +- $(MAKE) -C $(topsrcdir)/security/nss/cmd/lib $(DEFAULT_GMAKE_FLAGS) clean +- $(MAKE) -C $(topsrcdir)/security/nss/cmd/shlibsign $(DEFAULT_GMAKE_FLAGS) clean +-endif + touch $@ + endif + +@@ -248,47 +234,6 @@ + cd $(DIST)/lib; cp -f $(LIB_PREFIX)mozdbm_s.$(LIB_SUFFIX) $(LIB_PREFIX)dbm.$(LIB_SUFFIX); $(RANLIB) $(LIB_PREFIX)dbm.$(LIB_SUFFIX) + endif + ifndef MOZ_NATIVE_NSS +- $(MAKE) -C $(topsrcdir)/security/nss/lib $(DEFAULT_GMAKE_FLAGS) +-ifndef SKIP_CHK +- $(MAKE) -C $(topsrcdir)/security/nss/cmd/lib $(DEFAULT_GMAKE_FLAGS) +- $(MAKE) -C $(topsrcdir)/security/nss/cmd/shlibsign $(DEFAULT_GMAKE_FLAGS) +-endif +- $(INSTALL) -m 755 $(DIST)/lib/$(LOADABLE_ROOT_MODULE) $(DIST)/bin +-ifndef SKIP_CHK +- $(INSTALL) -m 644 $(DIST)/lib/$(SOFTOKEN3_CHK) $(DIST)/bin +-endif +- $(INSTALL) -m 755 $(DIST)/lib/$(SOFTOKEN3_LIB) $(DIST)/bin +- $(INSTALL) -m 755 $(DIST)/lib/$(NSS3_LIB) $(DIST)/bin +- $(INSTALL) -m 755 $(DIST)/lib/$(SSL3_LIB) $(DIST)/bin +- $(INSTALL) -m 755 $(DIST)/lib/$(SMIME3_LIB) $(DIST)/bin +-ifdef HAVE_FREEBL_LIBS +-ifndef SKIP_CHK +- $(INSTALL) -m 644 $(DIST)/lib/$(FREEBL_CHK) $(DIST)/bin +-endif +- $(INSTALL) -m 755 $(DIST)/lib/$(FREEBL_LIB) $(DIST)/bin +-endif +-ifdef HAVE_FREEBL_LIBS_32 +-ifndef SKIP_CHK +- $(INSTALL) -m 644 $(DIST)/lib/$(FREEBL_32INT_CHK) $(DIST)/bin +- $(INSTALL) -m 644 $(DIST)/lib/$(FREEBL_32FPU_CHK) $(DIST)/bin +-endif +- $(INSTALL) -m 755 $(DIST)/lib/$(FREEBL_32INT_LIB) $(DIST)/bin +- $(INSTALL) -m 755 $(DIST)/lib/$(FREEBL_32FPU_LIB) $(DIST)/bin +-endif +-ifdef HAVE_FREEBL_LIBS_32INT64 +-ifndef SKIP_CHK +- $(INSTALL) -m 644 $(DIST)/lib/$(FREEBL_32INT64_CHK) $(DIST)/bin +-endif +- $(INSTALL) -m 755 $(DIST)/lib/$(FREEBL_32INT64_LIB) $(DIST)/bin +-endif +-ifdef HAVE_FREEBL_LIBS_64 +-ifndef SKIP_CHK +- $(INSTALL) -m 644 $(DIST)/lib/$(FREEBL_64INT_CHK) $(DIST)/bin +- $(INSTALL) -m 644 $(DIST)/lib/$(FREEBL_64FPU_CHK) $(DIST)/bin +-endif +- $(INSTALL) -m 755 $(DIST)/lib/$(FREEBL_64INT_LIB) $(DIST)/bin +- $(INSTALL) -m 755 $(DIST)/lib/$(FREEBL_64FPU_LIB) $(DIST)/bin +-endif + endif + $(MAKE) -C boot $@ + $(MAKE) -C ssl $@ +@@ -299,42 +244,6 @@ + + install:: + ifndef MOZ_NATIVE_NSS +- $(SYSINSTALL) -m 755 $(DIST)/lib/$(LOADABLE_ROOT_MODULE) $(DESTDIR)$(mozappdir) +-ifndef SKIP_CHK +- $(SYSINSTALL) -m 644 $(DIST)/lib/$(SOFTOKEN3_CHK) $(DESTDIR)$(mozappdir) +-endif +- $(SYSINSTALL) -m 755 $(DIST)/lib/$(SOFTOKEN3_LIB) $(DESTDIR)$(mozappdir) +- $(SYSINSTALL) -m 755 $(DIST)/lib/$(NSS3_LIB) $(DESTDIR)$(mozappdir) +- $(SYSINSTALL) -m 755 $(DIST)/lib/$(SSL3_LIB) $(DESTDIR)$(mozappdir) +- $(SYSINSTALL) -m 755 $(DIST)/lib/$(SMIME3_LIB) $(DESTDIR)$(mozappdir) +-ifdef HAVE_FREEBL_LIBS +-ifndef SKIP_CHK +- $(SYSINSTALL) -m 644 $(DIST)/lib/$(FREEBL_CHK) $(DESTDIR)$(mozappdir) +-endif +- $(SYSINSTALL) -m 755 $(DIST)/lib/$(FREEBL_LIB) $(DESTDIR)$(mozappdir) +-endif +-ifdef HAVE_FREEBL_LIBS_32 +-ifndef SKIP_CHK +- $(SYSINSTALL) -m 644 $(DIST)/lib/$(FREEBL_32INT_CHK) $(DESTDIR)$(mozappdir) +- $(SYSINSTALL) -m 644 $(DIST)/lib/$(FREEBL_32FPU_CHK) $(DESTDIR)$(mozappdir) +-endif +- $(SYSINSTALL) -m 755 $(DIST)/lib/$(FREEBL_32INT_LIB) $(DESTDIR)$(mozappdir) +- $(SYSINSTALL) -m 755 $(DIST)/lib/$(FREEBL_32FPU_LIB) $(DESTDIR)$(mozappdir) +-endif +-ifdef HAVE_FREEBL_LIBS_32INT64 +-ifndef SKIP_CHK +- $(SYSINSTALL) -m 644 $(DIST)/lib/$(FREEBL_32INT64_CHK) $(DESTDIR)$(mozappdir) +-endif +- $(SYSINSTALL) -m 755 $(DIST)/lib/$(FREEBL_32INT64_LIB) $(DESTDIR)$(mozappdir) +-endif +-ifdef HAVE_FREEBL_LIBS_64 +-ifndef SKIP_CHK +- $(SYSINSTALL) -m 644 $(DIST)/lib/$(FREEBL_64INT_CHK) $(DESTDIR)$(mozappdir) +- $(SYSINSTALL) -m 644 $(DIST)/lib/$(FREEBL_64FPU_CHK) $(DESTDIR)$(mozappdir) +-endif +- $(SYSINSTALL) -m 755 $(DIST)/lib/$(FREEBL_64INT_LIB) $(DESTDIR)$(mozappdir) +- $(SYSINSTALL) -m 755 $(DIST)/lib/$(FREEBL_64FPU_LIB) $(DESTDIR)$(mozappdir) +-endif + endif + $(MAKE) -C boot $@ + $(MAKE) -C ssl $@ +@@ -351,12 +260,6 @@ + $(MAKE) -C pki $@ + endif + ifndef MOZ_NATIVE_NSS +- $(MAKE) -C $(topsrcdir)/security/coreconf $(DEFAULT_GMAKE_FLAGS) clean +- $(MAKE) -C $(topsrcdir)/security/nss/lib $(DEFAULT_GMAKE_FLAGS) clean +-ifndef SKIP_CHK +- $(MAKE) -C $(topsrcdir)/security/nss/cmd/lib $(DEFAULT_GMAKE_FLAGS) clean +- $(MAKE) -C $(topsrcdir)/security/nss/cmd/shlibsign $(DEFAULT_GMAKE_FLAGS) clean +-endif + endif + + echo-requires-recursive:: +--- security/manager/ssl/src/Makefile.in.orig Mon Aug 14 19:22:52 2006 ++++ security/manager/ssl/src/Makefile.in Wed Apr 18 20:16:36 2007 +@@ -124,19 +124,20 @@ + pipboot \ + $(NULL) + +-EXTRA_DEPS = $(NSS_DEP_LIBS) + + DEFINES += -DNSS_ENABLE_ECC + + # Use local includes because they are inserted before INCLUDES + # so that Mozilla's nss.h is used, not glibc's +-LOCAL_INCLUDES += $(NSS_CFLAGS) ++LOCAL_INCLUDES += -I%%LOCALBASE%%/include/nss/nss + + EXTRA_DSO_LDOPTS += \ + $(MOZ_UNICHARUTIL_LIBS) \ + $(MOZ_COMPONENT_LIBS) \ + $(MOZ_JS_LIBS) \ + $(NSS_LIBS) \ ++ -L%%LOCALBASE%%/lib/nss \ ++ $(LOCAL_INCLUDES) \ + $(NULL) + + include $(topsrcdir)/config/rules.mk diff --git a/mail/thunderbird/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp b/mail/thunderbird/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp new file mode 100644 index 000000000..7f8e55f53 --- /dev/null +++ b/mail/thunderbird/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp @@ -0,0 +1,29 @@ +--- uriloader/exthandler/unix/nsGNOMERegistry.cpp.orig Fri Dec 24 04:30:00 2004 ++++ uriloader/exthandler/unix/nsGNOMERegistry.cpp Fri Dec 24 04:34:05 2004 +@@ -143,7 +143,7 @@ + PR_END_MACRO + + // Attempt to open libgconf +- gconfLib = LoadVersionedLibrary("gconf-2", ".4"); ++ gconfLib = PR_LoadLibrary("libgconf-2.so"); + ENSURE_LIB(gconfLib); + + GET_LIB_FUNCTION(gconf, gconf_client_get_default); +@@ -151,7 +151,7 @@ + GET_LIB_FUNCTION(gconf, gconf_client_get_bool); + + // Attempt to open libgnome +- gnomeLib = LoadVersionedLibrary("gnome-2", ".0"); ++ gnomeLib = PR_LoadLibrary("libgnome-2.so"); + ENSURE_LIB(gnomeLib); + + GET_LIB_FUNCTION(gnome, gnome_url_show); +@@ -160,7 +160,7 @@ + GET_LIB_FUNCTION(gnome, gnome_program_get); + + // Attempt to open libgnomevfs +- vfsLib = LoadVersionedLibrary("gnomevfs-2", ".0"); ++ vfsLib = PR_LoadLibrary("libgnomevfs-2.so"); + ENSURE_LIB(vfsLib); + + GET_LIB_FUNCTION(vfs, gnome_vfs_mime_type_from_name); diff --git a/mail/thunderbird/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc b/mail/thunderbird/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc new file mode 100644 index 000000000..ac8cab896 --- /dev/null +++ b/mail/thunderbird/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc @@ -0,0 +1,11 @@ +--- xpcom/reflect/xptcall/public/xptcstubsdecl.inc.orig Tue Mar 16 03:07:25 2004 ++++ xpcom/reflect/xptcall/public/xptcstubsdecl.inc Mon May 3 13:05:12 2004 +@@ -8,7 +8,7 @@ + * 1 is AddRef + * 2 is Release + */ +-#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__)) ++#if !defined(__ia64) + NS_IMETHOD Stub3(); + NS_IMETHOD Stub4(); + NS_IMETHOD Stub5(); diff --git a/mail/thunderbird/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in b/mail/thunderbird/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in new file mode 100644 index 000000000..51edeb95a --- /dev/null +++ b/mail/thunderbird/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in @@ -0,0 +1,54 @@ +--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Thu Aug 14 21:00:23 2003 ++++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Sun Feb 1 15:06:40 2004 +@@ -49,6 +49,9 @@ + ifeq (86,$(findstring 86,$(OS_TEST))) + CPPSRCS := xptcinvoke_unixish_x86.cpp xptcstubs_unixish_x86.cpp + endif ++ifeq (amd64,$(OS_TEST)) ++CPPSRCS := xptcinvoke_x86_64_linux.cpp xptcstubs_x86_64_linux.cpp ++endif + endif + # + # New code for Linux, et. al., with gcc +@@ -60,7 +63,7 @@ + endif + endif + # IA64 Linux +-ifneq (,$(filter Linux,$(OS_ARCH))) ++ifneq (,$(filter Linux FreeBSD,$(OS_ARCH))) + ifneq (,$(findstring ia64,$(OS_TEST))) + CPPSRCS := xptcinvoke_ipf64.cpp xptcstubs_ipf64.cpp + ASFILES := xptcstubs_asm_ipf64.s xptcinvoke_asm_ipf64.s +@@ -106,9 +109,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 + # +@@ -294,6 +303,15 @@ + ifeq ($(OS_ARCH)$(OS_TEST),NetBSDsparc) + CPPSRCS := xptcinvoke_sparc_netbsd.cpp xptcstubs_sparc_netbsd.cpp + 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 diff --git a/mail/thunderbird/files/patch-xptcall-alpha b/mail/thunderbird/files/patch-xptcall-alpha new file mode 100644 index 000000000..29631a98e --- /dev/null +++ b/mail/thunderbird/files/patch-xptcall-alpha @@ -0,0 +1,459 @@ +--- 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" ++ diff --git a/mail/thunderbird/files/patch-xptcall-sparc64 b/mail/thunderbird/files/patch-xptcall-sparc64 new file mode 100644 index 000000000..9599a8a71 --- /dev/null +++ b/mail/thunderbird/files/patch-xptcall-sparc64 @@ -0,0 +1,327 @@ +--- /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; ++} diff --git a/mail/thunderbird/pkg-descr b/mail/thunderbird/pkg-descr new file mode 100644 index 000000000..9ef9a8246 --- /dev/null +++ b/mail/thunderbird/pkg-descr @@ -0,0 +1,6 @@ +Mozilla Thunderbird is a redesign of the Mozilla mail component with the goal +of becoming a cross-platform stand alone mail application using the XUL +user interface language. See the Mozilla Thunderbird project page for +more details. + +WWW: http://www.mozilla.com/thunderbird/ |