From d62ee7eaf2ba025c3f64b2d4e10dc7cec4637612 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Wed, 1 Sep 2010 19:09:11 +0100 Subject: packages: Separate out most of the remaining packages into recipes Signed-off-by: Richard Purdie --- .../mozilla-headless-services/confighack.patch | 13 + .../mozilla-headless-services_git.bb | 14 + ...ial-Gtk-clipboard-support-to-moz-headless.patch | 1478 ++++++++++++++++++++ .../mozilla-headless/autoconffix.patch | 66 + .../mozilla-headless/buildfixhack.patch | 14 + .../configurefix-1a622cb7c384.patch | 764 ++++++++++ .../mozilla-headless/configurefix.patch | 774 ++++++++++ .../mozilla-headless/i386/jsautocfg.h | 21 + .../mozilla-headless/i486/jsautocfg.h | 21 + .../mozilla-headless/i586/jsautocfg.h | 21 + .../mozilla-headless/i686/jsautocfg.h | 21 + .../mozilla-headless/mozilla-headless/mozconfig | 23 + .../mozilla-headless/mozilla-jemalloc.patch | 24 + .../removebadrpath-1a622cb7c384.patch | 26 + .../mozilla-headless/removebadrpath.patch | 44 + .../mozilla-headless/mozilla-headless_hg.bb | 99 ++ 16 files changed, 3423 insertions(+) create mode 100644 meta-moblin/packages/mozilla-headless/mozilla-headless-services/confighack.patch create mode 100644 meta-moblin/packages/mozilla-headless/mozilla-headless-services_git.bb create mode 100644 meta-moblin/packages/mozilla-headless/mozilla-headless/0001-Adds-initial-Gtk-clipboard-support-to-moz-headless.patch create mode 100644 meta-moblin/packages/mozilla-headless/mozilla-headless/autoconffix.patch create mode 100644 meta-moblin/packages/mozilla-headless/mozilla-headless/buildfixhack.patch create mode 100644 meta-moblin/packages/mozilla-headless/mozilla-headless/configurefix-1a622cb7c384.patch create mode 100644 meta-moblin/packages/mozilla-headless/mozilla-headless/configurefix.patch create mode 100644 meta-moblin/packages/mozilla-headless/mozilla-headless/i386/jsautocfg.h create mode 100644 meta-moblin/packages/mozilla-headless/mozilla-headless/i486/jsautocfg.h create mode 100644 meta-moblin/packages/mozilla-headless/mozilla-headless/i586/jsautocfg.h create mode 100644 meta-moblin/packages/mozilla-headless/mozilla-headless/i686/jsautocfg.h create mode 100644 meta-moblin/packages/mozilla-headless/mozilla-headless/mozconfig create mode 100644 meta-moblin/packages/mozilla-headless/mozilla-headless/mozilla-jemalloc.patch create mode 100644 meta-moblin/packages/mozilla-headless/mozilla-headless/removebadrpath-1a622cb7c384.patch create mode 100644 meta-moblin/packages/mozilla-headless/mozilla-headless/removebadrpath.patch create mode 100644 meta-moblin/packages/mozilla-headless/mozilla-headless_hg.bb (limited to 'meta-moblin/packages/mozilla-headless') diff --git a/meta-moblin/packages/mozilla-headless/mozilla-headless-services/confighack.patch b/meta-moblin/packages/mozilla-headless/mozilla-headless-services/confighack.patch new file mode 100644 index 000000000..dcfe11e0f --- /dev/null +++ b/meta-moblin/packages/mozilla-headless/mozilla-headless-services/confighack.patch @@ -0,0 +1,13 @@ +Index: places-glib/configure.ac +=================================================================== +--- places-glib.orig/configure.ac 2009-04-17 10:29:15.000000000 +0100 ++++ places-glib/configure.ac 2009-04-17 10:29:44.000000000 +0100 +@@ -99,6 +99,8 @@ + PKG_CHECK_MODULES(GLIB, [glib-2.0]) + PKG_CHECK_MODULES(DBUS, [dbus-glib-1]) + ++XUL_LIBS="$XUL_LIBS -lmozjs" ++ + MOZHOME=`${PKG_CONFIG} --variable=prefix mozilla-headless`"/lib/xulrunner-"`${PKG_CONFIG} --modversion mozilla-headless` + AC_SUBST([MOZHOME]) + diff --git a/meta-moblin/packages/mozilla-headless/mozilla-headless-services_git.bb b/meta-moblin/packages/mozilla-headless/mozilla-headless-services_git.bb new file mode 100644 index 000000000..14d64fa8c --- /dev/null +++ b/meta-moblin/packages/mozilla-headless/mozilla-headless-services_git.bb @@ -0,0 +1,14 @@ +SRC_URI = "git://git.moblin.org/mozilla-headless-services.git;protocol=git \ + file://confighack.patch;patch=1" +PV = "0.1+git${SRCPV}" +PR = "r1" + +DEPENDS = "glib-2.0 dbus mozilla-headless json-glib" + +EXTRA_OECONF = "--enable-gnome-proxy" + +S = "${WORKDIR}/git" + +FILES_${PN} += "${datadir}/dbus-1/services" + +inherit autotools diff --git a/meta-moblin/packages/mozilla-headless/mozilla-headless/0001-Adds-initial-Gtk-clipboard-support-to-moz-headless.patch b/meta-moblin/packages/mozilla-headless/mozilla-headless/0001-Adds-initial-Gtk-clipboard-support-to-moz-headless.patch new file mode 100644 index 000000000..db9e14799 --- /dev/null +++ b/meta-moblin/packages/mozilla-headless/mozilla-headless/0001-Adds-initial-Gtk-clipboard-support-to-moz-headless.patch @@ -0,0 +1,1478 @@ +From fb41f028badb4dfddfc47fb2a1a68c1aa90dcef5 Mon Sep 17 00:00:00 2001 +From: Robert Bragg +Date: Fri, 8 May 2009 13:57:22 +0100 +Subject: [PATCH] Adds initial Gtk clipboard support to moz-headless + +If build with MOZ_X11 enabled then this now builds the clipboard code taken +from the gtk2 backend. This doesn't provide any embedding API yet to expose +the clipboard. +--- + widget/src/headless/Makefile.in | 6 + + widget/src/headless/nsClipboard.cpp | 948 +++++++++++++++++++++++++++++++ + widget/src/headless/nsClipboard.h | 93 +++ + widget/src/headless/nsIImageToPixbuf.h | 62 ++ + widget/src/headless/nsImageToPixbuf.cpp | 196 +++++++ + widget/src/headless/nsImageToPixbuf.h | 71 +++ + widget/src/headless/nsWidgetFactory.cpp | 18 + + 7 files changed, 1394 insertions(+), 0 deletions(-) + create mode 100644 widget/src/headless/nsClipboard.cpp + create mode 100644 widget/src/headless/nsClipboard.h + create mode 100644 widget/src/headless/nsIImageToPixbuf.h + create mode 100644 widget/src/headless/nsImageToPixbuf.cpp + create mode 100644 widget/src/headless/nsImageToPixbuf.h + +Index: offscreen/widget/src/headless/Makefile.in +=================================================================== +--- offscreen.orig/widget/src/headless/Makefile.in 2009-05-16 18:23:25.000000000 +0100 ++++ offscreen/widget/src/headless/Makefile.in 2009-06-12 14:14:05.000000000 +0100 +@@ -95,6 +95,12 @@ + nsScreenManagerHeadless.cpp \ + $(NULL) + ++ifdef MOZ_X11 ++CPPSRCS += nsClipboard.cpp \ ++ nsImageToPixbuf.cpp \ ++ $(NULL) ++endif ++ + # build our subdirs, too + SHARED_LIBRARY_LIBS = ../xpwidgets/libxpwidgets_s.a + +Index: offscreen/widget/src/headless/nsClipboard.cpp +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ offscreen/widget/src/headless/nsClipboard.cpp 2009-06-12 14:14:05.000000000 +0100 +@@ -0,0 +1,948 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* ***** BEGIN LICENSE BLOCK ***** ++ * Version: MPL 1.1/GPL 2.0/LGPL 2.1 ++ * ++ * 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 Christopher Blizzard ++ * . Portions created by the Initial Developer ++ * are Copyright (C) 2001 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 MPL, 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 MPL, the GPL or the LGPL. ++ * ++ * ***** END LICENSE BLOCK ***** */ ++ ++#include "nsClipboard.h" ++#include "nsSupportsPrimitives.h" ++#include "nsString.h" ++#include "nsReadableUtils.h" ++#include "nsXPIDLString.h" ++#include "nsPrimitiveHelpers.h" ++#include "nsICharsetConverterManager.h" ++#include "nsIServiceManager.h" ++#include "nsIImage.h" ++#include "nsImageToPixbuf.h" ++#include "nsStringStream.h" ++ ++#include ++ ++// For manipulation of the X event queue ++#include ++#include ++#include ++#include ++#include ++ ++#ifdef POLL_WITH_XCONNECTIONNUMBER ++#include ++#endif ++ ++// Callback when someone asks us for the selection ++void ++invisible_selection_get_cb (GtkWidget *aWidget, ++ GtkSelectionData *aSelectionData, ++ guint aTime, ++ guint aInfo, ++ nsClipboard *aClipboard); ++ ++gboolean ++selection_clear_event_cb (GtkWidget *aWidget, ++ GdkEventSelection *aEvent, ++ nsClipboard *aClipboard); ++ ++static void ++ConvertHTMLtoUCS2 (guchar *data, ++ PRInt32 dataLength, ++ PRUnichar **unicodeData, ++ PRInt32 &outUnicodeLen); ++ ++static void ++GetHTMLCharset (guchar * data, PRInt32 dataLength, nsCString& str); ++ ++ ++// Our own versions of gtk_clipboard_wait_for_contents and ++// gtk_clipboard_wait_for_text, which don't run the event loop while ++// waiting for the data. This prevents a lot of problems related to ++// dispatching events at unexpected times. ++ ++static GtkSelectionData * ++wait_for_contents (GtkClipboard *clipboard, GdkAtom target); ++ ++static gchar * ++wait_for_text (GtkClipboard *clipboard); ++ ++static Bool ++checkEventProc(Display *display, XEvent *event, XPointer arg); ++ ++struct retrieval_context ++{ ++ PRBool completed; ++ void *data; ++ ++ retrieval_context() : completed(PR_FALSE), data(nsnull) { } ++}; ++ ++static void ++wait_for_retrieval(GtkClipboard *clipboard, retrieval_context *transferData); ++ ++static void ++clipboard_contents_received(GtkClipboard *clipboard, ++ GtkSelectionData *selection_data, ++ gpointer data); ++ ++static void ++clipboard_text_received(GtkClipboard *clipboard, ++ const gchar *text, ++ gpointer data); ++ ++nsClipboard::nsClipboard() ++{ ++ mWidget = nsnull; ++} ++ ++nsClipboard::~nsClipboard() ++{ ++ if (mWidget) ++ gtk_widget_destroy(mWidget); ++} ++ ++NS_IMPL_ISUPPORTS1(nsClipboard, nsIClipboard) ++ ++nsresult ++nsClipboard::Init(void) ++{ ++ mWidget = gtk_invisible_new(); ++ if (!mWidget) ++ return NS_ERROR_FAILURE; ++ ++ g_signal_connect(G_OBJECT(mWidget), "selection_get", ++ G_CALLBACK(invisible_selection_get_cb), this); ++ ++ g_signal_connect(G_OBJECT(mWidget), "selection_clear_event", ++ G_CALLBACK(selection_clear_event_cb), this); ++ ++ // XXX make sure to set up the selection_clear event ++ ++ return NS_OK; ++} ++ ++NS_IMETHODIMP ++nsClipboard::SetData(nsITransferable *aTransferable, ++ nsIClipboardOwner *aOwner, PRInt32 aWhichClipboard) ++{ ++ // See if we can short cut ++ if ((aWhichClipboard == kGlobalClipboard && ++ aTransferable == mGlobalTransferable.get() && ++ aOwner == mGlobalOwner.get()) || ++ (aWhichClipboard == kSelectionClipboard && ++ aTransferable == mSelectionTransferable.get() && ++ aOwner == mSelectionOwner.get())) { ++ return NS_OK; ++ } ++ ++ nsresult rv; ++ if (!mPrivacyHandler) { ++ rv = NS_NewClipboardPrivacyHandler(getter_AddRefs(mPrivacyHandler)); ++ NS_ENSURE_SUCCESS(rv, rv); ++ } ++ rv = mPrivacyHandler->PrepareDataForClipboard(aTransferable); ++ NS_ENSURE_SUCCESS(rv, rv); ++ ++ // Clear out the clipboard in order to set the new data ++ EmptyClipboard(aWhichClipboard); ++ ++ if (aWhichClipboard == kSelectionClipboard) { ++ mSelectionOwner = aOwner; ++ mSelectionTransferable = aTransferable; ++ } ++ else { ++ mGlobalOwner = aOwner; ++ mGlobalTransferable = aTransferable; ++ } ++ ++ // Which selection are we about to claim, CLIPBOARD or PRIMARY? ++ GdkAtom selectionAtom = GetSelectionAtom(aWhichClipboard); ++ ++ // Make ourselves the owner. If we fail to, return. ++ if (!gtk_selection_owner_set(mWidget, selectionAtom, GDK_CURRENT_TIME)) ++ return NS_ERROR_FAILURE; ++ ++ // Clear the old selection target list. ++ gtk_selection_clear_targets(mWidget, selectionAtom); ++ ++ // Get the types of supported flavors ++ nsCOMPtr flavors; ++ ++ rv = aTransferable->FlavorsTransferableCanExport(getter_AddRefs(flavors)); ++ if (!flavors || NS_FAILED(rv)) ++ return NS_ERROR_FAILURE; ++ ++ // Add all the flavors to this widget's supported type. ++ PRUint32 count; ++ flavors->Count(&count); ++ for (PRUint32 i=0; i < count; i++) { ++ nsCOMPtr tastesLike; ++ flavors->GetElementAt(i, getter_AddRefs(tastesLike)); ++ nsCOMPtr flavor = do_QueryInterface(tastesLike); ++ ++ if (flavor) { ++ nsXPIDLCString flavorStr; ++ flavor->ToString(getter_Copies(flavorStr)); ++ ++ // special case text/unicode since we can handle all of ++ // the string types ++ if (!strcmp(flavorStr, kUnicodeMime)) { ++ AddTarget(gdk_atom_intern("UTF8_STRING", FALSE), ++ selectionAtom); ++ AddTarget(gdk_atom_intern("COMPOUND_TEXT", FALSE), ++ selectionAtom); ++ AddTarget(gdk_atom_intern("TEXT", FALSE), selectionAtom); ++ AddTarget(GDK_SELECTION_TYPE_STRING, selectionAtom); ++ // next loop iteration ++ continue; ++ } ++ ++ // very special case for this one. since our selection mechanism doesn't work for images, ++ // we must use GTK's clipboard utility functions ++ if (!strcmp(flavorStr, kNativeImageMime) || !strcmp(flavorStr, kPNGImageMime) || ++ !strcmp(flavorStr, kJPEGImageMime) || !strcmp(flavorStr, kGIFImageMime)) { ++ nsCOMPtr item; ++ PRUint32 len; ++ rv = aTransferable->GetTransferData(flavorStr, getter_AddRefs(item), &len); ++ nsCOMPtr ptrPrimitive(do_QueryInterface(item)); ++ if (!ptrPrimitive) ++ continue; ++ ++ nsCOMPtr primitiveData; ++ ptrPrimitive->GetData(getter_AddRefs(primitiveData)); ++ nsCOMPtr image(do_QueryInterface(primitiveData)); ++ if (!image) // Not getting an image for an image mime type!? ++ continue; ++ ++ if (NS_FAILED(image->LockImagePixels(PR_FALSE))) ++ continue; ++ GdkPixbuf* pixbuf = nsImageToPixbuf::ImageToPixbuf(image); ++ if (!pixbuf) { ++ image->UnlockImagePixels(PR_FALSE); ++ continue; ++ } ++ ++ GtkClipboard *aClipboard = gtk_clipboard_get(GetSelectionAtom(aWhichClipboard)); ++ gtk_clipboard_set_image(aClipboard, pixbuf); ++ g_object_unref(pixbuf); ++ image->UnlockImagePixels(PR_FALSE); ++ continue; ++ } ++ ++ // Add this to our list of valid targets ++ GdkAtom atom = gdk_atom_intern(flavorStr, FALSE); ++ AddTarget(atom, selectionAtom); ++ } ++ } ++ ++ return NS_OK; ++} ++ ++NS_IMETHODIMP ++nsClipboard::GetData(nsITransferable *aTransferable, PRInt32 aWhichClipboard) ++{ ++ if (!aTransferable) ++ return NS_ERROR_FAILURE; ++ ++ GtkClipboard *clipboard; ++ clipboard = gtk_clipboard_get(GetSelectionAtom(aWhichClipboard)); ++ ++ guchar *data = NULL; ++ gint length = 0; ++ PRBool foundData = PR_FALSE; ++ nsCAutoString foundFlavor; ++ ++ // Get a list of flavors this transferable can import ++ nsCOMPtr flavors; ++ nsresult rv; ++ rv = aTransferable->FlavorsTransferableCanImport(getter_AddRefs(flavors)); ++ if (!flavors || NS_FAILED(rv)) ++ return NS_ERROR_FAILURE; ++ ++ PRUint32 count; ++ flavors->Count(&count); ++ for (PRUint32 i=0; i < count; i++) { ++ nsCOMPtr genericFlavor; ++ flavors->GetElementAt(i, getter_AddRefs(genericFlavor)); ++ ++ nsCOMPtr currentFlavor; ++ currentFlavor = do_QueryInterface(genericFlavor); ++ ++ if (currentFlavor) { ++ nsXPIDLCString flavorStr; ++ currentFlavor->ToString(getter_Copies(flavorStr)); ++ ++ // Special case text/unicode since we can convert any ++ // string into text/unicode ++ if (!strcmp(flavorStr, kUnicodeMime)) { ++ gchar* new_text = wait_for_text(clipboard); ++ if (new_text) { ++ // Convert utf-8 into our unicode format. ++ NS_ConvertUTF8toUTF16 ucs2string(new_text); ++ data = (guchar *)ToNewUnicode(ucs2string); ++ length = ucs2string.Length() * 2; ++ g_free(new_text); ++ foundData = PR_TRUE; ++ foundFlavor = kUnicodeMime; ++ break; ++ } ++ // If the type was text/unicode and we couldn't get ++ // text off the clipboard, run the next loop ++ // iteration. ++ continue; ++ } ++ ++ // For images, we must wrap the data in an nsIInputStream then return instead of break, ++ // because that code below won't help us. ++ if (!strcmp(flavorStr, kJPEGImageMime) || !strcmp(flavorStr, kPNGImageMime) || !strcmp(flavorStr, kGIFImageMime)) { ++ GdkAtom atom; ++ if (!strcmp(flavorStr, kJPEGImageMime)) // This is image/jpg, but X only understands image/jpeg ++ atom = gdk_atom_intern("image/jpeg", FALSE); ++ else ++ atom = gdk_atom_intern(flavorStr, FALSE); ++ ++ GtkSelectionData *selectionData = wait_for_contents(clipboard, atom); ++ if (!selectionData) ++ continue; ++ ++ nsCOMPtr byteStream; ++ NS_NewByteInputStream(getter_AddRefs(byteStream), (const char*)selectionData->data, ++ selectionData->length, NS_ASSIGNMENT_COPY); ++ aTransferable->SetTransferData(flavorStr, byteStream, sizeof(nsIInputStream*)); ++ gtk_selection_data_free(selectionData); ++ return NS_OK; ++ } ++ ++ // Get the atom for this type and try to request it off ++ // the clipboard. ++ GdkAtom atom = gdk_atom_intern(flavorStr, FALSE); ++ GtkSelectionData *selectionData; ++ selectionData = wait_for_contents(clipboard, atom); ++ if (selectionData) { ++ length = selectionData->length; ++ // Special case text/html since we can convert into UCS2 ++ if (!strcmp(flavorStr, kHTMLMime)) { ++ PRUnichar* htmlBody= nsnull; ++ PRInt32 htmlBodyLen = 0; ++ // Convert text/html into our unicode format ++ ConvertHTMLtoUCS2((guchar *)selectionData->data, length, ++ &htmlBody, htmlBodyLen); ++ if (!htmlBodyLen) ++ break; ++ data = (guchar *)htmlBody; ++ length = htmlBodyLen * 2; ++ } else { ++ data = (guchar *)nsMemory::Alloc(length); ++ if (!data) ++ break; ++ memcpy(data, selectionData->data, length); ++ } ++ foundData = PR_TRUE; ++ foundFlavor = flavorStr; ++ break; ++ } ++ } ++ } ++ ++ if (foundData) { ++ nsCOMPtr wrapper; ++ nsPrimitiveHelpers::CreatePrimitiveForData(foundFlavor.get(), ++ data, length, ++ getter_AddRefs(wrapper)); ++ aTransferable->SetTransferData(foundFlavor.get(), ++ wrapper, length); ++ } ++ ++ if (data) ++ nsMemory::Free(data); ++ ++ return NS_OK; ++} ++ ++NS_IMETHODIMP ++nsClipboard::EmptyClipboard(PRInt32 aWhichClipboard) ++{ ++ if (aWhichClipboard == kSelectionClipboard) { ++ if (mSelectionOwner) { ++ mSelectionOwner->LosingOwnership(mSelectionTransferable); ++ mSelectionOwner = nsnull; ++ } ++ mSelectionTransferable = nsnull; ++ } ++ else { ++ if (mGlobalOwner) { ++ mGlobalOwner->LosingOwnership(mGlobalTransferable); ++ mGlobalOwner = nsnull; ++ } ++ mGlobalTransferable = nsnull; ++ } ++ ++ return NS_OK; ++} ++ ++NS_IMETHODIMP ++nsClipboard::HasDataMatchingFlavors(const char** aFlavorList, PRUint32 aLength, ++ PRInt32 aWhichClipboard, PRBool *_retval) ++{ ++ if (!aFlavorList || !_retval) ++ return NS_ERROR_NULL_POINTER; ++ ++ *_retval = PR_FALSE; ++ ++ GtkSelectionData *selection_data = ++ GetTargets(GetSelectionAtom(aWhichClipboard)); ++ if (!selection_data) ++ return NS_OK; ++ ++ gint n_targets = 0; ++ GdkAtom *targets = NULL; ++ ++ if (!gtk_selection_data_get_targets(selection_data, ++ &targets, &n_targets) || ++ !n_targets) ++ return NS_OK; ++ ++ // Walk through the provided types and try to match it to a ++ // provided type. ++ for (PRUint32 i = 0; i < aLength && !*_retval; i++) { ++ // We special case text/unicode here. ++ if (!strcmp(aFlavorList[i], kUnicodeMime) && ++ gtk_selection_data_targets_include_text(selection_data)) { ++ *_retval = PR_TRUE; ++ break; ++ } ++ ++ for (PRInt32 j = 0; j < n_targets; j++) { ++ gchar *atom_name = gdk_atom_name(targets[j]); ++ if (!strcmp(atom_name, aFlavorList[i])) ++ *_retval = PR_TRUE; ++ ++ // X clipboard wants image/jpeg, not image/jpg ++ if (!strcmp(aFlavorList[i], kJPEGImageMime) && !strcmp(atom_name, "image/jpeg")) ++ *_retval = PR_TRUE; ++ ++ g_free(atom_name); ++ ++ if (*_retval) ++ break; ++ } ++ } ++ gtk_selection_data_free(selection_data); ++ g_free(targets); ++ ++ return NS_OK; ++} ++ ++NS_IMETHODIMP ++nsClipboard::SupportsSelectionClipboard(PRBool *_retval) ++{ ++ *_retval = PR_TRUE; // yeah, unix supports the selection clipboard ++ return NS_OK; ++} ++ ++/* static */ ++GdkAtom ++nsClipboard::GetSelectionAtom(PRInt32 aWhichClipboard) ++{ ++ if (aWhichClipboard == kGlobalClipboard) ++ return GDK_SELECTION_CLIPBOARD; ++ ++ return GDK_SELECTION_PRIMARY; ++} ++ ++/* static */ ++GtkSelectionData * ++nsClipboard::GetTargets(GdkAtom aWhichClipboard) ++{ ++ GtkClipboard *clipboard = gtk_clipboard_get(aWhichClipboard); ++ return wait_for_contents(clipboard, gdk_atom_intern("TARGETS", FALSE)); ++} ++ ++nsITransferable * ++nsClipboard::GetTransferable(PRInt32 aWhichClipboard) ++{ ++ nsITransferable *retval; ++ ++ if (aWhichClipboard == kSelectionClipboard) ++ retval = mSelectionTransferable.get(); ++ else ++ retval = mGlobalTransferable.get(); ++ ++ return retval; ++} ++ ++void ++nsClipboard::AddTarget(GdkAtom aName, GdkAtom aClipboard) ++{ ++ gtk_selection_add_target(mWidget, aClipboard, aName, 0); ++} ++ ++void ++nsClipboard::SelectionGetEvent (GtkWidget *aWidget, ++ GtkSelectionData *aSelectionData, ++ guint aTime) ++{ ++ // Someone has asked us to hand them something. The first thing ++ // that we want to do is see if that something includes text. If ++ // it does, try to give it text/unicode after converting it to ++ // utf-8. ++ ++ PRInt32 whichClipboard; ++ ++ // which clipboard? ++ if (aSelectionData->selection == GDK_SELECTION_PRIMARY) ++ whichClipboard = kSelectionClipboard; ++ else if (aSelectionData->selection == GDK_SELECTION_CLIPBOARD) ++ whichClipboard = kGlobalClipboard; ++ else ++ return; // THAT AIN'T NO CLIPBOARD I EVER HEARD OF ++ ++ nsCOMPtr trans = GetTransferable(whichClipboard); ++ ++ nsresult rv; ++ nsCOMPtr item; ++ PRUint32 len; ++ ++ // Check to see if the selection data includes any of the string ++ // types that we support. ++ if (aSelectionData->target == gdk_atom_intern ("STRING", FALSE) || ++ aSelectionData->target == gdk_atom_intern ("TEXT", FALSE) || ++ aSelectionData->target == gdk_atom_intern ("COMPOUND_TEXT", FALSE) || ++ aSelectionData->target == gdk_atom_intern ("UTF8_STRING", FALSE)) { ++ // Try to convert our internal type into a text string. Get ++ // the transferable for this clipboard and try to get the ++ // text/unicode type for it. ++ rv = trans->GetTransferData("text/unicode", getter_AddRefs(item), ++ &len); ++ if (!item || NS_FAILED(rv)) ++ return; ++ ++ nsCOMPtr wideString; ++ wideString = do_QueryInterface(item); ++ if (!wideString) ++ return; ++ ++ nsAutoString ucs2string; ++ wideString->GetData(ucs2string); ++ char *utf8string = ToNewUTF8String(ucs2string); ++ if (!utf8string) ++ return; ++ ++ gtk_selection_data_set_text (aSelectionData, utf8string, ++ strlen(utf8string)); ++ ++ nsMemory::Free(utf8string); ++ return; ++ } ++ ++ // Try to match up the selection data target to something our ++ // transferable provides. ++ gchar *target_name = gdk_atom_name(aSelectionData->target); ++ if (!target_name) ++ return; ++ ++ rv = trans->GetTransferData(target_name, getter_AddRefs(item), &len); ++ // nothing found? ++ if (!item || NS_FAILED(rv)) { ++ g_free(target_name); ++ return; ++ } ++ ++ void *primitive_data = nsnull; ++ nsPrimitiveHelpers::CreateDataFromPrimitive(target_name, item, ++ &primitive_data, len); ++ ++ if (primitive_data) { ++ // Check to see if the selection data is text/html ++ if (aSelectionData->target == gdk_atom_intern (kHTMLMime, FALSE)) { ++ /* ++ * "text/html" can be encoded UCS2. It is recommended that ++ * documents transmitted as UCS2 always begin with a ZERO-WIDTH ++ * NON-BREAKING SPACE character (hexadecimal FEFF, also called ++ * Byte Order Mark (BOM)). Adding BOM can help other app to ++ * detect mozilla use UCS2 encoding when copy-paste. ++ */ ++ guchar *buffer = (guchar *) ++ nsMemory::Alloc((len * sizeof(guchar)) + sizeof(PRUnichar)); ++ if (!buffer) ++ return; ++ PRUnichar prefix = 0xFEFF; ++ memcpy(buffer, &prefix, sizeof(prefix)); ++ memcpy(buffer + sizeof(prefix), primitive_data, len); ++ nsMemory::Free((guchar *)primitive_data); ++ primitive_data = (guchar *)buffer; ++ len += sizeof(prefix); ++ } ++ ++ gtk_selection_data_set(aSelectionData, aSelectionData->target, ++ 8, /* 8 bits in a unit */ ++ (const guchar *)primitive_data, len); ++ nsMemory::Free(primitive_data); ++ } ++ ++ g_free(target_name); ++ ++} ++ ++void ++nsClipboard::SelectionClearEvent (GtkWidget *aWidget, ++ GdkEventSelection *aEvent) ++{ ++ PRInt32 whichClipboard; ++ ++ // which clipboard? ++ if (aEvent->selection == GDK_SELECTION_PRIMARY) ++ whichClipboard = kSelectionClipboard; ++ else if (aEvent->selection == GDK_SELECTION_CLIPBOARD) ++ whichClipboard = kGlobalClipboard; ++ else ++ return; // THAT AIN'T NO CLIPBOARD I EVER HEARD OF ++ ++ EmptyClipboard(whichClipboard); ++} ++ ++void ++invisible_selection_get_cb (GtkWidget *aWidget, ++ GtkSelectionData *aSelectionData, ++ guint aTime, ++ guint aInfo, ++ nsClipboard *aClipboard) ++{ ++ aClipboard->SelectionGetEvent(aWidget, aSelectionData, aTime); ++} ++ ++gboolean ++selection_clear_event_cb (GtkWidget *aWidget, ++ GdkEventSelection *aEvent, ++ nsClipboard *aClipboard) ++{ ++ aClipboard->SelectionClearEvent(aWidget, aEvent); ++ return TRUE; ++} ++ ++/* ++ * when copy-paste, mozilla wants data encoded using UCS2, ++ * other app such as StarOffice use "text/html"(RFC2854). ++ * This function convert data(got from GTK clipboard) ++ * to data mozilla wanted. ++ * ++ * data from GTK clipboard can be 3 forms: ++ * 1. From current mozilla ++ * "text/html", charset = utf-16 ++ * 2. From old version mozilla or mozilla-based app ++ * content("body" only), charset = utf-16 ++ * 3. From other app who use "text/html" when copy-paste ++ * "text/html", has "charset" info ++ * ++ * data : got from GTK clipboard ++ * dataLength: got from GTK clipboard ++ * body : pass to Mozilla ++ * bodyLength: pass to Mozilla ++ */ ++void ConvertHTMLtoUCS2(guchar * data, PRInt32 dataLength, ++ PRUnichar** unicodeData, PRInt32& outUnicodeLen) ++{ ++ nsCAutoString charset; ++ GetHTMLCharset(data, dataLength, charset);// get charset of HTML ++ if (charset.EqualsLiteral("UTF-16")) {//current mozilla ++ outUnicodeLen = (dataLength / 2) - 1; ++ *unicodeData = reinterpret_cast ++ (nsMemory::Alloc((outUnicodeLen + sizeof('\0')) * ++ sizeof(PRUnichar))); ++ if (*unicodeData) { ++ memcpy(*unicodeData, data + sizeof(PRUnichar), ++ outUnicodeLen * sizeof(PRUnichar)); ++ (*unicodeData)[outUnicodeLen] = '\0'; ++ } ++ } else if (charset.EqualsLiteral("UNKNOWN")) { ++ outUnicodeLen = 0; ++ return; ++ } else { ++ // app which use "text/html" to copy&paste ++ nsCOMPtr decoder; ++ nsresult rv; ++ // get the decoder ++ nsCOMPtr ccm = ++ do_GetService(NS_CHARSETCONVERTERMANAGER_CONTRACTID, &rv); ++ if (NS_FAILED(rv)) { ++#ifdef DEBUG_CLIPBOARD ++ g_print(" can't get CHARSET CONVERTER MANAGER service\n"); ++#endif ++ outUnicodeLen = 0; ++ return; ++ } ++ rv = ccm->GetUnicodeDecoder(charset.get(), getter_AddRefs(decoder)); ++ if (NS_FAILED(rv)) { ++#ifdef DEBUG_CLIPBOARD ++ g_print(" get unicode decoder error\n"); ++#endif ++ outUnicodeLen = 0; ++ return; ++ } ++ // converting ++ decoder->GetMaxLength((const char *)data, dataLength, &outUnicodeLen); ++ // |outUnicodeLen| is number of chars ++ if (outUnicodeLen) { ++ *unicodeData = reinterpret_cast ++ (nsMemory::Alloc((outUnicodeLen + sizeof('\0')) * ++ sizeof(PRUnichar))); ++ if (*unicodeData) { ++ PRInt32 numberTmp = dataLength; ++ decoder->Convert((const char *)data, &numberTmp, ++ *unicodeData, &outUnicodeLen); ++#ifdef DEBUG_CLIPBOARD ++ if (numberTmp != dataLength) ++ printf("didn't consume all the bytes\n"); ++#endif ++ // null terminate. Convert() doesn't do it for us ++ (*unicodeData)[outUnicodeLen] = '\0'; ++ } ++ } // if valid length ++ } ++} ++ ++/* ++ * get "charset" information from clipboard data ++ * return value can be: ++ * 1. "UTF-16": mozilla or "text/html" with "charset=utf-16" ++ * 2. "UNKNOWN": mozilla can't detect what encode it use ++ * 3. other: "text/html" with other charset than utf-16 ++ */ ++void GetHTMLCharset(guchar * data, PRInt32 dataLength, nsCString& str) ++{ ++ // if detect "FFFE" or "FEFF", assume UTF-16 ++ PRUnichar* beginChar = (PRUnichar*)data; ++ if ((beginChar[0] == 0xFFFE) || (beginChar[0] == 0xFEFF)) { ++ str.AssignLiteral("UTF-16"); ++ return; ++ } ++ // no "FFFE" and "FEFF", assume ASCII first to find "charset" info ++ const nsDependentCString htmlStr((const char *)data, dataLength); ++ nsACString::const_iterator start, end; ++ htmlStr.BeginReading(start); ++ htmlStr.EndReading(end); ++ nsACString::const_iterator valueStart(start), valueEnd(start); ++ ++ if (CaseInsensitiveFindInReadable( ++ NS_LITERAL_CSTRING("CONTENT=\"text/html;"), ++ start, end)) { ++ start = end; ++ htmlStr.EndReading(end); ++ ++ if (CaseInsensitiveFindInReadable( ++ NS_LITERAL_CSTRING("charset="), ++ start, end)) { ++ valueStart = end; ++ start = end; ++ htmlStr.EndReading(end); ++ ++ if (FindCharInReadable('"', start, end)) ++ valueEnd = start; ++ } ++ } ++ // find "charset" in HTML ++ if (valueStart != valueEnd) { ++ str = Substring(valueStart, valueEnd); ++ ToUpperCase(str); ++#ifdef DEBUG_CLIPBOARD ++ printf("Charset of HTML = %s\n", charsetUpperStr.get()); ++#endif ++ return; ++ } ++ str.AssignLiteral("UNKNOWN"); ++} ++ ++static void ++DispatchSelectionNotifyEvent(GtkWidget *widget, XEvent *xevent) ++{ ++ GdkEvent event; ++ event.selection.type = GDK_SELECTION_NOTIFY; ++ event.selection.window = widget->window; ++ event.selection.selection = gdk_x11_xatom_to_atom(xevent->xselection.selection); ++ event.selection.target = gdk_x11_xatom_to_atom(xevent->xselection.target); ++ event.selection.property = gdk_x11_xatom_to_atom(xevent->xselection.property); ++ event.selection.time = xevent->xselection.time; ++ ++ gtk_widget_event(widget, &event); ++} ++ ++static void ++DispatchPropertyNotifyEvent(GtkWidget *widget, XEvent *xevent) ++{ ++ if (((GdkWindowObject *) widget->window)->event_mask & GDK_PROPERTY_CHANGE_MASK) { ++ GdkEvent event; ++ event.property.type = GDK_PROPERTY_NOTIFY; ++ event.property.window = widget->window; ++ event.property.atom = gdk_x11_xatom_to_atom(xevent->xproperty.atom); ++ event.property.time = xevent->xproperty.time; ++ event.property.state = xevent->xproperty.state; ++ ++ gtk_widget_event(widget, &event); ++ } ++} ++ ++struct checkEventContext ++{ ++ GtkWidget *cbWidget; ++ Atom selAtom; ++}; ++ ++static Bool ++checkEventProc(Display *display, XEvent *event, XPointer arg) ++{ ++ checkEventContext *context = (checkEventContext *) arg; ++ ++ if (event->xany.type == SelectionNotify || ++ (event->xany.type == PropertyNotify && ++ event->xproperty.atom == context->selAtom)) { ++ ++ GdkWindow *cbWindow = gdk_window_lookup(event->xany.window); ++ if (cbWindow) { ++ GtkWidget *cbWidget = NULL; ++ gdk_window_get_user_data(cbWindow, (gpointer *)&cbWidget); ++ if (cbWidget && GTK_IS_WIDGET(cbWidget)) { ++ context->cbWidget = cbWidget; ++ return True; ++ } ++ } ++ } ++ ++ return False; ++} ++ ++// Idle timeout for receiving selection and property notify events (microsec) ++static const int kClipboardTimeout = 500000; ++ ++static void ++wait_for_retrieval(GtkClipboard *clipboard, retrieval_context *r_context) ++{ ++ if (r_context->completed) // the request completed synchronously ++ return; ++ ++ Display *xDisplay = GDK_DISPLAY(); ++ checkEventContext context; ++ context.cbWidget = NULL; ++ context.selAtom = gdk_x11_atom_to_xatom(gdk_atom_intern("GDK_SELECTION", ++ FALSE)); ++ ++ // Send X events which are relevant to the ongoing selection retrieval ++ // to the clipboard widget. Wait until either the operation completes, or ++ // we hit our timeout. All other X events remain queued. ++ ++ int select_result; ++ ++#ifdef POLL_WITH_XCONNECTIONNUMBER ++ struct pollfd fds[1]; ++ fds[0].fd = XConnectionNumber(xDisplay); ++ fds[0].events = POLLIN; ++#else ++ int cnumber = ConnectionNumber(xDisplay); ++ fd_set select_set; ++ FD_ZERO(&select_set); ++ FD_SET(cnumber, &select_set); ++ ++cnumber; ++ struct timeval tv; ++#endif ++ ++ do { ++ XEvent xevent; ++ ++ while (XCheckIfEvent(xDisplay, &xevent, checkEventProc, ++ (XPointer) &context)) { ++ ++ if (xevent.xany.type == SelectionNotify) ++ DispatchSelectionNotifyEvent(context.cbWidget, &xevent); ++ else ++ DispatchPropertyNotifyEvent(context.cbWidget, &xevent); ++ ++ if (r_context->completed) ++ return; ++ } ++ ++#ifdef POLL_WITH_XCONNECTIONNUMBER ++ select_result = poll(fds, 1, kClipboardTimeout / 1000); ++#else ++ tv.tv_sec = 0; ++ tv.tv_usec = kClipboardTimeout; ++ select_result = select(cnumber, &select_set, NULL, NULL, &tv); ++#endif ++ } while (select_result == 1); ++ ++#ifdef DEBUG_CLIPBOARD ++ printf("exceeded clipboard timeout\n"); ++#endif ++} ++ ++static void ++clipboard_contents_received(GtkClipboard *clipboard, ++ GtkSelectionData *selection_data, ++ gpointer data) ++{ ++ retrieval_context *context = static_cast(data); ++ context->completed = PR_TRUE; ++ ++ if (selection_data->length >= 0) ++ context->data = gtk_selection_data_copy(selection_data); ++} ++ ++ ++static GtkSelectionData * ++wait_for_contents(GtkClipboard *clipboard, GdkAtom target) ++{ ++ retrieval_context context; ++ gtk_clipboard_request_contents(clipboard, target, ++ clipboard_contents_received, ++ &context); ++ ++ wait_for_retrieval(clipboard, &context); ++ return static_cast(context.data); ++} ++ ++static void ++clipboard_text_received(GtkClipboard *clipboard, ++ const gchar *text, ++ gpointer data) ++{ ++ retrieval_context *context = static_cast(data); ++ context->completed = PR_TRUE; ++ context->data = g_strdup(text); ++} ++ ++static gchar * ++wait_for_text(GtkClipboard *clipboard) ++{ ++ retrieval_context context; ++ gtk_clipboard_request_text(clipboard, clipboard_text_received, &context); ++ ++ wait_for_retrieval(clipboard, &context); ++ return static_cast(context.data); ++} +Index: offscreen/widget/src/headless/nsClipboard.h +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ offscreen/widget/src/headless/nsClipboard.h 2009-06-12 14:14:05.000000000 +0100 +@@ -0,0 +1,93 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* ***** BEGIN LICENSE BLOCK ***** ++ * Version: MPL 1.1/GPL 2.0/LGPL 2.1 ++ * ++ * 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 Christopher Blizzard ++ * . Portions created by the Initial Developer ++ * are Copyright (C) 2001 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 MPL, 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 MPL, the GPL or the LGPL. ++ * ++ * ***** END LICENSE BLOCK ***** */ ++ ++#ifndef __nsClipboard_h_ ++#define __nsClipboard_h_ ++ ++#include "nsIClipboard.h" ++#include "nsClipboardPrivacyHandler.h" ++#include "nsAutoPtr.h" ++#include ++ ++class nsClipboard : public nsIClipboard ++{ ++public: ++ nsClipboard(); ++ virtual ~nsClipboard(); ++ ++ NS_DECL_ISUPPORTS ++ ++ NS_DECL_NSICLIPBOARD ++ ++ // Make sure we are initialized, called from the factory ++ // constructor ++ nsresult Init (void); ++ // Someone requested the selection from the hidden widget ++ void SelectionGetEvent (GtkWidget *aWidget, ++ GtkSelectionData *aSelectionData, ++ guint aTime); ++ void SelectionClearEvent (GtkWidget *aWidget, ++ GdkEventSelection *aEvent); ++ ++ ++private: ++ // Utility methods ++ static GdkAtom GetSelectionAtom (PRInt32 aWhichClipboard); ++ static GtkSelectionData *GetTargets (GdkAtom aWhichClipboard); ++ ++ // Get our hands on the correct transferable, given a specific ++ // clipboard ++ nsITransferable *GetTransferable (PRInt32 aWhichClipboard); ++ ++ // Add a target type to the hidden widget ++ void AddTarget (GdkAtom aName, ++ GdkAtom aClipboard); ++ ++ // The hidden widget where we do all of our operations ++ GtkWidget *mWidget; ++ // Hang on to our owners and transferables so we can transfer data ++ // when asked. ++ nsCOMPtr mSelectionOwner; ++ nsCOMPtr mGlobalOwner; ++ nsCOMPtr mSelectionTransferable; ++ nsCOMPtr mGlobalTransferable; ++ nsRefPtr mPrivacyHandler; ++ ++}; ++ ++#endif /* __nsClipboard_h_ */ +Index: offscreen/widget/src/headless/nsIImageToPixbuf.h +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ offscreen/widget/src/headless/nsIImageToPixbuf.h 2009-06-12 14:14:05.000000000 +0100 +@@ -0,0 +1,62 @@ ++/* ***** BEGIN LICENSE BLOCK ***** ++ * Version: MPL 1.1/GPL 2.0/LGPL 2.1 ++ * ++ * 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 widget code. ++ * ++ * The Initial Developer of the Original Code is ++ * Christian Biesinger . ++ * Portions created by the Initial Developer are Copyright (C) 2006 ++ * 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 MPL, 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 MPL, the GPL or the LGPL. ++ * ++ * ***** END LICENSE BLOCK ***** */ ++ ++#ifndef NSIIMAGETOPIXBUF_H_ ++#define NSIIMAGETOPIXBUF_H_ ++ ++#include "nsISupports.h" ++ ++// dfa4ac93-83f2-4ab8-9b2a-0ff7022aebe2 ++#define NSIIMAGETOPIXBUF_IID \ ++{ 0xdfa4ac93, 0x83f2, 0x4ab8, \ ++ { 0x9b, 0x2a, 0x0f, 0xf7, 0x02, 0x2a, 0xeb, 0xe2 } } ++ ++class nsIImage; ++typedef struct _GdkPixbuf GdkPixbuf; ++ ++/** ++ * An interface that allows converting an nsIImage to a GdkPixbuf*. ++ */ ++class nsIImageToPixbuf : public nsISupports { ++ public: ++ NS_DECLARE_STATIC_IID_ACCESSOR(NSIIMAGETOPIXBUF_IID) ++ ++ NS_IMETHOD_(GdkPixbuf*) ConvertImageToPixbuf(nsIImage* aImage) = 0; ++}; ++ ++NS_DEFINE_STATIC_IID_ACCESSOR(nsIImageToPixbuf, NSIIMAGETOPIXBUF_IID) ++ ++#endif +Index: offscreen/widget/src/headless/nsImageToPixbuf.cpp +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ offscreen/widget/src/headless/nsImageToPixbuf.cpp 2009-06-12 14:14:05.000000000 +0100 +@@ -0,0 +1,196 @@ ++/* vim:set sw=4 sts=4 et cin: */ ++/* ***** BEGIN LICENSE BLOCK ***** ++ * Version: MPL 1.1/GPL 2.0/LGPL 2.1 ++ * ++ * 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 widget code. ++ * ++ * The Initial Developer of the Original Code is ++ * Christian Biesinger . ++ * Portions created by the Initial Developer are Copyright (C) 2006 ++ * 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 MPL, 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 MPL, the GPL or the LGPL. ++ * ++ * ***** END LICENSE BLOCK ***** */ ++ ++#include ++ ++#include "gfxASurface.h" ++#include "gfxImageSurface.h" ++#include "gfxContext.h" ++ ++#include "nsIImage.h" ++ ++#include "nsAutoPtr.h" ++ ++#include "nsImageToPixbuf.h" ++ ++NS_IMPL_ISUPPORTS1(nsImageToPixbuf, nsIImageToPixbuf) ++ ++inline unsigned char ++unpremultiply (unsigned char color, ++ unsigned char alpha) ++{ ++ if (alpha == 0) ++ return 0; ++ // plus alpha/2 to round instead of truncate ++ return (color * 255 + alpha / 2) / alpha; ++} ++ ++NS_IMETHODIMP_(GdkPixbuf*) ++nsImageToPixbuf::ConvertImageToPixbuf(nsIImage* aImage) ++{ ++ return ImageToPixbuf(aImage); ++} ++ ++GdkPixbuf* ++nsImageToPixbuf::ImageToPixbuf(nsIImage* aImage) ++{ ++ PRInt32 width = aImage->GetWidth(), ++ height = aImage->GetHeight(); ++ ++ nsRefPtr pattern; ++ aImage->GetPattern(getter_AddRefs(pattern)); ++ ++ return PatternToPixbuf(pattern, width, height); ++} ++ ++GdkPixbuf* ++nsImageToPixbuf::ImgSurfaceToPixbuf(gfxImageSurface* aImgSurface, PRInt32 aWidth, PRInt32 aHeight) ++{ ++ GdkPixbuf* pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, PR_TRUE, 8, ++ aWidth, aHeight); ++ if (!pixbuf) ++ return nsnull; ++ ++ PRUint32 rowstride = gdk_pixbuf_get_rowstride (pixbuf); ++ guchar* pixels = gdk_pixbuf_get_pixels (pixbuf); ++ ++ long cairoStride = aImgSurface->Stride(); ++ unsigned char* cairoData = aImgSurface->Data(); ++ ++ gfxASurface::gfxImageFormat format = aImgSurface->Format(); ++ ++ for (PRInt32 row = 0; row < aHeight; ++row) { ++ for (PRInt32 col = 0; col < aWidth; ++col) { ++ guchar* pixel = pixels + row * rowstride + 4 * col; ++ ++ PRUint32* cairoPixel = reinterpret_cast ++ ((cairoData + row * cairoStride + 4 * col)); ++ ++ if (format == gfxASurface::ImageFormatARGB32) { ++ const PRUint8 a = (*cairoPixel >> 24) & 0xFF; ++ const PRUint8 r = unpremultiply((*cairoPixel >> 16) & 0xFF, a); ++ const PRUint8 g = unpremultiply((*cairoPixel >> 8) & 0xFF, a); ++ const PRUint8 b = unpremultiply((*cairoPixel >> 0) & 0xFF, a); ++ ++ *pixel++ = r; ++ *pixel++ = g; ++ *pixel++ = b; ++ *pixel++ = a; ++ } else { ++ NS_ASSERTION(format == gfxASurface::ImageFormatRGB24, ++ "unexpected format"); ++ const PRUint8 r = (*cairoPixel >> 16) & 0xFF; ++ const PRUint8 g = (*cairoPixel >> 8) & 0xFF; ++ const PRUint8 b = (*cairoPixel >> 0) & 0xFF; ++ ++ *pixel++ = r; ++ *pixel++ = g; ++ *pixel++ = b; ++ *pixel++ = 0xFF; // A ++ } ++ } ++ } ++ ++ return pixbuf; ++} ++ ++GdkPixbuf* ++nsImageToPixbuf::SurfaceToPixbuf(gfxASurface* aSurface, PRInt32 aWidth, PRInt32 aHeight) ++{ ++ if (aSurface->CairoStatus()) { ++ NS_ERROR("invalid surface"); ++ return nsnull; ++ } ++ ++ nsRefPtr imgSurface; ++ if (aSurface->GetType() == gfxASurface::SurfaceTypeImage) { ++ imgSurface = static_cast ++ (static_cast(aSurface)); ++ } else { ++ imgSurface = new gfxImageSurface(gfxIntSize(aWidth, aHeight), ++ gfxImageSurface::ImageFormatARGB32); ++ ++ if (!imgSurface) ++ return nsnull; ++ ++ nsRefPtr context = new gfxContext(imgSurface); ++ if (!context) ++ return nsnull; ++ ++ context->SetOperator(gfxContext::OPERATOR_SOURCE); ++ context->SetSource(aSurface); ++ context->Paint(); ++ } ++ ++ return ImgSurfaceToPixbuf(imgSurface, aWidth, aHeight); ++} ++ ++GdkPixbuf* ++nsImageToPixbuf::PatternToPixbuf(gfxPattern* aPattern, PRInt32 aWidth, PRInt32 aHeight) ++{ ++ if (aPattern->CairoStatus()) { ++ NS_ERROR("invalid pattern"); ++ return nsnull; ++ } ++ ++ nsRefPtr imgSurface; ++ if (aPattern->GetType() == gfxPattern::PATTERN_SURFACE) { ++ nsRefPtr surface = aPattern->GetSurface(); ++ if (surface->GetType() == gfxASurface::SurfaceTypeImage) { ++ imgSurface = static_cast ++ (static_cast(surface.get())); ++ } ++ } ++ ++ if (!imgSurface) { ++ imgSurface = new gfxImageSurface(gfxIntSize(aWidth, aHeight), ++ gfxImageSurface::ImageFormatARGB32); ++ ++ if (!imgSurface) ++ return nsnull; ++ ++ nsRefPtr context = new gfxContext(imgSurface); ++ if (!context) ++ return nsnull; ++ ++ context->SetOperator(gfxContext::OPERATOR_SOURCE); ++ context->SetPattern(aPattern); ++ context->Paint(); ++ } ++ ++ return ImgSurfaceToPixbuf(imgSurface, aWidth, aHeight); ++} +Index: offscreen/widget/src/headless/nsImageToPixbuf.h +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ offscreen/widget/src/headless/nsImageToPixbuf.h 2009-06-12 14:14:05.000000000 +0100 +@@ -0,0 +1,71 @@ ++/* vim:set sw=4 sts=4 et cin: */ ++/* ***** BEGIN LICENSE BLOCK ***** ++ * Version: MPL 1.1/GPL 2.0/LGPL 2.1 ++ * ++ * 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 widget code. ++ * ++ * The Initial Developer of the Original Code is ++ * Christian Biesinger . ++ * Portions created by the Initial Developer are Copyright (C) 2006 ++ * 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 MPL, 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 MPL, the GPL or the LGPL. ++ * ++ * ***** END LICENSE BLOCK ***** */ ++ ++#ifndef NSIMAGETOPIXBUF_H_ ++#define NSIMAGETOPIXBUF_H_ ++ ++#include "nsIImageToPixbuf.h" ++ ++class gfxASurface; ++class gfxPattern; ++class gfxImageSurface; ++ ++class nsImageToPixbuf : public nsIImageToPixbuf { ++ public: ++ NS_DECL_ISUPPORTS ++ NS_IMETHOD_(GdkPixbuf*) ConvertImageToPixbuf(nsIImage* aImage); ++ ++ // Friendlier version of ConvertImageToPixbuf for callers inside of ++ // widget ++ static GdkPixbuf* ImageToPixbuf(nsIImage* aImage); ++ static GdkPixbuf* SurfaceToPixbuf(gfxASurface* aSurface, ++ PRInt32 aWidth, PRInt32 aHeight); ++ static GdkPixbuf* PatternToPixbuf(gfxPattern* aPattern, ++ PRInt32 aWidth, PRInt32 aHeight); ++ private: ++ static GdkPixbuf* ImgSurfaceToPixbuf(gfxImageSurface* aImgSurface, ++ PRInt32 aWidth, PRInt32 aHeight); ++ ~nsImageToPixbuf() {} ++}; ++ ++ ++// fc2389b8-c650-4093-9e42-b05e5f0685b7 ++#define NS_IMAGE_TO_PIXBUF_CID \ ++{ 0xfc2389b8, 0xc650, 0x4093, \ ++ { 0x9e, 0x42, 0xb0, 0x5e, 0x5f, 0x06, 0x85, 0xb7 } } ++ ++#endif +Index: offscreen/widget/src/headless/nsWidgetFactory.cpp +=================================================================== +--- offscreen.orig/widget/src/headless/nsWidgetFactory.cpp 2009-06-12 14:08:56.000000000 +0100 ++++ offscreen/widget/src/headless/nsWidgetFactory.cpp 2009-06-12 14:15:24.000000000 +0100 +@@ -46,6 +46,10 @@ + #include "nsWindow.h" + #include "nsTransferable.h" + #include "nsHTMLFormatConverter.h" ++#ifdef MOZ_X11 ++#include "nsClipboardHelper.h" ++#include "nsClipboard.h" ++#endif + #include "nsSound.h" + #include "nsBidiKeyboard.h" + #include "nsScreenManagerHeadless.h" +@@ -66,6 +70,10 @@ + NS_GENERIC_FACTORY_CONSTRUCTOR(nsTransferable) + NS_GENERIC_FACTORY_CONSTRUCTOR(nsBidiKeyboard) + NS_GENERIC_FACTORY_CONSTRUCTOR(nsHTMLFormatConverter) ++#ifdef MOZ_X11 ++NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboardHelper) ++NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsClipboard, Init) ++#endif + NS_GENERIC_FACTORY_CONSTRUCTOR(nsSound) + NS_GENERIC_FACTORY_CONSTRUCTOR(nsScreenManagerHeadless) + //NS_GENERIC_FACTORY_CONSTRUCTOR(nsImageToPixbuf) +@@ -142,6 +150,16 @@ + NS_TRANSFERABLE_CID, + "@mozilla.org/widget/transferable;1", + nsTransferableConstructor }, ++#ifdef MOZ_X11 ++ { "Gtk Clipboard", ++ NS_CLIPBOARD_CID, ++ "@mozilla.org/widget/clipboard;1", ++ nsClipboardConstructor }, ++ { "Clipboard Helper", ++ NS_CLIPBOARDHELPER_CID, ++ "@mozilla.org/widget/clipboardhelper;1", ++ nsClipboardHelperConstructor }, ++#endif + { "HTML Format Converter", + NS_HTMLFORMATCONVERTER_CID, + "@mozilla.org/widget/htmlformatconverter;1", diff --git a/meta-moblin/packages/mozilla-headless/mozilla-headless/autoconffix.patch b/meta-moblin/packages/mozilla-headless/mozilla-headless/autoconffix.patch new file mode 100644 index 000000000..2874b0d83 --- /dev/null +++ b/meta-moblin/packages/mozilla-headless/mozilla-headless/autoconffix.patch @@ -0,0 +1,66 @@ +Fixes to enable building with latest autoconf and automake + +RP 2/2/10 + +Index: offscreen/js/ctypes/libffi/configure.ac +=================================================================== +--- offscreen.orig/js/ctypes/libffi/configure.ac 2010-02-02 19:53:16.753906134 +0000 ++++ offscreen/js/ctypes/libffi/configure.ac 2010-02-02 19:53:21.895155509 +0000 +@@ -17,10 +17,10 @@ + # the wrong, non-multilib-adjusted value will be used in multilibs. + # As a side effect, we have to subst CFLAGS ourselves. + +-m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) ++m4_rename_force([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) + m4_define([_AC_ARG_VAR_PRECIOUS],[]) + AC_PROG_CC +-m4_rename([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) ++m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) + + AC_SUBST(CFLAGS) + +Index: offscreen/modules/libpr0n/build/Makefile.in +=================================================================== +--- offscreen.orig/modules/libpr0n/build/Makefile.in 2010-02-02 19:53:16.783906873 +0000 ++++ offscreen/modules/libpr0n/build/Makefile.in 2010-02-02 19:53:21.895155509 +0000 +@@ -92,6 +92,7 @@ + + export:: + @{ \ ++ \ + $(foreach d,$(filter-out icon,$(MOZ_IMG_DECODERS)), \ + echo "#define IMG_BUILD_DECODER_${d}";) \ + $(foreach d,$(MOZ_IMG_ENCODERS), \ +Index: offscreen/configure.in +=================================================================== +--- offscreen.orig/configure.in 2010-02-02 19:53:28.493904163 +0000 ++++ offscreen/configure.in 2010-02-02 16:33:09.000000000 +0000 +@@ -3250,11 +3250,7 @@ + dnl ======================================================== + AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,, + $XLIBS $XEXT_LIBS) +- AC_CHECK_HEADER(X11/extensions/XShm.h) +- if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" && +- test -n "$_HAVE_XSHM_XEXT"; then +- AC_DEFINE(HAVE_XSHM) +- fi ++ AC_DEFINE(HAVE_XSHM) + + dnl ======================================================== + dnl = Check for XIE +@@ -8120,15 +8116,7 @@ + fi # COMPILE_ENVIRONMENT + + if test "$USE_FC_FREETYPE"; then +- if test "$COMPILE_ENVIRONMENT"; then +- _SAVE_CPPFLAGS="$CPPFLAGS" +- CPPFLAGS="$CPPFLAGS $FT2_CFLAGS" +- AC_CHECK_HEADERS(fontconfig/fcfreetype.h, , +- [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)]) +- CPPFLAGS="$_SAVE_CPPFLAGS" +- else + AC_DEFINE(HAVE_FONTCONFIG_FCFREETYPE_H) +- fi + fi + + dnl Set various defines and substitutions diff --git a/meta-moblin/packages/mozilla-headless/mozilla-headless/buildfixhack.patch b/meta-moblin/packages/mozilla-headless/mozilla-headless/buildfixhack.patch new file mode 100644 index 000000000..31fc40f28 --- /dev/null +++ b/meta-moblin/packages/mozilla-headless/mozilla-headless/buildfixhack.patch @@ -0,0 +1,14 @@ +diff -r ad8be5166ccd layout/generic/nsFrame.h +--- a/layout/generic/nsFrame.h Tue Nov 17 19:24:56 2009 +0000 ++++ b/layout/generic/nsFrame.h Thu Nov 19 12:33:38 2009 +0000 +@@ -151,7 +151,7 @@ + // Left undefined; nsFrame objects are never allocated from the heap. + void* operator new(size_t sz) CPP_THROW_NEW; + +-protected: ++public: + // Overridden to prevent the global delete from being called, since + // the memory came out of an arena instead of the heap. + // + + diff --git a/meta-moblin/packages/mozilla-headless/mozilla-headless/configurefix-1a622cb7c384.patch b/meta-moblin/packages/mozilla-headless/mozilla-headless/configurefix-1a622cb7c384.patch new file mode 100644 index 000000000..d31f91a42 --- /dev/null +++ b/meta-moblin/packages/mozilla-headless/mozilla-headless/configurefix-1a622cb7c384.patch @@ -0,0 +1,764 @@ +Index: offscreen/configure.in +=================================================================== +--- offscreen.orig/configure.in 2009-06-12 14:15:55.000000000 +0100 ++++ offscreen/configure.in 2009-06-12 14:15:55.000000000 +0100 +@@ -62,7 +62,6 @@ + + AC_PREREQ(2.13) + AC_INIT(config/config.mk) +-AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf) + AC_CANONICAL_SYSTEM + TARGET_CPU="${target_cpu}" + TARGET_VENDOR="${target_vendor}" +@@ -103,7 +102,6 @@ + _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS" + _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS" + _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS" +-_SUBDIR_CONFIG_ARGS="$ac_configure_args" + + dnl Set the version number of the libs included with mozilla + dnl ======================================================== +@@ -135,6 +133,9 @@ + + MSMANIFEST_TOOL= + ++ac_cv_have_usable_wchar_v2=no ++ac_cv_have_usable_wchar_option_v2=no ++ + dnl Set various checks + dnl ======================================================== + MISSING_X= +@@ -285,7 +286,7 @@ + ;; + esac + +-if test -n "$CROSS_COMPILE" && test "$target" != "$host"; then ++ + echo "cross compiling from $host to $target" + cross_compiling=yes + +@@ -323,7 +324,7 @@ + + AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works]) + AC_TRY_COMPILE([], [return(0);], +- [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])], ++ [ac_cv_prog_hostcc_works=1; AC_MSG_RESULT([yes])], + AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) ) + + CC="$HOST_CXX" +@@ -331,7 +332,7 @@ + + AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works]) + AC_TRY_COMPILE([], [return(0);], +- [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])], ++ [ac_cv_prog_hostcxx_works=1; AC_MSG_RESULT([yes])], + AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) ) + + CC=$_SAVE_CC +@@ -352,7 +353,7 @@ + ;; + esac + +- AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :) ++ CC="${target_alias}-gcc" + unset ac_cv_prog_CC + AC_PROG_CC + AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :) +@@ -376,37 +377,6 @@ + AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :) + AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :) + AC_DEFINE(CROSS_COMPILE) +-else +- AC_PROG_CC +- AC_PROG_CXX +- AC_PROG_RANLIB +- MOZ_PATH_PROGS(AS, $AS as, $CC) +- AC_CHECK_PROGS(AR, ar, :) +- AC_CHECK_PROGS(LD, ld, :) +- AC_CHECK_PROGS(STRIP, strip, :) +- AC_CHECK_PROGS(WINDRES, windres, :) +- if test -z "$HOST_CC"; then +- HOST_CC="$CC" +- fi +- if test -z "$HOST_CFLAGS"; then +- HOST_CFLAGS="$CFLAGS" +- fi +- if test -z "$HOST_CXX"; then +- HOST_CXX="$CXX" +- fi +- if test -z "$HOST_CXXFLAGS"; then +- HOST_CXXFLAGS="$CXXFLAGS" +- fi +- if test -z "$HOST_LDFLAGS"; then +- HOST_LDFLAGS="$LDFLAGS" +- fi +- if test -z "$HOST_RANLIB"; then +- HOST_RANLIB="$RANLIB" +- fi +- if test -z "$HOST_AR"; then +- HOST_AR="$AR" +- fi +-fi + + GNU_AS= + GNU_LD= +@@ -1606,6 +1576,7 @@ + ' + + dnl test that the macros actually work: ++ac_cv_static_assertion_macros_work="yes" + AC_MSG_CHECKING(that static assertion macros used in autoconf tests work) + AC_CACHE_VAL(ac_cv_static_assertion_macros_work, + [AC_LANG_SAVE +@@ -2767,9 +2738,13 @@ + AC_LANG_C + AC_HEADER_STDC + AC_C_CONST ++ac_cv_type_mode_t=yes + AC_TYPE_MODE_T ++ac_cv_type_off_t=yes + AC_TYPE_OFF_T ++ac_cv_type_pid_t=yes + AC_TYPE_PID_T ++ac_cv_type_size_t=yes + AC_TYPE_SIZE_T + AC_STRUCT_ST_BLKSIZE + AC_MSG_CHECKING(for siginfo_t) +@@ -3152,19 +3127,9 @@ + dnl We don't want to link against libm or libpthread on Darwin since + dnl they both are just symlinks to libSystem and explicitly linking + dnl against libSystem causes issues when debugging (see bug 299601). +-case $target in +-*-darwin*) +- ;; +-*-beos*) +- ;; +-*) + AC_CHECK_LIB(m, atan) + AC_CHECK_LIB(dl, dlopen, +- AC_CHECK_HEADER(dlfcn.h, +- LIBS="-ldl $LIBS" +- AC_DEFINE(HAVE_LIBDL))) +- ;; +-esac ++ AC_DEFINE(HAVE_LIBDL)) + + _SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -D_GNU_SOURCE" +@@ -7007,18 +6972,13 @@ + + # Demangle only for debug or trace-malloc builds + MOZ_DEMANGLE_SYMBOLS= +-if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then +- MOZ_DEMANGLE_SYMBOLS=1 +- AC_DEFINE(MOZ_DEMANGLE_SYMBOLS) +-fi ++ + AC_SUBST(MOZ_DEMANGLE_SYMBOLS) + + dnl ======================================================== + dnl = Support for gcc stack unwinding (from gcc 3.3) + dnl ======================================================== +-if test "$HAVE_GCC3_ABI" && test -z "$SKIP_LIBRARY_CHECKS"; then +- AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace)) +-fi ++ + + dnl ======================================================== + dnl = +@@ -7530,10 +7490,7 @@ + dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back + dnl to either libIDL1 or libIDL2. + if test -z "$_LIBIDL_FOUND"; then +- AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1) +- if test -z "$_LIBIDL_FOUND"; then + PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1) +- fi + fi + dnl + dnl If we don't have a libIDL config program & not cross-compiling, +@@ -7605,13 +7562,7 @@ + fi + + if test -z "$SKIP_PATH_CHECKS"; then +-if test -z "${GLIB_CFLAGS}" || test -z "${GLIB_LIBS}" ; then +- if test "$MOZ_ENABLE_GTK2" || test "$USE_ELF_DYNSTR_GC" || test "$MOZ_ENABLE_HEADLESS"; then + PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0) +- else +- AM_PATH_GLIB(${GLIB_VERSION}) +- fi +-fi + fi + + if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then +@@ -8457,10 +8408,7 @@ + HAVE_WCRTOMB + " + +-AC_CONFIG_HEADER( +-netwerk/necko-config.h +-xpcom/xpcom-config.h +-xpcom/xpcom-private.h ++AC_CONFIG_HEADER(netwerk/necko-config.h xpcom/xpcom-config.h xpcom/xpcom-private.h + ) + + # Save the defines header file before autoconf removes it. +@@ -8519,31 +8467,11 @@ + dnl To add new Makefiles, edit allmakefiles.sh. + dnl allmakefiles.sh sets the variable, MAKEFILES. + . ${srcdir}/allmakefiles.sh +-dnl +-dnl Run a perl script to quickly create the makefiles. +-dnl If it succeeds, it outputs a shell command to set CONFIG_FILES +-dnl for the files it cannot handle correctly. This way, config.status +-dnl will handle these files. +-dnl If it fails, nothing is set and config.status will run as usual. +-dnl +-dnl This does not change the $MAKEFILES variable. +-dnl +-dnl OpenVMS gets a line overflow on the long eval command, so use a temp file. +-dnl +-if test -z "${AS_PERL}"; then +-echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh +-else +-echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh +-fi +-. ./conftest.sh +-rm conftest.sh + + echo $MAKEFILES > unallmakefiles + + mv -f config/autoconf.mk config/autoconf.mk.orig 2> /dev/null + +-AC_OUTPUT($MAKEFILES) +- + dnl Prevent the regeneration of cairo-features.h forcing rebuilds of gfx stuff + if test "$CAIRO_FEATURES_H"; then + if cmp -s $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig; then +@@ -8569,14 +8497,14 @@ + HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS" + RC= + +-unset MAKEFILES +-unset CONFIG_FILES ++#unset MAKEFILES ++#unset CONFIG_FILES + + # No need to run subconfigures when building with LIBXUL_SDK_DIR + if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then + + if test -z "$MOZ_NATIVE_NSPR"; then +- ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla" ++ ac_configure_args="$ac_configure_args --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla" + if test -z "$MOZ_DEBUG"; then + ac_configure_args="$ac_configure_args --disable-debug" + fi +@@ -8592,8 +8520,7 @@ + if test -n "$USE_ARM_KUSER"; then + ac_configure_args="$ac_configure_args --with-arm-kuser" + fi +- AC_OUTPUT_SUBDIRS(nsprpub) +- ac_configure_args="$_SUBDIR_CONFIG_ARGS" ++ AC_CONFIG_SUBDIRS(nsprpub) + fi + + if test -z "$MOZ_NATIVE_NSPR"; then +@@ -8610,7 +8537,6 @@ + + # Run the SpiderMonkey 'configure' script. + dist=$MOZ_BUILD_ROOT/dist +-ac_configure_args="$_SUBDIR_CONFIG_ARGS" + ac_configure_args="$ac_configure_args --enable-threadsafe" + if test -z "$MOZ_NATIVE_NSPR"; then + ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'" +@@ -8627,11 +8553,14 @@ + export MOZ_MEMORY_LDFLAGS + fi + fi +-AC_OUTPUT_SUBDIRS(js/src) +-ac_configure_args="$_SUBDIR_CONFIG_ARGS" ++AC_CONFIG_SUBDIRS(js/src) + + fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR + ++m4_pattern_allow(AS_BIN) ++ ++AC_OUTPUT($MAKEFILES) ++ + dnl Prevent the regeneration of autoconf.mk forcing rebuilds of the world + dnl Needs to be at the end to respect possible changes from NSPR configure + if cmp -s config/autoconf.mk config/autoconf.mk.orig; then +Index: offscreen/js/src/configure.in +=================================================================== +--- offscreen.orig/js/src/configure.in 2009-06-12 14:15:55.000000000 +0100 ++++ offscreen/js/src/configure.in 2009-06-12 14:15:55.000000000 +0100 +@@ -62,7 +62,6 @@ + + AC_PREREQ(2.13) + AC_INIT(jsapi.h) +-AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf) + AC_CONFIG_HEADER(js-config.h) + AC_CANONICAL_SYSTEM + TARGET_CPU="${target_cpu}" +@@ -101,6 +100,9 @@ + _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS" + _SUBDIR_CONFIG_ARGS="$ac_configure_args" + ++ac_cv_have_usable_wchar_v2=no ++ac_cv_have_usable_wchar_option_v2=no ++ + dnl Set the version number of the libs included with mozilla + dnl ======================================================== + NSPR_VERSION=4 +@@ -113,6 +115,8 @@ + + MSMANIFEST_TOOL= + ++m4_pattern_allow(AS_BIN) ++ + dnl Set various checks + dnl ======================================================== + MISSING_X= +@@ -198,7 +202,7 @@ + + if test "$COMPILE_ENVIRONMENT"; then + +-if test "$target" != "$host"; then ++ + echo "cross compiling from $host to $target" + + _SAVE_CC="$CC" +@@ -235,7 +239,7 @@ + + AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works]) + AC_TRY_COMPILE([], [return(0);], +- [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])], ++ [ac_cv_prog_hostcc_works=1; AC_MSG_RESULT([yes])], + AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) ) + + CC="$HOST_CXX" +@@ -243,7 +247,7 @@ + + AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works]) + AC_TRY_COMPILE([], [return(0);], +- [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])], ++ [ac_cv_prog_hostcxx_works=1; AC_MSG_RESULT([yes])], + AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) ) + + CC=$_SAVE_CC +@@ -298,7 +302,7 @@ + ;; + esac + +- AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :) ++ CC="${target_alias}-gcc" + unset ac_cv_prog_CC + AC_PROG_CC + AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :) +@@ -328,37 +332,6 @@ + dnl able to run ppc code in a translated environment, making a cross + dnl compiler appear native. So we override that here. + cross_compiling=yes +-else +- AC_PROG_CC +- AC_PROG_CXX +- AC_PROG_RANLIB +- MOZ_PATH_PROGS(AS, $AS as, $CC) +- AC_CHECK_PROGS(AR, ar, :) +- AC_CHECK_PROGS(LD, ld, :) +- AC_CHECK_PROGS(STRIP, strip, :) +- AC_CHECK_PROGS(WINDRES, windres, :) +- if test -z "$HOST_CC"; then +- HOST_CC="$CC" +- fi +- if test -z "$HOST_CFLAGS"; then +- HOST_CFLAGS="$CFLAGS" +- fi +- if test -z "$HOST_CXX"; then +- HOST_CXX="$CXX" +- fi +- if test -z "$HOST_CXXFLAGS"; then +- HOST_CXXFLAGS="$CXXFLAGS" +- fi +- if test -z "$HOST_LDFLAGS"; then +- HOST_LDFLAGS="$LDFLAGS" +- fi +- if test -z "$HOST_RANLIB"; then +- HOST_RANLIB="$RANLIB" +- fi +- if test -z "$HOST_AR"; then +- HOST_AR="$AR" +- fi +-fi + + GNU_AS= + GNU_LD= +@@ -1424,6 +1397,8 @@ + fi # GNU_CC + fi # COMPILE_ENVIRONMENT + ++ac_cv_static_assertion_macros_work=yes ++ + dnl ================================================================= + dnl Set up and test static assertion macros used to avoid AC_TRY_RUN, + dnl which is bad when cross compiling. +@@ -2579,9 +2554,13 @@ + AC_LANG_C + AC_HEADER_STDC + AC_C_CONST ++ac_cv_type_mode_t=yes + AC_TYPE_MODE_T ++ac_cv_type_off_t=yes + AC_TYPE_OFF_T ++ac_cv_type_pid_t=yes + AC_TYPE_PID_T ++ac_cv_type_size_t=yes + AC_TYPE_SIZE_T + AC_STRUCT_ST_BLKSIZE + AC_MSG_CHECKING(for siginfo_t) +@@ -2606,7 +2585,8 @@ + + AC_CHECK_HEADER(stdint.h) + if test "$ac_cv_header_stdint_h" = yes; then +- AC_DEFINE(JS_HAVE_STDINT_H) ++ AC_DEFINE(JS_HAVE_STDINT_H, 1, [have stdint.h]) ++ AC_DEFINE(HAVE_STDINT_H) + else + dnl We'll figure them out for ourselves. List more likely types + dnl earlier. If we ever really encounter a size for which none of +@@ -3004,10 +2984,7 @@ + ;; + *) + AC_CHECK_LIB(m, atan) +- AC_CHECK_LIB(dl, dlopen, +- AC_CHECK_HEADER(dlfcn.h, +- LIBS="-ldl $LIBS" +- AC_DEFINE(HAVE_LIBDL))) ++ AC_CHECK_LIB(dl, dlopen, AC_DEFINE(HAVE_LIBDL)) + ;; + esac + +@@ -3903,6 +3880,7 @@ + [ --with-nspr-libs=LIBS Pass LIBS to LD when linking code that uses NSPR. + See --with-nspr-cflags for more details.], + NSPR_LIBS=$withval) ++$NSPR_LIBS="$NSPR_LIBS -L$(LIBXUL_DIST)/sdk/lib" + AC_SUBST(NSPR_CFLAGS) + AC_SUBST(NSPR_LIBS) + +@@ -4512,18 +4490,11 @@ + + # Demangle only for debug or trace-malloc builds + MOZ_DEMANGLE_SYMBOLS= +-if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then +- MOZ_DEMANGLE_SYMBOLS=1 +- AC_DEFINE(MOZ_DEMANGLE_SYMBOLS) +-fi + AC_SUBST(MOZ_DEMANGLE_SYMBOLS) + + dnl ======================================================== + dnl = Support for gcc stack unwinding (from gcc 3.3) + dnl ======================================================== +-if test "$HAVE_GCC3_ABI" && test -z "$SKIP_LIBRARY_CHECKS"; then +- AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace)) +-fi + + dnl ======================================================== + dnl = +@@ -5231,6 +5202,8 @@ + done + AC_SUBST(LIBS_PATH) + ++ ++ + dnl ======================================================== + dnl JavaScript shell + dnl ======================================================== +@@ -5371,3 +5344,4 @@ + # 'js-config' in Makefile.in. + AC_MSG_RESULT(invoking make to create js-config script) + $MAKE js-config ++ +Index: offscreen/nsprpub/configure.in +=================================================================== +--- offscreen.orig/nsprpub/configure.in 2009-06-12 14:15:55.000000000 +0100 ++++ offscreen/nsprpub/configure.in 2009-06-12 14:15:55.000000000 +0100 +@@ -42,7 +42,6 @@ + AC_PREREQ(2.12) + AC_INIT(config/libc_r.h) + +-AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf) + AC_CANONICAL_SYSTEM + + dnl ======================================================== +@@ -396,7 +395,7 @@ + dnl ======================================================== + dnl Checks for compilers. + dnl ======================================================== +-if test "$target" != "$host"; then ++ + echo "cross compiling from $host to $target" + cross_compiling=yes + +@@ -423,7 +422,7 @@ + + AC_MSG_CHECKING([whether the $host compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works]) + AC_TRY_COMPILE([], [return(0);], +- [ac_cv_prog_host_cc_works=1 AC_MSG_RESULT([yes])], ++ [ac_cv_prog_host_cc_works=1; AC_MSG_RESULT([yes])], + AC_MSG_ERROR([installation or configuration problem: $host compiler $HOST_CC cannot create executables.]) ) + + CC=$_SAVE_CC +@@ -444,7 +443,7 @@ + ;; + esac + +- AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", echo) ++ CC="${target_alias}-gcc" + unset ac_cv_prog_CC + AC_PROG_CC + if test -n "$USE_CPLUS"; then +@@ -470,30 +469,6 @@ + AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", echo) + AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", echo) + +-else +- AC_PROG_CC +- if test -n "$USE_CPLUS"; then +- if test "$CC" = "cl" -a -z "$CXX"; then +- CXX=$CC +- else +- AC_PROG_CXX +- fi +- fi +- AC_PROG_CPP +- AC_PROG_RANLIB +- AC_PATH_PROGS(AS, as, $CC) +- AC_PATH_PROGS(AR, ar, echo not_ar) +- AC_PATH_PROGS(LD, ld link, echo not_ld) +- AC_PATH_PROGS(STRIP, strip, echo not_strip) +- AC_PATH_PROGS(WINDRES, windres, echo not_windres) +- if test -z "$HOST_CC"; then +- HOST_CC="$CC" +- fi +- if test -z "$HOST_CFLAGS"; then +- HOST_CFLAGS="$CFLAGS" +- fi +-fi +- + if test "$GCC" = "yes"; then + GNU_CC=1 + fi +@@ -514,11 +489,8 @@ + ;; + esac + +-if test "$cross_compiling" = "yes"; then ++ + CROSS_COMPILE=1 +-else +- CROSS_COMPILE= +-fi + + dnl ======================================================== + dnl Check for gcc -pipe support +@@ -2283,10 +2255,7 @@ + *-darwin*|*-beos*) + ;; + *) +- AC_CHECK_LIB(dl, dlopen, +- AC_CHECK_HEADER(dlfcn.h, +- OS_LIBS="-ldl $OS_LIBS")) +- ;; ++ AC_CHECK_LIB(dl, dlopen) + esac + + +@@ -2904,6 +2873,8 @@ + dnl pr/tests/w16gui/Makefile + dnl tools/Makefile + ++m4_pattern_allow(AS_BIN) ++ + if test -z "$USE_PTHREADS" && test -z "$USE_BTHREADS"; then + MAKEFILES="$MAKEFILES pr/src/threads/combined/Makefile" + elif test -n "$USE_PTHREADS"; then +@@ -2919,3 +2890,5 @@ + echo $MAKEFILES > unallmakefiles + + AC_OUTPUT([$MAKEFILES], [chmod +x config/nspr-config]) ++ ++ +Index: offscreen/js/src/Makefile.in +=================================================================== +--- offscreen.orig/js/src/Makefile.in 2009-06-12 14:15:55.000000000 +0100 ++++ offscreen/js/src/Makefile.in 2009-06-12 14:15:55.000000000 +0100 +@@ -514,20 +514,8 @@ + + export:: jsautocfg.h + +-ifeq (,$(CROSS_COMPILE)$(GNU_CC)$(filter-out WINNT,$(OS_ARCH))) + jsautocfg.h: + touch $@ +-else +-ifeq ($(OS_ARCH),WINCE) +-jsautocfg.h: +- touch $@ +-else +-jsautocfg.h: jscpucfg$(HOST_BIN_SUFFIX) +- @rm -f $@ jsautocfg.tmp +- ./jscpucfg > jsautocfg.tmp +- mv jsautocfg.tmp $@ +-endif +-endif + + # jscpucfg is a strange target + # Needs to be built with the host compiler but needs to include +@@ -557,7 +545,7 @@ + echo no need to build jscpucfg $< + else + jscpucfg$(HOST_BIN_SUFFIX): jscpucfg.cpp Makefile.in +- $(HOST_CXX) $(HOST_CXXFLAGS) $(JSCPUCFG_DEFINES) $(DEFINES) $(NSPR_CFLAGS) $(HOST_OUTOPTION)$@ $< ++ $(HOST_CXX) $(HOST_CXXFLAGS) $(JSCPUCFG_DEFINES) $(DEFINES) -I$(DIST)/sdk/include $(NSPR_CFLAGS) $(HOST_OUTOPTION)$@ $< + endif + endif + +Index: offscreen/js/src/xpconnect/loader/mozJSComponentLoader.cpp +=================================================================== +--- offscreen.orig/js/src/xpconnect/loader/mozJSComponentLoader.cpp 2009-06-12 14:15:55.000000000 +0100 ++++ offscreen/js/src/xpconnect/loader/mozJSComponentLoader.cpp 2009-06-12 14:15:55.000000000 +0100 +@@ -47,6 +47,8 @@ + + #include + ++#include "mozilla-config.h" ++ + #include "prlog.h" + + #include "nsCOMPtr.h" +Index: offscreen/js/src/xpconnect/loader/mozJSSubScriptLoader.cpp +=================================================================== +--- offscreen.orig/js/src/xpconnect/loader/mozJSSubScriptLoader.cpp 2009-06-12 14:15:55.000000000 +0100 ++++ offscreen/js/src/xpconnect/loader/mozJSSubScriptLoader.cpp 2009-06-12 14:15:55.000000000 +0100 +@@ -39,6 +39,8 @@ + * + * ***** END LICENSE BLOCK ***** */ + ++#include "mozilla-config.h" ++ + #if !defined(XPCONNECT_STANDALONE) && !defined(NO_SUBSCRIPT_LOADER) + + #include "mozJSSubScriptLoader.h" +Index: offscreen/modules/lcms/include/icc34.h +=================================================================== +--- offscreen.orig/modules/lcms/include/icc34.h 2009-06-12 14:15:55.000000000 +0100 ++++ offscreen/modules/lcms/include/icc34.h 2009-06-12 14:15:55.000000000 +0100 +@@ -144,7 +144,7 @@ + */ + + +-#ifdef PACKAGE_NAME ++#if 0 + /* + June 9, 2003, Adapted for use with configure by Bob Friesenhahn + Added the stupid check for autoconf by Marti Maria. +Index: offscreen/toolkit/mozapps/update/src/updater/Makefile.in +=================================================================== +--- offscreen.orig/toolkit/mozapps/update/src/updater/Makefile.in 2009-06-12 14:15:55.000000000 +0100 ++++ offscreen/toolkit/mozapps/update/src/updater/Makefile.in 2009-06-12 14:15:55.000000000 +0100 +@@ -60,7 +60,7 @@ + + LIBS += \ + $(DEPTH)/modules/libmar/src/$(LIB_PREFIX)mar.$(LIB_SUFFIX) \ +- $(BZ2_LIBS) \ ++ $(BZ2_LIBS) -lpthread \ + $(NULL) + + ifeq ($(OS_ARCH),WINNT) +Index: offscreen/xpcom/sample/program/Makefile.in +=================================================================== +--- offscreen.orig/xpcom/sample/program/Makefile.in 2009-06-12 14:15:55.000000000 +0100 ++++ offscreen/xpcom/sample/program/Makefile.in 2009-06-12 14:15:55.000000000 +0100 +@@ -57,7 +57,7 @@ + # that the application be linked against the XPCOM dynamic library or the NSPR + # dynamic libraries. + LIBS = \ +- $(XPCOM_STANDALONE_GLUE_LDOPTS) \ ++ $(XPCOM_STANDALONE_GLUE_LDOPTS) -ldl \ + $(NULL) + + # Need to link with CoreFoundation on Mac +Index: offscreen/xpcom/tools/registry/Makefile.in +=================================================================== +--- offscreen.orig/xpcom/tools/registry/Makefile.in 2009-06-12 14:15:55.000000000 +0100 ++++ offscreen/xpcom/tools/registry/Makefile.in 2009-06-12 14:15:55.000000000 +0100 +@@ -54,7 +54,7 @@ + SIMPLE_PROGRAMS = $(CPPSRCS:.cpp=$(BIN_SUFFIX)) + + LIBS = \ +- $(XPCOM_STANDALONE_GLUE_LDOPTS) \ ++ $(XPCOM_STANDALONE_GLUE_LDOPTS) -ldl \ + $(NULL) + + # Need to link with CoreFoundation on Mac +Index: offscreen/xulrunner/app/Makefile.in +=================================================================== +--- offscreen.orig/xulrunner/app/Makefile.in 2009-06-12 14:15:55.000000000 +0100 ++++ offscreen/xulrunner/app/Makefile.in 2009-06-12 14:15:55.000000000 +0100 +@@ -184,7 +184,7 @@ + RCFLAGS += -DXULRUNNER_ICO=\"$(DIST)/branding/xulrunner.ico\" -DDOCUMENT_ICO=\"$(DIST)/branding/document.ico\" + endif + +-LIBS += $(JEMALLOC_LIBS) ++LIBS += $(JEMALLOC_LIBS) -lpthread -ldl + + include $(topsrcdir)/config/rules.mk + +Index: offscreen/xulrunner/stub/Makefile.in +=================================================================== +--- offscreen.orig/xulrunner/stub/Makefile.in 2009-06-12 14:15:55.000000000 +0100 ++++ offscreen/xulrunner/stub/Makefile.in 2009-06-12 14:15:55.000000000 +0100 +@@ -101,7 +101,7 @@ + endif + endif + +-LIBS += $(JEMALLOC_LIBS) ++LIBS += $(JEMALLOC_LIBS) -lpthread -ldl + + include $(topsrcdir)/config/rules.mk + +Index: offscreen/modules/plugin/test/testplugin/Makefile.in +=================================================================== +--- offscreen.orig/modules/plugin/test/testplugin/Makefile.in 2009-06-12 14:15:55.000000000 +0100 ++++ offscreen/modules/plugin/test/testplugin/Makefile.in 2009-06-12 14:15:55.000000000 +0100 +@@ -63,9 +63,7 @@ + CMMSRCS = nptest_macosx.mm + endif + +-ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2) + CPPSRCS += nptest_gtk2.cpp +-endif + + ifeq ($(MOZ_WIDGET_TOOLKIT),os2) + CPPSRCS += nptest_os2.cpp +Index: offscreen/js/src/aclocal.m4 +=================================================================== +--- offscreen.orig/js/src/aclocal.m4 2009-06-12 14:15:55.000000000 +0100 ++++ offscreen/js/src/aclocal.m4 2009-06-12 14:15:55.000000000 +0100 +@@ -9,4 +9,3 @@ + builtin(include, build/autoconf/moznbytetype.m4)dnl + builtin(include, build/autoconf/mozprog.m4)dnl + +-MOZ_PROG_CHECKMSYS() +Index: offscreen/toolkit/toolkit-makefiles.sh +=================================================================== +--- offscreen.orig/toolkit/toolkit-makefiles.sh 2009-06-12 14:19:59.000000000 +0100 ++++ offscreen/toolkit/toolkit-makefiles.sh 2009-06-12 14:20:09.000000000 +0100 +@@ -342,7 +342,6 @@ + modules/plugin/sdk/samples/Makefile + modules/plugin/sdk/samples/common/Makefile + modules/plugin/sdk/samples/basic/windows/Makefile +- modules/plugin/sdk/samples/basic/unix/Makefile + modules/plugin/sdk/samples/winless/windows/Makefile + " + diff --git a/meta-moblin/packages/mozilla-headless/mozilla-headless/configurefix.patch b/meta-moblin/packages/mozilla-headless/mozilla-headless/configurefix.patch new file mode 100644 index 000000000..7ee1211f1 --- /dev/null +++ b/meta-moblin/packages/mozilla-headless/mozilla-headless/configurefix.patch @@ -0,0 +1,774 @@ +Index: offscreen/configure.in +=================================================================== +--- offscreen.orig/configure.in 2009-12-09 13:10:12.000000000 +0000 ++++ offscreen/configure.in 2009-12-09 13:38:51.000000000 +0000 +@@ -64,7 +64,6 @@ + + AC_PREREQ(2.13) + AC_INIT(config/config.mk) +-AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf) + AC_CANONICAL_SYSTEM + TARGET_CPU="${target_cpu}" + TARGET_VENDOR="${target_vendor}" +@@ -106,7 +105,6 @@ + _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS" + _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS" + _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS" +-_SUBDIR_CONFIG_ARGS="$ac_configure_args" + + dnl Set the version number of the libs included with mozilla + dnl ======================================================== +@@ -139,6 +137,9 @@ + + MSMANIFEST_TOOL= + ++ac_cv_have_usable_wchar_v2=no ++ac_cv_have_usable_wchar_option_v2=no ++ + dnl Set various checks + dnl ======================================================== + MISSING_X= +@@ -308,7 +309,7 @@ + ;; + esac + +-if test -n "$CROSS_COMPILE" && test "$target" != "$host"; then ++ + echo "cross compiling from $host to $target" + cross_compiling=yes + +@@ -346,7 +347,7 @@ + + AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works]) + AC_TRY_COMPILE([], [return(0);], +- [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])], ++ [ac_cv_prog_hostcc_works=1; AC_MSG_RESULT([yes])], + AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) ) + + CC="$HOST_CXX" +@@ -354,7 +355,7 @@ + + AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works]) + AC_TRY_COMPILE([], [return(0);], +- [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])], ++ [ac_cv_prog_hostcxx_works=1; AC_MSG_RESULT([yes])], + AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) ) + + CC=$_SAVE_CC +@@ -375,7 +376,7 @@ + ;; + esac + +- AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :) ++ CC="${target_alias}-gcc" + unset ac_cv_prog_CC + AC_PROG_CC + AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :) +@@ -399,37 +400,6 @@ + AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :) + AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :) + AC_DEFINE(CROSS_COMPILE) +-else +- AC_PROG_CC +- AC_PROG_CXX +- AC_PROG_RANLIB +- MOZ_PATH_PROGS(AS, $AS as, $CC) +- AC_CHECK_PROGS(AR, ar, :) +- AC_CHECK_PROGS(LD, ld, :) +- AC_CHECK_PROGS(STRIP, strip, :) +- AC_CHECK_PROGS(WINDRES, windres, :) +- if test -z "$HOST_CC"; then +- HOST_CC="$CC" +- fi +- if test -z "$HOST_CFLAGS"; then +- HOST_CFLAGS="$CFLAGS" +- fi +- if test -z "$HOST_CXX"; then +- HOST_CXX="$CXX" +- fi +- if test -z "$HOST_CXXFLAGS"; then +- HOST_CXXFLAGS="$CXXFLAGS" +- fi +- if test -z "$HOST_LDFLAGS"; then +- HOST_LDFLAGS="$LDFLAGS" +- fi +- if test -z "$HOST_RANLIB"; then +- HOST_RANLIB="$RANLIB" +- fi +- if test -z "$HOST_AR"; then +- HOST_AR="$AR" +- fi +-fi + + GNU_AS= + GNU_LD= +@@ -1586,6 +1556,7 @@ + ' + + dnl test that the macros actually work: ++ac_cv_static_assertion_macros_work="yes" + AC_MSG_CHECKING(that static assertion macros used in autoconf tests work) + AC_CACHE_VAL(ac_cv_static_assertion_macros_work, + [AC_LANG_SAVE +@@ -2770,9 +2741,13 @@ + AC_LANG_C + AC_HEADER_STDC + AC_C_CONST ++ac_cv_type_mode_t=yes + AC_TYPE_MODE_T ++ac_cv_type_off_t=yes + AC_TYPE_OFF_T ++ac_cv_type_pid_t=yes + AC_TYPE_PID_T ++ac_cv_type_size_t=yes + AC_TYPE_SIZE_T + AC_STRUCT_ST_BLKSIZE + AC_MSG_CHECKING(for siginfo_t) +@@ -3174,21 +3149,9 @@ + dnl We don't want to link against libm or libpthread on Darwin since + dnl they both are just symlinks to libSystem and explicitly linking + dnl against libSystem causes issues when debugging (see bug 299601). +-case $target in +-*-darwin*) +- ;; +-*-beos*) +- ;; +-*-os2*) +- ;; +-*) + AC_CHECK_LIB(m, atan) + AC_CHECK_LIB(dl, dlopen, +- AC_CHECK_HEADER(dlfcn.h, +- LIBS="-ldl $LIBS" +- AC_DEFINE(HAVE_LIBDL))) +- ;; +-esac ++ AC_DEFINE(HAVE_LIBDL)) + + _SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -D_GNU_SOURCE" +@@ -6889,18 +6852,13 @@ + + # Demangle only for debug or trace-malloc builds + MOZ_DEMANGLE_SYMBOLS= +-if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then +- MOZ_DEMANGLE_SYMBOLS=1 +- AC_DEFINE(MOZ_DEMANGLE_SYMBOLS) +-fi ++ + AC_SUBST(MOZ_DEMANGLE_SYMBOLS) + + dnl ======================================================== + dnl = Support for gcc stack unwinding (from gcc 3.3) + dnl ======================================================== +-if test "$HAVE_GCC3_ABI" && test -z "$SKIP_LIBRARY_CHECKS"; then +- AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace)) +-fi ++ + + dnl ======================================================== + dnl = +@@ -7420,10 +7378,7 @@ + dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back + dnl to either libIDL1 or libIDL2. + if test -z "$_LIBIDL_FOUND"; then +- AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1) +- if test -z "$_LIBIDL_FOUND"; then + PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1) +- fi + fi + dnl + dnl If we don't have a libIDL config program & not cross-compiling, +@@ -7495,13 +7450,7 @@ + fi + + if test -z "$SKIP_PATH_CHECKS"; then +-if test -z "${GLIB_CFLAGS}" || test -z "${GLIB_LIBS}" ; then +- if test "$MOZ_ENABLE_GTK2" || test "$USE_ELF_DYNSTR_GC" || test "$MOZ_ENABLE_HEADLESS"; then + PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0) +- else +- AM_PATH_GLIB(${GLIB_VERSION}) +- fi +-fi + fi + + if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then +@@ -8278,10 +8227,7 @@ + HAVE_WCRTOMB + " + +-AC_CONFIG_HEADER( +-netwerk/necko-config.h +-xpcom/xpcom-config.h +-xpcom/xpcom-private.h ++AC_CONFIG_HEADER(netwerk/necko-config.h xpcom/xpcom-config.h xpcom/xpcom-private.h + ) + + # Save the defines header file before autoconf removes it. +@@ -8340,31 +8286,11 @@ + dnl To add new Makefiles, edit allmakefiles.sh. + dnl allmakefiles.sh sets the variable, MAKEFILES. + . ${srcdir}/allmakefiles.sh +-dnl +-dnl Run a perl script to quickly create the makefiles. +-dnl If it succeeds, it outputs a shell command to set CONFIG_FILES +-dnl for the files it cannot handle correctly. This way, config.status +-dnl will handle these files. +-dnl If it fails, nothing is set and config.status will run as usual. +-dnl +-dnl This does not change the $MAKEFILES variable. +-dnl +-dnl OpenVMS gets a line overflow on the long eval command, so use a temp file. +-dnl +-if test -z "${AS_PERL}"; then +-echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh +-else +-echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh +-fi +-. ./conftest.sh +-rm conftest.sh + + echo $MAKEFILES > unallmakefiles + + mv -f config/autoconf.mk config/autoconf.mk.orig 2> /dev/null + +-AC_OUTPUT($MAKEFILES) +- + dnl Prevent the regeneration of cairo-features.h forcing rebuilds of gfx stuff + if test "$CAIRO_FEATURES_H"; then + if cmp -s $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig; then +@@ -8390,14 +8316,14 @@ + HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS" + RC= + +-unset MAKEFILES +-unset CONFIG_FILES ++#unset MAKEFILES ++#unset CONFIG_FILES + + # No need to run subconfigures when building with LIBXUL_SDK_DIR + if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then + + if test -z "$MOZ_NATIVE_NSPR"; then +- ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla" ++ ac_configure_args="$ac_configure_args --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla" + if test -z "$MOZ_DEBUG"; then + ac_configure_args="$ac_configure_args --disable-debug" + fi +@@ -8413,8 +8339,7 @@ + if test -n "$USE_ARM_KUSER"; then + ac_configure_args="$ac_configure_args --with-arm-kuser" + fi +- AC_OUTPUT_SUBDIRS(nsprpub) +- ac_configure_args="$_SUBDIR_CONFIG_ARGS" ++ AC_CONFIG_SUBDIRS(nsprpub) + fi + + if test -z "$MOZ_NATIVE_NSPR"; then +@@ -8431,7 +8356,6 @@ + + # Run the SpiderMonkey 'configure' script. + dist=$MOZ_BUILD_ROOT/dist +-ac_configure_args="$_SUBDIR_CONFIG_ARGS" + ac_configure_args="$ac_configure_args --enable-threadsafe" + if test -z "$MOZ_NATIVE_NSPR"; then + ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'" +@@ -8448,8 +8372,7 @@ + export MOZ_MEMORY_LDFLAGS + fi + fi +-AC_OUTPUT_SUBDIRS(js/src) +-ac_configure_args="$_SUBDIR_CONFIG_ARGS" ++AC_CONFIG_SUBDIRS(js/src) + + # Build jsctypes on the platforms we can. + if test "$BUILD_CTYPES"; then +@@ -8465,20 +8388,14 @@ + if test -n "$CROSS_COMPILE"; then + ac_configure_args="$ac_configure_args --build=$build --host=$target" + fi +- if test "$SOLARIS_SUNPRO_CC"; then +- # Always use gcc for libffi on Solaris +- old_cache_file=$cache_file +- cache_file=js/ctypes/libffi/config.cache +- ac_configure_args="$ac_configure_args CC=gcc" +- AC_OUTPUT_SUBDIRS(js/ctypes/libffi) +- cache_file=$old_cache_file +- else +- AC_OUTPUT_SUBDIRS(js/ctypes/libffi) +- fi +- ac_configure_args="$_SUBDIR_CONFIG_ARGS" ++ AC_CONFIG_SUBDIRS(js/ctypes/libffi) + fi + fi + ++m4_pattern_allow(AS_BIN) ++ ++AC_OUTPUT($MAKEFILES) ++ + fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR + + dnl Prevent the regeneration of autoconf.mk forcing rebuilds of the world +Index: offscreen/js/src/configure.in +=================================================================== +--- offscreen.orig/js/src/configure.in 2009-12-09 13:10:12.000000000 +0000 ++++ offscreen/js/src/configure.in 2009-12-09 13:38:51.000000000 +0000 +@@ -62,7 +62,6 @@ + + AC_PREREQ(2.13) + AC_INIT(jsapi.h) +-AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf) + AC_CONFIG_HEADER(js-config.h) + AC_CANONICAL_SYSTEM + TARGET_CPU="${target_cpu}" +@@ -101,6 +100,9 @@ + _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS" + _SUBDIR_CONFIG_ARGS="$ac_configure_args" + ++ac_cv_have_usable_wchar_v2=no ++ac_cv_have_usable_wchar_option_v2=no ++ + dnl Set the version number of the libs included with mozilla + dnl ======================================================== + NSPR_VERSION=4 +@@ -113,6 +115,8 @@ + + MSMANIFEST_TOOL= + ++m4_pattern_allow(AS_BIN) ++ + dnl Set various checks + dnl ======================================================== + MISSING_X= +@@ -212,7 +216,7 @@ + + if test "$COMPILE_ENVIRONMENT"; then + +-if test "$target" != "$host"; then ++ + echo "cross compiling from $host to $target" + + _SAVE_CC="$CC" +@@ -249,7 +253,7 @@ + + AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works]) + AC_TRY_COMPILE([], [return(0);], +- [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])], ++ [ac_cv_prog_hostcc_works=1; AC_MSG_RESULT([yes])], + AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) ) + + CC="$HOST_CXX" +@@ -257,7 +261,7 @@ + + AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works]) + AC_TRY_COMPILE([], [return(0);], +- [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])], ++ [ac_cv_prog_hostcxx_works=1; AC_MSG_RESULT([yes])], + AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) ) + + CC=$_SAVE_CC +@@ -312,7 +316,7 @@ + ;; + esac + +- AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :) ++ CC="${target_alias}-gcc" + unset ac_cv_prog_CC + AC_PROG_CC + AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :) +@@ -342,37 +346,6 @@ + dnl able to run ppc code in a translated environment, making a cross + dnl compiler appear native. So we override that here. + cross_compiling=yes +-else +- AC_PROG_CC +- AC_PROG_CXX +- AC_PROG_RANLIB +- MOZ_PATH_PROGS(AS, $AS as, $CC) +- AC_CHECK_PROGS(AR, ar, :) +- AC_CHECK_PROGS(LD, ld, :) +- AC_CHECK_PROGS(STRIP, strip, :) +- AC_CHECK_PROGS(WINDRES, windres, :) +- if test -z "$HOST_CC"; then +- HOST_CC="$CC" +- fi +- if test -z "$HOST_CFLAGS"; then +- HOST_CFLAGS="$CFLAGS" +- fi +- if test -z "$HOST_CXX"; then +- HOST_CXX="$CXX" +- fi +- if test -z "$HOST_CXXFLAGS"; then +- HOST_CXXFLAGS="$CXXFLAGS" +- fi +- if test -z "$HOST_LDFLAGS"; then +- HOST_LDFLAGS="$LDFLAGS" +- fi +- if test -z "$HOST_RANLIB"; then +- HOST_RANLIB="$RANLIB" +- fi +- if test -z "$HOST_AR"; then +- HOST_AR="$AR" +- fi +-fi + + GNU_AS= + GNU_LD= +@@ -1370,6 +1343,8 @@ + fi # GNU_CC + fi # COMPILE_ENVIRONMENT + ++ac_cv_static_assertion_macros_work=yes ++ + dnl ================================================================= + dnl Set up and test static assertion macros used to avoid AC_TRY_RUN, + dnl which is bad when cross compiling. +@@ -2557,9 +2532,13 @@ + AC_LANG_C + AC_HEADER_STDC + AC_C_CONST ++ac_cv_type_mode_t=yes + AC_TYPE_MODE_T ++ac_cv_type_off_t=yes + AC_TYPE_OFF_T ++ac_cv_type_pid_t=yes + AC_TYPE_PID_T ++ac_cv_type_size_t=yes + AC_TYPE_SIZE_T + AC_STRUCT_ST_BLKSIZE + AC_MSG_CHECKING(for siginfo_t) +@@ -2584,7 +2563,8 @@ + + AC_CHECK_HEADER(stdint.h) + if test "$ac_cv_header_stdint_h" = yes; then +- AC_DEFINE(JS_HAVE_STDINT_H) ++ AC_DEFINE(JS_HAVE_STDINT_H, 1, [have stdint.h]) ++ AC_DEFINE(HAVE_STDINT_H) + else + dnl We'll figure them out for ourselves. List more likely types + dnl earlier. If we ever really encounter a size for which none of +@@ -2938,10 +2918,7 @@ + ;; + *) + AC_CHECK_LIB(m, atan) +- AC_CHECK_LIB(dl, dlopen, +- AC_CHECK_HEADER(dlfcn.h, +- LIBS="-ldl $LIBS" +- AC_DEFINE(HAVE_LIBDL))) ++ AC_CHECK_LIB(dl, dlopen, AC_DEFINE(HAVE_LIBDL)) + ;; + esac + +@@ -3847,6 +3824,7 @@ + [ --with-nspr-libs=LIBS Pass LIBS to LD when linking code that uses NSPR. + See --with-nspr-cflags for more details.], + NSPR_LIBS=$withval) ++$NSPR_LIBS="$NSPR_LIBS -L$(LIBXUL_DIST)/sdk/lib" + AC_SUBST(NSPR_CFLAGS) + AC_SUBST(NSPR_LIBS) + +@@ -4386,18 +4364,11 @@ + + # Demangle only for debug or trace-malloc builds + MOZ_DEMANGLE_SYMBOLS= +-if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then +- MOZ_DEMANGLE_SYMBOLS=1 +- AC_DEFINE(MOZ_DEMANGLE_SYMBOLS) +-fi + AC_SUBST(MOZ_DEMANGLE_SYMBOLS) + + dnl ======================================================== + dnl = Support for gcc stack unwinding (from gcc 3.3) + dnl ======================================================== +-if test "$HAVE_GCC3_ABI" && test -z "$SKIP_LIBRARY_CHECKS"; then +- AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace)) +-fi + + dnl ======================================================== + dnl = +@@ -5097,6 +5068,8 @@ + + AC_HAVE_FUNCS(setlocale) + ++ ++ + dnl ======================================================== + dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW + dnl ======================================================== +@@ -5234,3 +5207,4 @@ + # 'js-config' in Makefile.in. + AC_MSG_RESULT(invoking make to create js-config script) + $MAKE js-config ++ +Index: offscreen/nsprpub/configure.in +=================================================================== +--- offscreen.orig/nsprpub/configure.in 2009-12-09 13:10:12.000000000 +0000 ++++ offscreen/nsprpub/configure.in 2009-12-09 13:10:12.000000000 +0000 +@@ -42,7 +42,6 @@ + AC_PREREQ(2.12) + AC_INIT(config/libc_r.h) + +-AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf) + AC_CANONICAL_SYSTEM + + dnl ======================================================== +@@ -396,7 +395,7 @@ + dnl ======================================================== + dnl Checks for compilers. + dnl ======================================================== +-if test "$target" != "$host"; then ++ + echo "cross compiling from $host to $target" + cross_compiling=yes + +@@ -423,7 +422,7 @@ + + AC_MSG_CHECKING([whether the $host compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works]) + AC_TRY_COMPILE([], [return(0);], +- [ac_cv_prog_host_cc_works=1 AC_MSG_RESULT([yes])], ++ [ac_cv_prog_host_cc_works=1; AC_MSG_RESULT([yes])], + AC_MSG_ERROR([installation or configuration problem: $host compiler $HOST_CC cannot create executables.]) ) + + CC=$_SAVE_CC +@@ -444,7 +443,7 @@ + ;; + esac + +- AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", echo) ++ CC="${target_alias}-gcc" + unset ac_cv_prog_CC + AC_PROG_CC + if test -n "$USE_CPLUS"; then +@@ -470,30 +469,6 @@ + AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", echo) + AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", echo) + +-else +- AC_PROG_CC +- if test -n "$USE_CPLUS"; then +- if test "$CC" = "cl" -a -z "$CXX"; then +- CXX=$CC +- else +- AC_PROG_CXX +- fi +- fi +- AC_PROG_CPP +- AC_PROG_RANLIB +- AC_PATH_PROGS(AS, as, $CC) +- AC_PATH_PROGS(AR, ar, echo not_ar) +- AC_PATH_PROGS(LD, ld link, echo not_ld) +- AC_PATH_PROGS(STRIP, strip, echo not_strip) +- AC_PATH_PROGS(WINDRES, windres, echo not_windres) +- if test -z "$HOST_CC"; then +- HOST_CC="$CC" +- fi +- if test -z "$HOST_CFLAGS"; then +- HOST_CFLAGS="$CFLAGS" +- fi +-fi +- + if test "$GCC" = "yes"; then + GNU_CC=1 + fi +@@ -514,11 +489,8 @@ + ;; + esac + +-if test "$cross_compiling" = "yes"; then ++ + CROSS_COMPILE=1 +-else +- CROSS_COMPILE= +-fi + + dnl ======================================================== + dnl Check for gcc -pipe support +@@ -2286,10 +2258,7 @@ + *-darwin*|*-beos*|*-os2*) + ;; + *) +- AC_CHECK_LIB(dl, dlopen, +- AC_CHECK_HEADER(dlfcn.h, +- OS_LIBS="-ldl $OS_LIBS")) +- ;; ++ AC_CHECK_LIB(dl, dlopen) + esac + + +@@ -2907,6 +2876,8 @@ + dnl pr/tests/w16gui/Makefile + dnl tools/Makefile + ++m4_pattern_allow(AS_BIN) ++ + if test -z "$USE_PTHREADS" && test -z "$USE_BTHREADS"; then + MAKEFILES="$MAKEFILES pr/src/threads/combined/Makefile" + elif test -n "$USE_PTHREADS"; then +@@ -2922,3 +2893,5 @@ + echo $MAKEFILES > unallmakefiles + + AC_OUTPUT([$MAKEFILES], [chmod +x config/nspr-config]) ++ ++ +Index: offscreen/js/src/Makefile.in +=================================================================== +--- offscreen.orig/js/src/Makefile.in 2009-12-09 13:10:12.000000000 +0000 ++++ offscreen/js/src/Makefile.in 2009-12-09 13:10:12.000000000 +0000 +@@ -513,20 +513,8 @@ + + export:: jsautocfg.h + +-ifeq (,$(CROSS_COMPILE)$(GNU_CC)$(filter-out WINNT,$(OS_ARCH))) + jsautocfg.h: + touch $@ +-else +-ifeq ($(OS_ARCH),WINCE) +-jsautocfg.h: +- touch $@ +-else +-jsautocfg.h: jscpucfg$(HOST_BIN_SUFFIX) +- @rm -f $@ jsautocfg.tmp +- ./jscpucfg > jsautocfg.tmp +- mv jsautocfg.tmp $@ +-endif +-endif + + # jscpucfg is a strange target + # Needs to be built with the host compiler but needs to include +@@ -556,7 +544,7 @@ + echo no need to build jscpucfg $< + else + jscpucfg$(HOST_BIN_SUFFIX): jscpucfg.cpp Makefile.in +- $(HOST_CXX) $(HOST_CXXFLAGS) $(JSCPUCFG_DEFINES) $(DEFINES) $(NSPR_CFLAGS) $(HOST_OUTOPTION)$@ $< ++ $(HOST_CXX) $(HOST_CXXFLAGS) $(JSCPUCFG_DEFINES) $(DEFINES) -I$(DIST)/sdk/include $(NSPR_CFLAGS) $(HOST_OUTOPTION)$@ $< + endif + endif + +Index: offscreen/js/src/xpconnect/loader/mozJSComponentLoader.cpp +=================================================================== +--- offscreen.orig/js/src/xpconnect/loader/mozJSComponentLoader.cpp 2009-12-09 13:10:12.000000000 +0000 ++++ offscreen/js/src/xpconnect/loader/mozJSComponentLoader.cpp 2009-12-09 13:10:12.000000000 +0000 +@@ -47,6 +47,8 @@ + + #include + ++#include "mozilla-config.h" ++ + #include "prlog.h" + + #include "nsCOMPtr.h" +Index: offscreen/js/src/xpconnect/loader/mozJSSubScriptLoader.cpp +=================================================================== +--- offscreen.orig/js/src/xpconnect/loader/mozJSSubScriptLoader.cpp 2009-12-09 13:10:12.000000000 +0000 ++++ offscreen/js/src/xpconnect/loader/mozJSSubScriptLoader.cpp 2009-12-09 13:10:12.000000000 +0000 +@@ -39,6 +39,8 @@ + * + * ***** END LICENSE BLOCK ***** */ + ++#include "mozilla-config.h" ++ + #if !defined(XPCONNECT_STANDALONE) && !defined(NO_SUBSCRIPT_LOADER) + + #include "mozJSSubScriptLoader.h" +Index: offscreen/toolkit/mozapps/update/src/updater/Makefile.in +=================================================================== +--- offscreen.orig/toolkit/mozapps/update/src/updater/Makefile.in 2009-12-09 13:10:12.000000000 +0000 ++++ offscreen/toolkit/mozapps/update/src/updater/Makefile.in 2009-12-09 13:10:12.000000000 +0000 +@@ -56,7 +56,7 @@ + + LIBS += \ + $(DEPTH)/modules/libmar/src/$(LIB_PREFIX)mar.$(LIB_SUFFIX) \ +- $(BZ2_LIBS) \ ++ $(BZ2_LIBS) -lpthread \ + $(NULL) + + ifeq ($(OS_ARCH),WINNT) +Index: offscreen/xpcom/sample/program/Makefile.in +=================================================================== +--- offscreen.orig/xpcom/sample/program/Makefile.in 2009-12-09 13:10:12.000000000 +0000 ++++ offscreen/xpcom/sample/program/Makefile.in 2009-12-09 13:10:12.000000000 +0000 +@@ -57,7 +57,7 @@ + # that the application be linked against the XPCOM dynamic library or the NSPR + # dynamic libraries. + LIBS = \ +- $(XPCOM_STANDALONE_GLUE_LDOPTS) \ ++ $(XPCOM_STANDALONE_GLUE_LDOPTS) -ldl \ + $(NULL) + + # Need to link with CoreFoundation on Mac +Index: offscreen/xpcom/tools/registry/Makefile.in +=================================================================== +--- offscreen.orig/xpcom/tools/registry/Makefile.in 2009-12-09 13:10:12.000000000 +0000 ++++ offscreen/xpcom/tools/registry/Makefile.in 2009-12-09 13:10:12.000000000 +0000 +@@ -54,7 +54,7 @@ + SIMPLE_PROGRAMS = $(CPPSRCS:.cpp=$(BIN_SUFFIX)) + + LIBS = \ +- $(XPCOM_STANDALONE_GLUE_LDOPTS) \ ++ $(XPCOM_STANDALONE_GLUE_LDOPTS) -ldl \ + $(NULL) + + # Need to link with CoreFoundation on Mac +Index: offscreen/xulrunner/app/Makefile.in +=================================================================== +--- offscreen.orig/xulrunner/app/Makefile.in 2009-12-09 13:10:12.000000000 +0000 ++++ offscreen/xulrunner/app/Makefile.in 2009-12-09 13:10:12.000000000 +0000 +@@ -173,7 +173,7 @@ + RCFLAGS += -DXULRUNNER_ICO=\"$(DIST)/branding/xulrunner.ico\" -DDOCUMENT_ICO=\"$(DIST)/branding/document.ico\" + endif + +-LIBS += $(JEMALLOC_LIBS) ++LIBS += $(JEMALLOC_LIBS) -lpthread -ldl + + include $(topsrcdir)/config/rules.mk + +Index: offscreen/xulrunner/stub/Makefile.in +=================================================================== +--- offscreen.orig/xulrunner/stub/Makefile.in 2009-12-09 13:10:12.000000000 +0000 ++++ offscreen/xulrunner/stub/Makefile.in 2009-12-09 13:10:12.000000000 +0000 +@@ -100,7 +100,7 @@ + endif + endif + +-LIBS += $(JEMALLOC_LIBS) ++LIBS += $(JEMALLOC_LIBS) -lpthread -ldl + + include $(topsrcdir)/config/rules.mk + +Index: offscreen/modules/plugin/test/testplugin/Makefile.in +=================================================================== +--- offscreen.orig/modules/plugin/test/testplugin/Makefile.in 2009-12-09 13:10:12.000000000 +0000 ++++ offscreen/modules/plugin/test/testplugin/Makefile.in 2009-12-09 13:10:12.000000000 +0000 +@@ -60,9 +60,7 @@ + CMMSRCS = nptest_macosx.mm + endif + +-ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2) + CPPSRCS += nptest_gtk2.cpp +-endif + + ifeq ($(MOZ_WIDGET_TOOLKIT),os2) + CPPSRCS += nptest_os2.cpp +Index: offscreen/js/src/aclocal.m4 +=================================================================== +--- offscreen.orig/js/src/aclocal.m4 2009-12-09 13:10:12.000000000 +0000 ++++ offscreen/js/src/aclocal.m4 2009-12-09 13:39:01.000000000 +0000 +@@ -8,6 +8,4 @@ + builtin(include, build/autoconf/altoptions.m4)dnl + builtin(include, build/autoconf/moznbytetype.m4)dnl + builtin(include, build/autoconf/mozprog.m4)dnl +-builtin(include, build/autoconf/acwinpaths.m4)dnl + +-MOZ_PROG_CHECKMSYS() +Index: offscreen/toolkit/toolkit-makefiles.sh +=================================================================== +--- offscreen.orig/toolkit/toolkit-makefiles.sh 2009-12-09 13:10:12.000000000 +0000 ++++ offscreen/toolkit/toolkit-makefiles.sh 2009-12-09 13:10:12.000000000 +0000 +@@ -369,7 +369,6 @@ + modules/plugin/sdk/samples/Makefile + modules/plugin/sdk/samples/common/Makefile + modules/plugin/sdk/samples/basic/windows/Makefile +- modules/plugin/sdk/samples/basic/unix/Makefile + modules/plugin/sdk/samples/winless/windows/Makefile + " + diff --git a/meta-moblin/packages/mozilla-headless/mozilla-headless/i386/jsautocfg.h b/meta-moblin/packages/mozilla-headless/mozilla-headless/i386/jsautocfg.h new file mode 100644 index 000000000..94b44f8e1 --- /dev/null +++ b/meta-moblin/packages/mozilla-headless/mozilla-headless/i386/jsautocfg.h @@ -0,0 +1,21 @@ +#ifndef js_cpucfg___ +#define js_cpucfg___ + +/* AUTOMATICALLY GENERATED - DO NOT EDIT */ + +#define IS_LITTLE_ENDIAN 1 +#undef IS_BIG_ENDIAN + + +#define JS_BYTES_PER_WORD 4L +#define JS_BYTES_PER_DOUBLE 8L +#define JS_BITS_PER_WORD_LOG2 5L +#define JS_ALIGN_OF_POINTER 4L + +#define JS_THREADSAFE 1 + +#define JS_STACK_GROWTH_DIRECTION (-1) + +#define JS_HAVE_LONG_LONG + +#endif /* js_cpucfg___ */ diff --git a/meta-moblin/packages/mozilla-headless/mozilla-headless/i486/jsautocfg.h b/meta-moblin/packages/mozilla-headless/mozilla-headless/i486/jsautocfg.h new file mode 100644 index 000000000..94b44f8e1 --- /dev/null +++ b/meta-moblin/packages/mozilla-headless/mozilla-headless/i486/jsautocfg.h @@ -0,0 +1,21 @@ +#ifndef js_cpucfg___ +#define js_cpucfg___ + +/* AUTOMATICALLY GENERATED - DO NOT EDIT */ + +#define IS_LITTLE_ENDIAN 1 +#undef IS_BIG_ENDIAN + + +#define JS_BYTES_PER_WORD 4L +#define JS_BYTES_PER_DOUBLE 8L +#define JS_BITS_PER_WORD_LOG2 5L +#define JS_ALIGN_OF_POINTER 4L + +#define JS_THREADSAFE 1 + +#define JS_STACK_GROWTH_DIRECTION (-1) + +#define JS_HAVE_LONG_LONG + +#endif /* js_cpucfg___ */ diff --git a/meta-moblin/packages/mozilla-headless/mozilla-headless/i586/jsautocfg.h b/meta-moblin/packages/mozilla-headless/mozilla-headless/i586/jsautocfg.h new file mode 100644 index 000000000..94b44f8e1 --- /dev/null +++ b/meta-moblin/packages/mozilla-headless/mozilla-headless/i586/jsautocfg.h @@ -0,0 +1,21 @@ +#ifndef js_cpucfg___ +#define js_cpucfg___ + +/* AUTOMATICALLY GENERATED - DO NOT EDIT */ + +#define IS_LITTLE_ENDIAN 1 +#undef IS_BIG_ENDIAN + + +#define JS_BYTES_PER_WORD 4L +#define JS_BYTES_PER_DOUBLE 8L +#define JS_BITS_PER_WORD_LOG2 5L +#define JS_ALIGN_OF_POINTER 4L + +#define JS_THREADSAFE 1 + +#define JS_STACK_GROWTH_DIRECTION (-1) + +#define JS_HAVE_LONG_LONG + +#endif /* js_cpucfg___ */ diff --git a/meta-moblin/packages/mozilla-headless/mozilla-headless/i686/jsautocfg.h b/meta-moblin/packages/mozilla-headless/mozilla-headless/i686/jsautocfg.h new file mode 100644 index 000000000..94b44f8e1 --- /dev/null +++ b/meta-moblin/packages/mozilla-headless/mozilla-headless/i686/jsautocfg.h @@ -0,0 +1,21 @@ +#ifndef js_cpucfg___ +#define js_cpucfg___ + +/* AUTOMATICALLY GENERATED - DO NOT EDIT */ + +#define IS_LITTLE_ENDIAN 1 +#undef IS_BIG_ENDIAN + + +#define JS_BYTES_PER_WORD 4L +#define JS_BYTES_PER_DOUBLE 8L +#define JS_BITS_PER_WORD_LOG2 5L +#define JS_ALIGN_OF_POINTER 4L + +#define JS_THREADSAFE 1 + +#define JS_STACK_GROWTH_DIRECTION (-1) + +#define JS_HAVE_LONG_LONG + +#endif /* js_cpucfg___ */ diff --git a/meta-moblin/packages/mozilla-headless/mozilla-headless/mozconfig b/meta-moblin/packages/mozilla-headless/mozilla-headless/mozconfig new file mode 100644 index 000000000..6123d11d2 --- /dev/null +++ b/meta-moblin/packages/mozilla-headless/mozilla-headless/mozconfig @@ -0,0 +1,23 @@ +# this line sets the directory for all build output +mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj-headless-release + +# comment out the previous line and uncomment these two for a debug build +#mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj-headless-debug +#ac_add_options --disable-optimize --enable-debug + +# this is the line that enables the headless implementation +ac_add_options --enable-default-toolkit=cairo-headless + +# comment out the previous line and uncomment these two for a GTK build +#ac_add_options --enable-system-cairo +#ac_add_options --enable-default-toolkit=cairo-gtk2 + +ac_add_options --disable-tests +ac_add_options --disable-javaxpcom +ac_add_options --enable-application=xulrunner +ac_add_options --enable-pango +ac_add_options --disable-printing +ac_add_options --disable-crashreporter +ac_add_options --enable-plugins +ac_add_options --disable-accessibility +mk_add_options MOZ_CO_PROJECT=xulrunner diff --git a/meta-moblin/packages/mozilla-headless/mozilla-headless/mozilla-jemalloc.patch b/meta-moblin/packages/mozilla-headless/mozilla-headless/mozilla-jemalloc.patch new file mode 100644 index 000000000..aabd6906e --- /dev/null +++ b/meta-moblin/packages/mozilla-headless/mozilla-headless/mozilla-jemalloc.patch @@ -0,0 +1,24 @@ +diff -r f1af606531f5 memory/jemalloc/jemalloc.h +--- a/memory/jemalloc/jemalloc.h Sat Nov 22 20:22:22 2008 +0100 ++++ b/memory/jemalloc/jemalloc.h Mon Dec 01 16:53:06 2008 -0500 +@@ -45,14 +45,14 @@ + } jemalloc_stats_t; + + #ifndef MOZ_MEMORY_DARWIN +-void *malloc(size_t size); +-void *valloc(size_t size); +-void *calloc(size_t num, size_t size); +-void *realloc(void *ptr, size_t size); +-void free(void *ptr); ++void *malloc(size_t size) __THROW __attribute_malloc__ __wur; ++void *valloc(size_t size) __THROW __attribute_malloc__ __wur; ++void *calloc(size_t num, size_t size) __THROW __attribute_malloc__ __wur; ++void *realloc(void *ptr, size_t size) __THROW __attribute_malloc__ __wur; ++void free(void *ptr) __THROW __attribute_malloc__ __wur; + #endif + +-int posix_memalign(void **memptr, size_t alignment, size_t size); ++int posix_memalign(void **memptr, size_t alignment, size_t size) __THROW __attribute_malloc__ __wur; + void *memalign(size_t alignment, size_t size); + size_t malloc_usable_size(const void *ptr); + void jemalloc_stats(jemalloc_stats_t *stats); diff --git a/meta-moblin/packages/mozilla-headless/mozilla-headless/removebadrpath-1a622cb7c384.patch b/meta-moblin/packages/mozilla-headless/mozilla-headless/removebadrpath-1a622cb7c384.patch new file mode 100644 index 000000000..940910578 --- /dev/null +++ b/meta-moblin/packages/mozilla-headless/mozilla-headless/removebadrpath-1a622cb7c384.patch @@ -0,0 +1,26 @@ +Index: offscreen/js/src/configure.in +=================================================================== +--- offscreen.orig/js/src/configure.in 2009-06-17 14:31:40.000000000 +0100 ++++ offscreen/js/src/configure.in 2009-06-17 14:31:40.000000000 +0100 +@@ -880,7 +880,7 @@ + HOST_AR_FLAGS='$(AR_FLAGS)' + + MOZ_JS_LIBS='-L$(libdir) -lmozjs' +-MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(PREFIX)/lib' ++MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin' + + MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)' + MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom_compat' +Index: offscreen/configure.in +=================================================================== +--- offscreen.orig/configure.in 2009-06-17 15:09:44.000000000 +0100 ++++ offscreen/configure.in 2009-06-17 15:10:00.000000000 +0100 +@@ -1060,7 +1060,7 @@ + + MOZ_JS_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs' + DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core' +-MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib' ++MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin' + XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom' + LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul' + XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)' diff --git a/meta-moblin/packages/mozilla-headless/mozilla-headless/removebadrpath.patch b/meta-moblin/packages/mozilla-headless/mozilla-headless/removebadrpath.patch new file mode 100644 index 000000000..53ae6d325 --- /dev/null +++ b/meta-moblin/packages/mozilla-headless/mozilla-headless/removebadrpath.patch @@ -0,0 +1,44 @@ +Index: offscreen/js/src/configure.in +=================================================================== +--- offscreen.orig/js/src/configure.in 2009-12-09 13:38:51.000000000 +0000 ++++ offscreen/js/src/configure.in 2009-12-09 14:14:08.000000000 +0000 +@@ -858,7 +858,7 @@ + HOST_AR_FLAGS='$(AR_FLAGS)' + + MOZ_JS_LIBS='-L$(libdir) -lmozjs' +-MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(PREFIX)/lib' ++MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin' + + MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)' + +@@ -3824,7 +3824,7 @@ + [ --with-nspr-libs=LIBS Pass LIBS to LD when linking code that uses NSPR. + See --with-nspr-cflags for more details.], + NSPR_LIBS=$withval) +-$NSPR_LIBS="$NSPR_LIBS -L$(LIBXUL_DIST)/sdk/lib" ++NSPR_LIBS="$NSPR_LIBS -L$(LIBXUL_DIST)/sdk/lib" + AC_SUBST(NSPR_CFLAGS) + AC_SUBST(NSPR_LIBS) + +Index: offscreen/configure.in +=================================================================== +--- offscreen.orig/configure.in 2009-12-09 13:38:51.000000000 +0000 ++++ offscreen/configure.in 2009-12-09 14:31:33.000000000 +0000 +@@ -1041,7 +1041,7 @@ + + MOZ_JS_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs' + DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core' +-MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib' ++MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin' + XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom' + LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul' + XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)' +@@ -8378,7 +8378,7 @@ + if test "$BUILD_CTYPES"; then + # Run the libffi 'configure' script on platforms that it supports. + if test -z "$_MSC_VER"; then +- ac_configure_args="--disable-shared --enable-static --disable-raw-api" ++ ac_configure_args="$ac_configure_args --disable-shared --enable-static --disable-raw-api" + if test "$MOZ_DEBUG"; then + ac_configure_args="$ac_configure_args --enable-debug" + fi diff --git a/meta-moblin/packages/mozilla-headless/mozilla-headless_hg.bb b/meta-moblin/packages/mozilla-headless/mozilla-headless_hg.bb new file mode 100644 index 000000000..669c52616 --- /dev/null +++ b/meta-moblin/packages/mozilla-headless/mozilla-headless_hg.bb @@ -0,0 +1,99 @@ + +#file://0001-Adds-initial-Gtk-clipboard-support-to-moz-headless.patch;patch=1 \ +SRC_URI = "hg://hg.mozilla.org/incubator;protocol=http;module=offscreen \ + file://configurefix-1a622cb7c384.patch;patch=1;rev=1a622cb7c384 \ + file://configurefix.patch;patch=1;notrev=1a622cb7c384 \ + file://mozilla-jemalloc.patch;patch=1 \ + file://removebadrpath-1a622cb7c384.patch;patch=1;rev=1a622cb7c384 \ + file://removebadrpath.patch;patch=1;notrev=1a622cb7c384 \ + file://buildfixhack.patch;patch=1;notrev=1a622cb7c384 \ + file://autoconffix.patch;patch=1 \ + file://jsautocfg.h \ + file://mozconfig" +PV = "0.2+hg-1.0+${SRCPV}" +PR = "r10" + +S = "${WORKDIR}/offscreen" + +DEPENDS = "gconf gnome-vfs pango dbus-glib alsa-lib libidl-native sqlite3 libidl" + +FILES_${PN} += "${libdir}/xulrunner-${XULVERSION} ${libdir}/xulrunner-devel-${XULVERSION}/sdk/lib/*.so" +FILES_${PN}-dev += "${libdir}/xulrunner-devel-${XULVERSION}" +FILES_${PN}-dbg += "${libdir}/xulrunner-devel-${XULVERSION}/sdk/lib/.debug" + +# Mozilla's build rules search for -L paths to find libraries. Its +# not clever enough to know where the sysroot is and hence finds host +# object files which is bad. We therefore tell pkg-config not to hide +# paths. See config/rules.mk and the LIBS_DEPS and _LIBDIRS variables. +export PKG_CONFIG_ALLOW_SYSTEM_LIBS = "1" + +TARGET_CC_ARCH = "" + +CFLAGS = "${TARGET_CFLAGS}" +TARGET_CFLAGS = "-Os -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=core2 -msse3 -mtune=generic -mfpmath=sse -fasynchronous-unwind-tables" + +LDFLAGS = "${TARGET_LDFLAGS}" +TARGET_LDFLAGS = "-Wl,-rpath,${libdir}/xulrunner-${XULVERSION}" + +export target_alias=${TARGET_PREFIX} + +inherit autotools mozilla + +acpaths = "-I ${S}/build/autoconf " + +export topsrcdir = "${S}" + +do_configure () { + if [ "${SRCREV}" != "1a622cb7c384" ]; then + rm -rf ${S}/build/autoconf/acwinpaths.m4 + rm -rf ${S}/js/src/build/autoconf/acwinpaths.m4 + rm -rf ${S}/nsprpub/build/autoconf/acwinpaths.m4 + mkdir -p ${S}/js/src/dist/include + ln -fs ../../../../nsprpub/dist/include/nspr ${S}/js/src/dist/include/nsprpub + fi + cp ${S}/build/autoconf/install-sh ${S} + autotools_do_configure + # Yes, we run this twice. The first pass sets up npsrpub-config which then + # sets the values correctly on the second try. Ick. + autotools_do_configure +} + +do_compile () { + cp ${WORKDIR}/jsautocfg.h ${S}/js/src/ + #oe_runmake -f client.mk build_all + base_do_compile +} + +XULVERSION = "1.9.3a1pre" + +do_install_append () { + install -d ${D}${sysconfdir}/ld.so.conf.d/ + echo ${libdir}/xulrunner-${XULVERSION}/ > ${D}${sysconfdir}/ld.so.conf.d/mozilla-headless +} + +EXTRA_OECONF =+ "--enable-application=xulrunner --enable-default-toolkit=cairo-headless --with-pthreads \ + --enable-pango --enable-optimize --disable-debug --disable-tests \ + --disable-printing --disable-crashreporter --disable-accessibility \ + --disable-javaxpcom --enable-plugins --enable-system-sqlite --disable-necko-wifi" + +export LIBXUL_DIST="${S}/dist" + +SYSROOT_PREPROCESS_FUNCS += "mozilla_sysroot_preprocess" + +mozilla_sysroot_preprocess () { + autotools_stage_dir ${D}/${libdir}/xulrunner-${XULVERSION} ${SYSROOT_DESTDIR}${STAGING_DIR_HOST}${libdir}/xulrunner-${XULVERSION}/ + autotools_stage_dir ${D}/${libdir}/xulrunner-devel-${XULVERSION} ${SYSROOT_DESTDIR}${STAGING_DIR_HOST}${libdir}/xulrunner-devel-${XULVERSION}/ + + ln -fs ${STAGING_DIR_HOST}${libdir}/xulrunner-${XULVERSION}/ ${SYSROOT_DESTDIR}${STAGING_DIR_HOST}${libdir}/xulrunner-devel-${XULVERSION}/bin + ln -fs ${STAGING_DIR_HOST}${datadir}/xulrunner-${XULVERSION}/unstable/ ${SYSROOT_DESTDIR}${STAGING_DIR_HOST}${libdir}/xulrunner-devel-${XULVERSION}/idl + ln -fs ${STAGING_DIR_HOST}${includedir}/xulrunner-${XULVERSION}/unstable/ ${SYSROOT_DESTDIR}${STAGING_DIR_HOST}${libdir}/xulrunner-devel-${XULVERSION}/include + ln -fs ${STAGING_DIR_HOST}${libdir}/xulrunner-devel-${XULVERSION}/sdk/lib/ ${SYSROOT_DESTDIR}${STAGING_DIR_HOST}${libdir}/xulrunner-devel-${XULVERSION}/lib + + install -d ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS} + install -m 755 ${S}/dist/host/bin/host_xpidl ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}/xpidl +} + +__anonymous () { + if bb.data.getVar("SRCREV", d, True) == "1a622cb7c384": + bb.data.setVar("XULVERSION", "1.9.2a1pre", d) +} -- cgit v1.2.3