--- yelp-2.22.0/configure.in 2008-03-11 17:56:24.000000000 +0100 +++ yelp-2.22.0/configure.in 2008-03-11 17:56:24.000000000 +0100 @@ -191,11 +191,17 @@ case "$MOZILLA" in xulrunner) gecko_min_version=1.8 ;; +libxul-embedding) gecko_min_version=1.9 ;; *firefox) gecko_min_version=1.5 ;; *) AC_MSG_ERROR([$gecko_cv_gecko is not supported]) esac -PKG_CHECK_MODULES([MOZILLA_COMPONENT],[${gecko_cv_gecko}-xpcom >= $gecko_min_version $gecko_cv_extra_pkg_dependencies]) +if test $MOZILLA = libxul-embedding; then + PKG_CHECK_MODULES([MOZILLA_COMPONENT],[libxul-embedding $gecko_cv_extra_pkg_dependencies]) + MOZILLA_COMPONENT_CFLAGS="$MOZILLA_COMPONENT_CFLAGS `$PKG_CONFIG --cflags ${gecko_cv_gecko}` `$PKG_CONFIG --define-variable=includetype=unstable --cflags ${gecko_cv_gecko}`" +else + PKG_CHECK_MODULES([MOZILLA_COMPONENT],[${gecko_cv_gecko}-xpcom >= $gecko_min_version $gecko_cv_extra_pkg_dependencies]) +fi dnl ==================================== dnl = zlib for help converters --- yelp-2.22.0/m4/gecko.m4 2008-03-11 10:31:40.000000000 +0100 +++ yelp-2.22.0/m4/gecko.m4 2008-03-11 17:56:24.000000000 +0100 @@ -51,7 +51,7 @@ AC_MSG_CHECKING([which gecko to use]) AC_ARG_WITH([gecko], - AS_HELP_STRING([--with-gecko@<:@=mozilla|firefox|seamonkey|xulrunner@:>@], + AS_HELP_STRING([--with-gecko@<:@=mozilla|firefox|seamonkey|xulrunner|libxul-embedding@:>@], [Which gecko engine to use (autodetected by default)])) # Backward compat @@ -60,12 +60,15 @@ gecko_cv_gecko=$with_gecko # Autodetect gecko -_geckos="xulrunner firefox mozilla-firefox seamonkey mozilla" +_geckos="xulrunner firefox mozilla-firefox seamonkey mozilla libxul-embedding" if test -z "$gecko_cv_gecko"; then for lizard in $_geckos; do if $PKG_CONFIG --exists $lizard-xpcom; then gecko_cv_gecko=$lizard break; + elif $PKG_CONFIG --exist $lizard; then + gecko_cv_gecko=$lizard + break; fi done fi @@ -93,13 +96,22 @@ seamonkey) gecko_cv_gecko_flavour=mozilla ;; *firefox) gecko_cv_gecko_flavour=toolkit ;; xulrunner) gecko_cv_gecko_flavour=toolkit ;; +libxul-embedding) gecko_cv_gecko_flavour=toolkit ;; esac -_GECKO_INCLUDE_ROOT="`$PKG_CONFIG --variable=includedir ${gecko_cv_gecko}-xpcom`" -_GECKO_LIBDIR="`$PKG_CONFIG --variable=libdir ${gecko_cv_gecko}-xpcom`" -_GECKO_HOME="`$PKG_CONFIG --variable=libdir ${gecko_cv_gecko}-xpcom`" -_GECKO_PREFIX="`$PKG_CONFIG --variable=prefix ${gecko_cv_gecko}-xpcom`" - +if $PKG_CONFIG --exists ${gecko_cv_gecko}-xpcom; then + _GECKO_INCLUDE_ROOT="`$PKG_CONFIG --variable=includedir ${gecko_cv_gecko}-xpcom`" + _GECKO_CFLAGS="-I$GECKO_INCLUDE_ROOT" + _GECKO_LIBDIR="`$PKG_CONFIG --variable=libdir ${gecko_cv_gecko}-xpcom`" + _GECKO_HOME="`$PKG_CONFIG --variable=libdir ${gecko_cv_gecko}-xpcom`" + _GECKO_PREFIX="`$PKG_CONFIG --variable=prefix ${gecko_cv_gecko}-xpcom`" +else + _GECKO_INCLUDE_ROOT="`$PKG_CONFIG --variable=includedir ${gecko_cv_gecko}`/unstable" + _GECKO_CFLAGS="`$PKG_CONFIG --cflags ${gecko_cv_gecko}` `$PKG_CONFIG --define-variable=includetype=unstable --cflags ${gecko_cv_gecko}`" + _GECKO_LIBDIR="`$PKG_CONFIG --variable=sdkdir ${gecko_cv_gecko}`/bin" + _GECKO_HOME=# NO HOME + _GECKO_PREFIX="`$PKG_CONFIG --variable=prefix ${gecko_cv_gecko}`" +fi fi # if gecko_cv_have_gecko if test "$gecko_cv_gecko_flavour" = "toolkit"; then @@ -111,6 +123,7 @@ $1[]=$gecko_cv_gecko $1[]_FLAVOUR=$gecko_cv_gecko_flavour $1[]_INCLUDE_ROOT=$_GECKO_INCLUDE_ROOT +$1[]_CFLAGS=$_GECKO_CFLAGS $1[]_LIBDIR=$_GECKO_LIBDIR $1[]_HOME=$_GECKO_HOME $1[]_PREFIX=$_GECKO_PREFIX @@ -184,7 +197,7 @@ AC_LANG_PUSH([C++]) _SAVE_CPPFLAGS="$CPPFLAGS" -CPPFLAGS="$CPPFLAGS $_GECKO_EXTRA_CPPFLAGS -I$_GECKO_INCLUDE_ROOT" +CPPFLAGS="$CPPFLAGS $_GECKO_EXTRA_CPPFLAGS $_GECKO_CFLAGS" AC_MSG_CHECKING([[whether we have a gtk 2 gecko build]]) AC_RUN_IFELSE( @@ -209,8 +222,10 @@ AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#include + #if !defined(MOZ_STORAGE) #if !defined(MOZ_REFLOW_PERF) || !defined(MOZ_REFLOW_PERF_DSP) #error No + #endif #endif]] )], [gecko_cv_have_debug=yes], @@ -241,7 +256,7 @@ AC_LANG_PUSH([C++]) _SAVE_CPPFLAGS="$CPPFLAGS" -CPPFLAGS="$CPPFLAGS -I$_GECKO_INCLUDE_ROOT" +CPPFLAGS="$CPPFLAGS $_GECKO_CFLAGS" AC_CACHE_CHECK([for gecko version], [gecko_cv_gecko_version], @@ -328,8 +343,8 @@ gecko_cv_extra_pkg_dependencies= if test "$gecko_cv_gecko_version_int" -ge "1009000"; then - gecko_cv_extra_libs="-L$_GECKO_LIBDIR -lxul" - gecko_cv_glue_libs="-L$_GECKO_LIBDIR -lxpcomglue_s" +# gecko_cv_extra_libs="-L$_GECKO_LIBDIR -lxul" + gecko_cv_glue_libs="-L$_GECKO_LIBDIR -lxpcomglue" else gecko_cv_extra_pkg_dependencies="${gecko_cv_gecko}-gtkmozembed" fi @@ -359,10 +374,20 @@ _SAVE_CXXFLAGS="$CXXFLAGS" _SAVE_LDFLAGS="$LDFLAGS" _SAVE_LIBS="$LIBS" -CPPFLAGS="$CPPFLAGS $_GECKO_EXTRA_CPPFLAGS -I$_GECKO_INCLUDE_ROOT $($PKG_CONFIG --cflags-only-I ${gecko_cv_gecko}-xpcom)" -CXXFLAGS="$CXXFLAGS $_GECKO_EXTRA_CXXFLAGS $($PKG_CONFIG --cflags-only-other ${gecko_cv_gecko}-xpcom)" -LDFLAGS="$LDFLAGS $_GECKO_EXTRA_LDFLAGS -Wl,--rpath=$_GECKO_HOME" -LIBS="$LIBS $($PKG_CONFIG --libs ${gecko_cv_gecko}-xpcom)" +if test "${gecko_cv_gecko}" = "libxul-embedding"; then + CPPFLAGS="$CPPFLAGS $_GECKO_EXTRA_CPPFLAGS $_GECKO_CFLAGS $($PKG_CONFIG --define-variable=includetype=unstable --cflags-only-I ${gecko_cv_gecko})" + CXXFLAGS="$CXXFLAGS $_GECKO_EXTRA_CXXFLAGS $_GECKO_CFLAGS $($PKG_CONFIG --define-variable=includetype=unstable --cflags-only-other ${gecko_cv_gecko})" + LIBS="$LIBS $($PKG_CONFIG --libs ${gecko_cv_gecko}) -ldl" +else + CPPFLAGS="$CPPFLAGS $_GECKO_EXTRA_CPPFLAGS $_GECKO_CFLAGS $($PKG_CONFIG --cflags-only-I ${gecko_cv_gecko}-xapcom)" + CXXFLAGS="$CXXFLAGS $_GECKO_EXTRA_CXXFLAGS $_GECKO_CFLAGS $($PKG_CONFIG --cflags-only-other ${gecko_cv_gecko}-xapcom)" + LIBS="$LIBS $($PKG_CONFIG --libs ${gecko_cv_gecko}-xpcom)" +fi +if test -n "$_GECKO_HOME"; then + LDFLAGS="$LDFLAGS $_GECKO_EXTRA_LDFLAGS -Wl,--rpath=$_GECKO_HOME" +else + LDFLAGS="$LDFLAGS $_GECKO_EXTRA_LDFLAGS" +fi _GECKO_DISPATCH_INCLUDEDIRS="$2" @@ -371,9 +396,11 @@ # Mind you, it's useful to be able to test against uninstalled mozilla builds... _GECKO_DISPATCH_INCLUDEDIRS="$_GECKO_DISPATCH_INCLUDEDIRS dom necko pref" -# Now add them to CPPFLAGS +# Now add them to CPPFLAGS - well ... not anymore since 1.9 -> test whether they exist before adding. for i in $_GECKO_DISPATCH_INCLUDEDIRS; do - CPPFLAGS="$CPPFLAGS -I$_GECKO_INCLUDE_ROOT/$i" + if test -d "$_GECKO_INCLUDE_ROOT/$i"; then + CPPFLAGS="$CPPFLAGS -I$_GECKO_INCLUDE_ROOT/$i" + fi done m4_indir([$1],m4_shiftn(2,$@)) @@ -426,11 +453,17 @@ #include #include #include + +#ifdef XPCOM_GLUE +#include +#else #include +#endif // XPCOM_GLUE + #include #include #include -#ifdef HAVE_GECKO_1_8 +#if defined(HAVE_GECKO_1_8) || defined(HAVE_GECKO_1_9) #include #else #include @@ -438,16 +471,37 @@ ]] [$1], [[ + +nsresult rv; +#ifdef XPCOM_GLUE + static const GREVersionRange greVersion = { + "1.8", PR_TRUE, + "2", PR_TRUE + }; + char xpcomLocation[4096]; + rv = GRE_GetGREPathWithProperties(&greVersion, 1, nsnull, 0, xpcomLocation, 4096); + if (NS_FAILED(rv)) { + exit(123); + } + + // Startup the XPCOM Glue that links us up with XPCOM. + XPCOMGlueStartup(xpcomLocation); + if (NS_FAILED(rv)) { + exit(124); + } +#endif // XPCOM_GLUE + // redirect unwanted mozilla debug output to the bit bucket freopen ("/dev/null", "w", stdout); -nsresult rv; -nsCOMPtr directory; +nsCOMPtr directory = nsnull; +#ifndef XPCOM_GLUE rv = NS_NewNativeLocalFile (NS_LITERAL_CSTRING("$_GECKO_HOME"), PR_FALSE, getter_AddRefs (directory)); if (NS_FAILED (rv) || !directory) { exit (126); } +#endif rv = NS_InitXPCOM2 (nsnull, directory, nsnull); if (NS_FAILED (rv)) { @@ -595,23 +649,31 @@ AC_DEFUN([GECKO_XPIDL], [AC_REQUIRE([GECKO_INIT])dnl -_GECKO_LIBDIR="`$PKG_CONFIG --variable=libdir ${gecko_cv_gecko}-xpcom`" +if test ${gecko_cv_gecko} = "libxul-embedding"; then + _GECKO_LIBDIR="`$PKG_CONFIG pkg-config --variable=sdkdir ${gecko_cv_gecko}`/bin" +else + _GECKO_LIBDIR="`$PKG_CONFIG --variable=libdir ${gecko_cv_gecko}-xpcom`" +fi AC_PATH_PROG([XPIDL],[xpidl],[no],[$_GECKO_LIBDIR:$PATH]) +if test ${gecko_cv_gecko} = "libxul-embedding"; then +XPIDL_IDLDIR="`$PKG_CONFIG --variable=idldir ${gecko_cv_gecko}`" +else XPIDL_IDLDIR="`$PKG_CONFIG --variable=idldir ${gecko_cv_gecko}-xpcom`" +fi # Older geckos don't have this variable, see # https://bugzilla.mozilla.org/show_bug.cgi?id=240473 -if test -z "$XPIDL_IDLDIR" -o ! -f "$XPIDL_IDLDIR/nsISupports.idl"; then - XPIDL_IDLDIR="`echo $_GECKO_LIBDIR | sed -e s!lib!share/idl!`" -fi - -# Some distributions (Gentoo) have it in unusual places - -if test -z "$XPIDL_IDLDIR" -o ! -f "$XPIDL_IDLDIR/nsISupports.idl"; then - XPIDL_IDLDIR="$_GECKO_INCLUDE_ROOT/idl" +if test ${gecko_cv_gecko} != "libxul-embedding"; then + if test -z "$XPIDL_IDLDIR" -o ! -f "$XPIDL_IDLDIR/nsISupports.idl"; then + XPIDL_IDLDIR="`echo $_GECKO_LIBDIR | sed -e s!lib!share/idl!`" + fi + # Some distributions (Gentoo) have it in unusual places + if test -z "$XPIDL_IDLDIR" -o ! -f "$XPIDL_IDLDIR/nsISupports.idl"; then + XPIDL_IDLDIR="$_GECKO_INCLUDE_ROOT/idl" + fi fi if test "$XPIDL" != "no" -a -n "$XPIDL_IDLDIR" -a -f "$XPIDL_IDLDIR/nsISupports.idl"; then --- yelp-2.22.0/src/Makefile.am 2008-03-11 10:32:09.000000000 +0100 +++ yelp-2.22.0/src/Makefile.am 2008-03-11 17:56:24.000000000 +0100 @@ -65,10 +65,12 @@ yelp_CPPFLAGS = \ -I$(top_srcdir) \ -I$(top_builddir)/src \ - $(addprefix -I$(MOZILLA_INCLUDE_ROOT)/,$(mozilla_include_subdirs)) \ $(YELP_DEFINES) \ $(AM_CPPFLAGS) +yelp_CPPFLAGS += $(MOZILLA_COMPONENT_CFLAGS) +yelp_CPPFLAGS += $(addprefix -I$(MOZILLA_INCLUDE_ROOT)/,$(mozilla_include_subdirs)) + yelp_CFLAGS = \ $(YELP_CFLAGS) \ $(YELP_SEARCH_CFLAGS) \ @@ -92,7 +94,7 @@ $(MOZILLA_EXTRA_LIBS) \ $(MOZILLA_GLUE_LIBS) -yelp_LDFLAGS = -R$(MOZILLA_HOME) $(AM_LDFLAGS) +yelp_LDFLAGS = $(AM_LDFLAGS) #check_PROGRAMS = \ # test-document \ --- yelp-2.22.0/src/yelp-gecko-services.cpp 2008-03-11 10:32:21.000000000 +0100 +++ yelp-2.22.0/src/yelp-gecko-services.cpp 2008-03-11 17:56:24.000000000 +0100 @@ -21,7 +21,7 @@ */ #include -#include "config.h" +#include #include #include @@ -30,12 +30,18 @@ #include #include +#include #include #include #include #include #include + +#ifdef XPCOM_GLUE +#include +#else #include +#endif #include "yelp-gecko-services.h" @@ -298,7 +304,6 @@ target->SetPrintInColor (gtk_print_settings_get_use_color (settings->config)); target->SetPaperSizeUnit(nsIPrintSettings::kPaperSizeMillimeters); - target->SetPaperSize (nsIPrintSettings::kPaperSizeDefined); GtkPaperSize *paperSize = gtk_page_setup_get_paper_size (settings->setup); if (!paperSize) { @@ -437,15 +442,16 @@ NS_ENSURE_SUCCESS (rv, ); nsCOMPtr componentFactory; - rv = NS_NewGenericFactory(getter_AddRefs(componentFactory), - &(sAppComps[0])); - + componentFactory = do_CreateInstance ("@mozilla.org/generic-factory;1", &rv); + if (NS_FAILED(rv) || !componentFactory) { g_warning ("Failed to make a factory for %s\n", sAppComps[0].mDescription); return; } + componentFactory->SetComponentInfo(&(sAppComps[0])); + rv = cr->RegisterFactory(sAppComps[0].mCID, sAppComps[0].mDescription, sAppComps[0].mContractID, --- yelp-2.22.0/src/yelp-gecko-utils.cpp 2008-03-11 10:32:13.000000000 +0100 +++ yelp-2.22.0/src/yelp-gecko-utils.cpp 2008-03-11 17:56:43.000000000 +0100 @@ -27,6 +27,8 @@ #include +#include + #include #include #include @@ -205,18 +207,45 @@ #ifdef HAVE_GECKO_1_9 NS_LogInit (); #endif - + + nsresult rv; +#ifdef XPCOM_GLUE + static const GREVersionRange greVersion = { + "1.9a", PR_TRUE, + "2", PR_TRUE + }; + char xpcomLocation[4096]; + rv = GRE_GetGREPathWithProperties(&greVersion, 1, nsnull, 0, xpcomLocation, 4096); + NS_ENSURE_SUCCESS (rv, rv); + + // Startup the XPCOM Glue that links us up with XPCOM. + rv = XPCOMGlueStartup(xpcomLocation); + NS_ENSURE_SUCCESS (rv, rv); + + rv = GTKEmbedGlueStartup(); + NS_ENSURE_SUCCESS (rv, rv); + + rv = GTKEmbedGlueStartupInternal(); + NS_ENSURE_SUCCESS (rv, rv); + + char *lastSlash = strrchr(xpcomLocation, '/'); + if (lastSlash) + *lastSlash = '\0'; + + gtk_moz_embed_set_path(xpcomLocation); + +#else #ifdef HAVE_GECKO_1_9 gtk_moz_embed_set_path (MOZILLA_HOME); #else gtk_moz_embed_set_comp_path (MOZILLA_HOME); #endif +#endif // XPCOM_GLUE gtk_moz_embed_push_startup (); yelp_register_printing (); - nsresult rv; nsCOMPtr prefService (do_GetService (NS_PREFSERVICE_CONTRACTID, &rv)); NS_ENSURE_SUCCESS (rv, FALSE);