--- ./extensions/spellcheck/hunspell/src/mozHunspell.cpp.orig	2008-02-15 19:21:21.000000000 +0000
+++ ./extensions/spellcheck/hunspell/src/mozHunspell.cpp	2008-02-15 19:23:20.000000000 +0000
@@ -63,6 +63,9 @@
 #include "nsISimpleEnumerator.h"
 #include "nsIDirectoryEnumerator.h"
 #include "nsIFile.h"
+#ifdef MOZ_NATIVE_HUNSPELL
+#include "nsILocalFile.h"
+#endif
 #include "nsDirectoryServiceUtils.h"
 #include "nsDirectoryServiceDefs.h"
 #include "mozISpellI18NManager.h"
@@ -307,7 +310,16 @@
     return;
 
   nsCOMPtr<nsIFile> dictDir;
-  rv = dirSvc->Get(DICTIONARY_SEARCH_DIRECTORY,
+  #ifdef MOZ_NATIVE_HUNSPELL
+    nsCOMPtr<nsILocalFile>  localFile;
+    rv = NS_NewNativeLocalFile(nsDependentCString("/usr/share/myspell"),PR_TRUE, getter_AddRefs(localFile));
+    if (localFile && NS_SUCCEEDED(rv)) {
+      localFile->QueryInterface(NS_GET_IID(nsIFile), getter_AddRefs(dictDir));
+      LoadDictionariesFromDir(dictDir);
+    }
+    else {
+  #endif
+    rv = dirSvc->Get(DICTIONARY_SEARCH_DIRECTORY,
                    NS_GET_IID(nsIFile), getter_AddRefs(dictDir));
   if (NS_SUCCEEDED(rv)) {
     LoadDictionariesFromDir(dictDir);
@@ -332,6 +344,9 @@
       LoadDictionariesFromDir(appDir);
     }
   }
+#ifdef MOZ_NATIVE_HUNSPELL
+  }
+#endif
 
   nsCOMPtr<nsISimpleEnumerator> dictDirs;
   rv = dirSvc->Get(DICTIONARY_SEARCH_DIRECTORY_LIST,
--- ./extensions/spellcheck/src/Makefile.in.orig	2008-02-15 19:25:58.000000000 +0000
+++ ./extensions/spellcheck/src/Makefile.in	2008-02-15 19:28:36.000000000 +0000
@@ -63,9 +63,16 @@
 		  txtsvc \
 		  uconv \
 		  unicharutil \
+		  xulapp \
 		  $(NULL)
 
-CPPSRCS		= \
+ifdef MOZ_NATIVE_HUNSPELL
+CPPSRCS         += mozHunspell.cpp
+ifdef MOZ_XUL_APP
+CPPSRCS         += mozHunspellDirProvider.cpp
+endif
+endif
+CPPSRCS		+= \
 		mozSpellCheckerFactory.cpp	\
 		mozSpellChecker.cpp		\
 		mozPersonalDictionary.cpp	\
@@ -80,8 +87,14 @@
 SHARED_LIBRARY_LIBS += ../osxspell/src/$(LIB_PREFIX)osxspell_s.$(LIB_SUFFIX)
 LOCAL_INCLUDES += -I$(srcdir)/../osxspell/src
 else
+ifndef MOZ_NATIVE_HUNSPELL
 SHARED_LIBRARY_LIBS += ../hunspell/src/$(LIB_PREFIX)hunspell_s.$(LIB_SUFFIX)
 LOCAL_INCLUDES += -I$(srcdir)/../hunspell/src
+else
+LOCAL_INCLUDES += $(MOZ_HUNSPELL_CFLAGS) \
+		-DMOZ_NATIVE_HUNSPELL \
+		$(NULL)
+endif
 endif
 
 EXTRA_DSO_LDOPTS = \
@@ -96,3 +112,18 @@
 LOCAL_INCLUDES += \
 	-I$(topsrcdir)/xpcom/io \
 	$(NULL)
+
+ifdef MOZ_NATIVE_HUNSPELL
+export:: $(srcdir)/../hunspell/src/mozHunspell.cpp
+	$(INSTALL) $(srcdir)/../hunspell/src/mozHunspell.* .
+GARBAGE += mozHunspell.$(OBJ_SUFFIX) mozHunspell.cpp
+clean::
+	rm -f mozHunspell.*
+ifdef MOZ_XUL_APP
+export:: $(srcdir)/../hunspell/src/mozHunspellDirProvider.cpp
+	$(INSTALL) $(srcdir)/../hunspell/src/mozHunspellDirProvider.* .
+GARBAGE += mozHunspellDirProvider.$(OBJ_SUFFIX) mozHunspellDirProvider.cpp
+clean::
+	rm -f mozHunspellDirProvider.*
+endif
+endif
--- ./extensions/spellcheck/Makefile.in.orig	2008-02-15 19:23:39.000000000 +0000
+++ ./extensions/spellcheck/Makefile.in	2008-02-15 19:24:34.000000000 +0000
@@ -42,13 +42,19 @@
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= spellchecker
-DIRS		= idl locales
+ifndef MOZ_NATIVE_HUNSPELL
+DIRS		= idl locales
+else
+DIRS		= idl
+endif
 
 ifeq (camino,$(MOZ_BUILD_APP))
 DIRS		+= osxspell
 else
+ifndef MOZ_NATIVE_HUNSPELL
 DIRS		+= hunspell
 endif
+endif
 
 DIRS += src