diff --git a/package/base-files/Makefile b/package/base-files/Makefile
index 23bd51a0bd4fd022fdc46af44055ffc7b1953ff1..ca4a689623dec25a5a8aa6c789ee52091dda01fb 100644
--- a/package/base-files/Makefile
+++ b/package/base-files/Makefile
@@ -247,6 +247,32 @@ define Package/librt/config
 endef
 
 
+define Package/libgfortran
+$(call Package/gcc/Default)
+  TITLE:=GFortran support library
+  DEPENDS+=@!(TARGET_avr32||TARGET_coldfire) @INSTALL_GFORTRAN
+endef
+
+define Package/libgfortran/config
+	menu "Configuration"
+		depends EXTERNAL_TOOLCHAIN && PACKAGE_libgfortran
+
+	config LIBGFORTRAN_ROOT_DIR
+		string
+		prompt "libgfortran shared library base directory"
+		depends EXTERNAL_TOOLCHAIN && PACKAGE_libgfortran
+		default TOOLCHAIN_ROOT  if !NATIVE_TOOLCHAIN
+		default "/"  if NATIVE_TOOLCHAIN
+
+	config LIBGFORTRAN_FILE_SPEC
+		string
+		prompt "libgfortran shared library files (use wildcards)"
+		depends EXTERNAL_TOOLCHAIN && PACKAGE_libgfortran
+		default "./usr/lib/libgfortran.so.*"
+
+	endmenu
+endef
+
 define Package/ldd
 $(call Package/libc/Default)
   SECTION:=utils
@@ -466,6 +492,11 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
 	$(CP) $(PKG_BUILD_DIR)/libgcc_s.so.* $(1)/lib/
   endef
 
+  define Package/libgfortran/install
+	$(INSTALL_DIR) $(1)/usr/lib
+	$(CP) $(TOOLCHAIN_DIR)/lib/libgfortran.so.* $(1)/usr/lib/
+  endef
+
   define Package/libssp/install
 	$(INSTALL_DIR) $(1)/lib
 	$(CP) $(TOOLCHAIN_DIR)/lib/libssp.so.* $(1)/lib/
@@ -581,6 +612,14 @@ else
 	exit 0
   endef
 
+  define Package/libgfortran/install
+	for file in $(call qstrip,$(CONFIG_LIBGFORTRAN_FILE_SPEC)); do \
+		dir=`dirname $$$$file` ; \
+		$(INSTALL_DIR) $(1)/$$$$dir ; \
+		$(CP) $(call qstrip,$(CONFIG_LIBGFORTRAN_ROOT_DIR))/$$$$file $(1)/$$$$dir/ ; \
+	done
+  endef
+
   define Package/libssp/install
 	for file in $(call qstrip,$(CONFIG_LIBSSP_FILE_SPEC)); do \
 		dir=`dirname $$$$file` ; \
@@ -657,5 +696,6 @@ $(eval $(call BuildPackage,libssp))
 $(eval $(call BuildPackage,libstdcpp))
 $(eval $(call BuildPackage,libpthread))
 $(eval $(call BuildPackage,librt))
+$(eval $(call BuildPackage,libgfortran))
 $(eval $(call BuildPackage,ldd))
 $(eval $(call BuildPackage,ldconfig))
diff --git a/toolchain/gcc/Config.in b/toolchain/gcc/Config.in
index e6434d0f7df70d3e604b7e9e1fc28f91671eeab0..6b45da55bd20cb26de1e92c3e0badc6633ca81f2 100644
--- a/toolchain/gcc/Config.in
+++ b/toolchain/gcc/Config.in
@@ -89,3 +89,11 @@ config INSTALL_LIBGCJ
 	default n
 	help
 	    Build/install java compiler and GNU classpath ?
+
+
+config INSTALL_GFORTRAN
+	bool
+	prompt "Build/install fortran compiler?" if TOOLCHAINOPTS
+	default n
+	help
+	    Build/install GNU fortran compiler ?
diff --git a/toolchain/gcc/common.mk b/toolchain/gcc/common.mk
index e047ace653909628384b42375c5626d80fd9a65e..1ef14a87ed8c1f3b4bdf6ac2d553d00bfa55c681 100644
--- a/toolchain/gcc/common.mk
+++ b/toolchain/gcc/common.mk
@@ -86,7 +86,7 @@ HOST_STAMP_CONFIGURED:=$(GCC_BUILD_DIR)/.configured
 HOST_STAMP_INSTALLED:=$(STAGING_DIR_HOST)/stamp/.gcc_$(GCC_VARIANT)_installed
 
 SEP:=,
-TARGET_LANGUAGES:="c$(if $(CONFIG_INSTALL_LIBSTDCPP),$(SEP)c++)$(if $(CONFIG_INSTALL_LIBGCJ),$(SEP)java)"
+TARGET_LANGUAGES:="c$(if $(CONFIG_INSTALL_LIBSTDCPP),$(SEP)c++)$(if $(CONFIG_INSTALL_LIBGCJ),$(SEP)java)$(if $(CONFIG_INSTALL_GFORTRAN),$(SEP)fortran)"
 
 export libgcc_cv_fixed_point=no
 ifdef CONFIG_USE_UCLIBC