diff options
-rw-r--r-- | ChangeLog | 13 | ||||
-rw-r--r-- | README | 4 | ||||
-rw-r--r-- | components/mozilla/mozilla-events.cpp | 5 | ||||
-rw-r--r-- | components/mozilla/nautilus-mozilla-embed-extensions.cpp | 33 | ||||
-rw-r--r-- | configure.in | 106 |
5 files changed, 74 insertions, 87 deletions
@@ -1,3 +1,16 @@ +2001-10-15 Darin Adler <darin@bentspoon.com> + + Switch to require Mozilla 0.9.5 -- sadly this means we are + now incompatible with any older verion. Thanks to frb@ximian.com + for his patch and help making it compile with 0.9.5. + + * README: Tell people 0.9.5 is needed. + * configure.in: Various cleanup, and ask for 0.9.5. + * components/mozilla/mozilla-events.cpp: + * components/mozilla/nautilus-mozilla-embed-extensions.cpp: + Work around gcc bug with the directory named string. Switch to use + new calls in cases where the old ones are gone. + 2001-10-13 Carlos Perelló Marín <carlos@gnome-db.org> * configure.in (ALL_LINGUAS): Added pt @@ -218,11 +218,11 @@ Nautilus Mozilla component. This component can be optionally built with Nautilus. It is automatically enabled at configure time if Mozilla development libraries are detected on your system. -The recommended version of Mozilla for use with Nautilus is 0.9.1. +The recommended version of Mozilla for use with Nautilus is 0.9.5. The latest Mozilla packages can be found here: -ftp://ftp.mozilla.org/pub/mozilla/releases/mozilla0.9.1/ +ftp://ftp.mozilla.org/pub/mozilla/releases/mozilla0.9.5/ After installing these packages (RPMs for example) you can build Nautilus with Mozilla support as follows: diff --git a/components/mozilla/mozilla-events.cpp b/components/mozilla/mozilla-events.cpp index b1a35bb47..0bdef6412 100644 --- a/components/mozilla/mozilla-events.cpp +++ b/components/mozilla/mozilla-events.cpp @@ -61,18 +61,19 @@ #include "nsIDocShellTreeOwner.h" #include "nsIDocument.h" #include "nsIContent.h" +#include "nsIContentViewer.h" #include "nsIDOMHTMLElement.h" #include "nsIDOMHTMLAnchorElement.h" #include "nsIDOMHTMLDocument.h" #include "nsIPresShell.h" #include "nsIMarkupDocumentViewer.h" - +#include "nsReadableUtils.h" static char * get_glib_str_from_ns_str (nsAutoString string) { - char *cstr = string.ToNewCString(); + char *cstr = ToNewCString(string); char *glib_str = g_strdup (cstr); nsMemory::Free (cstr); diff --git a/components/mozilla/nautilus-mozilla-embed-extensions.cpp b/components/mozilla/nautilus-mozilla-embed-extensions.cpp index 497fbb021..38822b901 100644 --- a/components/mozilla/nautilus-mozilla-embed-extensions.cpp +++ b/components/mozilla/nautilus-mozilla-embed-extensions.cpp @@ -34,23 +34,31 @@ #include <libgnome/gnome-defs.h> #include <libgnome/gnome-i18n.h> +#include "nsICharsetConverterManager.h" +#include "nsICharsetConverterManager2.h" #include "nsIContentViewer.h" -#include "nsIServiceManager.h" #include "nsIDocShell.h" #include "nsIDocShellTreeItem.h" #include "nsIDocShellTreeOwner.h" #include "nsIMarkupDocumentViewer.h" -#include "nsICharsetConverterManager.h" -#include "nsICharsetConverterManager2.h" #include "nsIPlatformCharset.h" +#include "nsIServiceManager.h" +#include "nsReadableUtils.h" + #include <vector> -#include <string> + +/* We can't include <string> because of a bug in g++, which gets confused + * by the "string" directory in the mozilla include directory. So we do the + * following as a workaround. + */ +#include <std/bastring.h> +typedef basic_string<char> string; struct Encoding { Encoding (const char *encoding, - const char *encoding_title, - const char *translated_encoding_title) : + const char *encoding_title, + const char *translated_encoding_title) : m_encoding (encoding), m_encoding_title (encoding_title), m_translated_encoding_title (translated_encoding_title) @@ -69,7 +77,7 @@ static const char * translated_encoding_peek_nth_translated_encoding_title (guin static const char * translated_encoding_peek_nth_translated_encoding_title (guint n); static const char * translated_encoding_find_translated_title (const char *title); static guint encoding_group_get_count (void); -static char * convert_ns_string_to_c_string (const nsString &ns_string); +static char * convert_to_c_string (const nsString &ns_string); static vector<Encoding> encoding_get_encoding_table (void) @@ -103,7 +111,7 @@ encoding_get_encoding_table (void) rv = decoderAtom->ToString (decoderName); g_return_val_if_fail (NS_SUCCEEDED (rv), empty_encodings); - char *charset = convert_ns_string_to_c_string (decoderName); + char *charset = convert_to_c_string (decoderName); g_assert (charset != NULL); @@ -113,7 +121,7 @@ encoding_get_encoding_table (void) char *charset_title = NULL; if (NS_SUCCEEDED (rv)) { - charset_title = convert_ns_string_to_c_string (decoderTitle); + charset_title = convert_to_c_string (decoderTitle); } if (charset_title == NULL || strlen (charset_title) <= 0) { @@ -211,8 +219,7 @@ mozilla_charset_set_encoding (GtkMozEmbed *mozilla_embed, nsAutoString charsetString; charsetString.AssignWithConversion (charset_encoding); - rv = markupDocumentViewer->SetForceCharacterSet (charsetString.ToNewUnicode()); - + rv = markupDocumentViewer->SetForceCharacterSet (ToNewUnicode(charsetString)); return NS_SUCCEEDED (rv) ? TRUE : FALSE; } @@ -312,10 +319,10 @@ mozilla_embed_get_primary_docshell (const GtkMozEmbed *mozilla_embed) /* This nonsense is needed to get the allocators right */ static char * -convert_ns_string_to_c_string (const nsString & ns_string) +convert_to_c_string (const nsString & ns_string) { char *c_string; - char *ns_c_string = ns_string.ToNewCString (); + char *ns_c_string = ToNewCString(ns_string); if (ns_c_string == NULL) { return NULL; diff --git a/configure.in b/configure.in index 71ab592ec..3a226a852 100644 --- a/configure.in +++ b/configure.in @@ -58,7 +58,6 @@ AC_PROG_MAKE_SET AC_ISC_POSIX AM_PATH_ESD -dnl ORBit AM_PATH_ORBIT dnl ==================================== @@ -131,7 +130,7 @@ AC_ARG_ENABLE(mozilla-component, [ --disable-mozilla-component Disable the mozilla component], mozilla_component_enabled="$enableval") -dnl Dont build the mozilla component for profiled builds cause the c++ compiler +dnl Dont build the mozilla component for profiled builds because the C++ compiler dnl used for mozilla rpms is not binary compatible with the one used for profiling. if test "x$ENABLE_PROFILER" = "x1" then @@ -142,30 +141,21 @@ found_mozilla=false if test "x$mozilla_component_enabled" = "xyes" then -BUILD_MOZILLA_COMPONENT= -MOZILLA_COMPONENT_CFLAGS= -MOZILLA_COMPONENT_LDFLAGS= -MOZILLA_COMPONENT_LIBS= _mozilla_lib_place=/usr/lib/mozilla -_mozilla_include_place=/usr/include/mozilla - -dnl Add a flag to override the default mozilla lib dir AC_ARG_WITH(mozilla-lib-place, [ --with-mozilla-lib-place Set mozilla 'lib' place ], [ _mozilla_lib_place="$withval" ]) -dnl Add a flag to override the default mozilla include dir +_mozilla_include_place=/usr/include/mozilla AC_ARG_WITH(mozilla-include-place, [ --with-mozilla-include-place Set mozilla 'include' place ], [ _mozilla_include_place="$withval" ]) -_mozilla_nspr_libs= -_mozilla_plc_libs= -_mozilla_plds_libs= -_mozilla_xpcom_libs= -_mozilla_gtk_moz_embed_libs= -_mozilla_gtk_super_win_libs= +_mozilla_nspr_include_place=$_mozilla_include_place/nspr +AC_ARG_WITH(mozilla-nspr-include-place, + [ --with-mozilla-nspr-include-place Set mozilla nspr directory 'include' place ], + [ _mozilla_nspr_include_place="$withval" ]) dnl Save flags and compiler _save_cflags="$CFLAGS" @@ -176,10 +166,14 @@ dnl Hack flags to find the mozilla stuff CFLAGS="$_save_cflags -I$_mozilla_include_place -I$_mozilla_include_place/nspr" LDFLAGS="$_save_ldflags -L$_mozilla_lib_place" -dnl Check for nspr and friends +_mozilla_nspr_libs= AC_CHECK_LIB(nspr4, PR_Init, [_mozilla_nspr_libs="-lnspr4"]) LDFLAGS="$LDFLAGS $_mozilla_nspr_libs" + +_mozilla_plc_libs= AC_CHECK_LIB(plc4, PL_strcmp, [_mozilla_plc_libs="-lplc4"]) + +_mozilla_plds_libs= AC_CHECK_LIB(plds4, PL_NewHashTable, [_mozilla_plds_libs="-lplds4"]) _mozilla_all_nspr_flags="$_mozilla_nspr_libs $_mozilla_plc_libs $_mozilla_plds_libs" @@ -199,18 +193,21 @@ if test "$have_xpcom" = "true" ; then _mozilla_xpcom_libs="-lxpcom" AC_MSG_RESULT(yes) else + _mozilla_xpcom_libs= AC_MSG_RESULT(no) fi -dnl The next two are pure from evil +dnl The next two are pure evil CC="$_save_cc" dnl gtk superwin library LDFLAGS="$_save_ldflags -L$_mozilla_lib_place $_mozilla_all_nspr_flags -lgtksuperwin" +_mozilla_gtk_super_win_libs= AC_CHECK_LIB(gtksuperwin, gdk_superwin_get_type, [_mozilla_gtk_super_win_libs="-lgtksuperwin"]) dnl gtk moz embed library LDFLAGS="$_save_ldflags -L$_mozilla_lib_place $_mozilla_all_nspr_flags -lgtkembedmoz $_mozilla_xpcom_libs" +_mozilla_gtk_moz_embed_libs= AC_CHECK_LIB(gtkembedmoz, gtk_moz_embed_get_type, [_mozilla_gtk_moz_embed_libs="-lgtkembedmoz"]) dnl Restore the flags and compiler @@ -233,9 +230,6 @@ then found_mozilla=true MOZILLA_COMPONENT_RPATH_FLAGS=-Wl,-rpath=$_mozilla_lib_place - dnl The '-I$_mozilla_include_place/nspr' is needed for Mozilla 0.9.x - dnl and is not used (yet harmless) by Mozilla 0.8.x - MOZILLA_COMPONENT_CFLAGS="-I$_mozilla_include_place -I$_mozilla_include_place/nspr -fno-rtti -fno-exceptions" MOZILLA_COMPONENT_LDFLAGS=-L$_mozilla_lib_place MOZILLA_COMPONENT_LIBS="$_mozilla_gtk_moz_embed_libs \ $_mozilla_gtk_super_win_libs \ @@ -244,85 +238,59 @@ then $_mozilla_plc_libs \ $_mozilla_plds_libs" AC_SUBST(MOZILLA_COMPONENT_RPATH_FLAGS) - AC_SUBST(MOZILLA_COMPONENT_CFLAGS) AC_SUBST(MOZILLA_COMPONENT_LDFLAGS) AC_SUBST(MOZILLA_COMPONENT_LIBS) else AC_MSG_RESULT(no) found_mozilla=false fi + fi AM_CONDITIONAL(BUILD_MOZILLA_COMPONENT, test "x$found_mozilla" = "xtrue") -dnl -dnl EVIL1: -dnl -dnl The mozilla milestone version checks are very un-scientific. -dnl They are based on thing that I know changed between milestones, -dnl but are likely to not be right in the future. Unfortunately, there -dnl doesnt seem to be anything in mozilla (such as #define MOZILLA_VERSION) -dnl thing that we can check. -re -dnl -dnl EVIL2: -dnl -dnl The DEBUG check is a most evil hack. The problem im trying to solve -dnl is that we dont know whether the mozilla binaries we are using are built -dnl in debug mode or not (DEBUG). We need to know this so that we set -dnl appropiate compile flags in the mozilla component. Otherwise we get -dnl undefined symbols. Specifically, the undefined symbols are some -dnl destrcutors (nsCOMPtr_base::~nsCOMPtr_base) which are implemented only -dnl if the debug flag DEBUG is set a certain way. -dnl if test "x$found_mozilla" = "xtrue" then -dnl EVIL1: - grep -w gtk_moz_embed_set_profile_path $_mozilla_include_place/gtkmozembed.h > /dev/null 2>&1 - + grep -w gtk_moz_embed_set_profile_path $_mozilla_include_place/gtkembedmoz/gtkmozembed.h > /dev/null 2>&1 if test $? -eq 0 then - MOZILLA_VERSION=MOZILLA_0_8_OR_HIGHER MOZILLA_PROFILES_CFLAGS="-DMOZILLA_HAVE_PROFILES_SUPPORT" - AC_SUBST(MOZILLA_PROFILES_CFLAGS) - else - grep -w GetName $_mozilla_include_place/nsIRequest.h > /dev/null 2>&1 - if test $? -eq 0 - then - MOZILLA_VERSION=MOZILLA_0_7 - else - MOZILLA_VERSION=MOZILLA_PRE_0_7 - fi + MOZILLA_COMPONENT_CFLAGS="-I$_mozilla_include_place -I$_mozilla_nspr_include_place -fno-rtti -fno-exceptions" + for component in xpcom gfx widget gtkembedmoz dom \ + webbrwsr docshell content layout pref uconv string; do + MOZILLA_COMPONENT_CFLAGS="$MOZILLA_COMPONENT_CFLAGS -I$_mozilla_include_place/$component" + done + AC_SUBST(MOZILLA_COMPONENT_CFLAGS) + else + AC_MSG_ERROR([ +*** Mozilla 0.9.5 or greater is required to build the +*** Nautilus Mozilla component.]) fi -dnl EVIL2: +dnl The DEBUG check is a most evil hack. The problem im trying to solve +dnl is that we dont know whether the mozilla binaries we are using are built +dnl in debug mode or not (DEBUG). We need to know this so that we set +dnl appropiate compile flags in the mozilla component. Otherwise we get +dnl undefined symbols. Specifically, the undefined symbols are some +dnl destrcutors (nsCOMPtr_base::~nsCOMPtr_base) which are implemented only +dnl if the debug flag DEBUG is set a certain way. + _xpcom_lib=$_mozilla_lib_place/libxpcom.so _symbol="nsCOMPtr_base::~nsCOMPtr_base" _num_symbols=`nm $_xpcom_lib 2> /dev/null | wc -l` + MOZILLA_COMPONENT_DEBUG_FLAGS= if test $_num_symbols -ne 0 then nm --demangle $_xpcom_lib | grep $_symbol > /dev/null 2>&1 - if test $? -eq 1 then MOZILLA_COMPONENT_DEBUG_FLAGS="-DDEBUG" fi fi - AC_SUBST(MOZILLA_COMPONENT_DEBUG_FLAGS) - - if test "$MOZILLA_VERSION" != "MOZILLA_0_8_OR_HIGHER" - then - - AC_MSG_ERROR([ -*** Mozilla 0.8 or greater is required to build the Nautilus Mozilla component. -*** Mozilla packages for RedHat 6.x and 7.x are available here: -*** http://developer.eazel.com/eazel-hacking/updates/redhat62/mozilla/ -*** http://developer.eazel.com/eazel-hacking/updates/redhat70/mozilla/.]) - fi - fi dnl ==================================== @@ -565,7 +533,6 @@ case "`medusa-config --libs 2>/dev/null | cut -d ' ' -f1`" in MEDUSA_CFLAGS="" MEDUSA_LIBS="" AC_MSG_RESULT(no) - AC_MSG_WARN(Could not find medusa library. Please get it from GNOME's cvs.) ;; *) @@ -842,7 +809,6 @@ case $found_mozilla in echo "Mozilla component : YES" echo " mozilla libraries : $_mozilla_lib_place" echo " mozilla includes : $_mozilla_include_place" - echo " MOZILLA_VERSION : $MOZILLA_VERSION" echo " MOZILLA_PROFILES_CFLAGS : $MOZILLA_PROFILES_CFLAGS" echo " MOZILLA_COMPONENT_RPATH_FLAGS : $MOZILLA_COMPONENT_RPATH_FLAGS" echo " MOZILLA_COMPONENT_DEBUG_FLAGS : $MOZILLA_COMPONENT_DEBUG_FLAGS" |