Hi,

I just successfully patched the openwrt-xburst to allow compilation of
Fortran programs.  The short patch is attached, and I'm ready to commit
in case nobody objects.

To test the gfortran-enabled openwrt you need the following steps (after
applying the patch):

 - make distclean

 - copy a new config to .config

 - enable the gfortan compiler via 'make menuconfig', deeply hidden in the
   the "advanced configuration options" menu

 - enable buildding of the the libgfortran run-time lib, in the "base
   system" menu

 (alternatively add these lines to your .config:

  CONFIG_INSTALL_GFORTRAN=y
  CONFIG_PACKAGE_libgfortran=y
 )

 - install the libgfortran ipk on your nanonote

Pre-build libgfortran ipk package available here:

  http://mosquito.dyndns.tv/~spock/openwrt/

For now I managed to compile and run a simple fortran90 hello world
program:

--8<--
program HelloWorld
   write (*,*) 'Hello, world!'   ! This is an inline comment
 end program HelloWorld
--8<--

via:

  mipsel-openwrt-linux-gfortran hello.f90 -o hello

Did I overlook something?  Is it just that simple?  Never programmed in
fortran.  Next thing would be trying to port octave (probably using
plplot as plotting backend?).

cheers,

David
-- 
GnuPG public key: http://user.cs.tu-berlin.de/~dvdkhlng/dk.gpg
Fingerprint: B17A DC95 D293 657B 4205  D016 7DEF 5323 C174 7D40

diff --git a/package/base-files/Makefile b/package/base-files/Makefile
index 06496ba..428e49b 100644
--- a/package/base-files/Makefile
+++ b/package/base-files/Makefile
@@ -100,7 +100,6 @@ define Package/libgcc/config
 	endmenu
 endef
 
-
 define Package/libssp
 $(call Package/gcc/Default)
   depend...@ssp_support
@@ -247,6 +246,32 @@ define Package/librt/config
 endef
 
 
+define Package/libgfortran
+$(call Package/gcc/Default)
+  TITLE:=GFortran support library
+  depend...@!(TARGET_avr32||TARGET_coldfire)
+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 "libgcc 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
@@ -402,6 +427,11 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
 	$(CP) $(TOOLCHAIN_DIR)/lib/libgcc_s.so.* $(1)/lib/
   endef
 
+  define Package/libgfortran/install
+	$(INSTALL_DIR) $(1)/usr/lib
+	$(CP) $(TOOLCHAIN_DIR)/usr/lib/libgfortran.so.* $(1)/usr/lib/
+  endef
+
   define Package/libssp/install
 	$(INSTALL_DIR) $(1)/lib
 	$(CP) $(TOOLCHAIN_DIR)/lib/libssp.so.* $(1)/lib/
@@ -497,6 +527,14 @@ else
 	done
   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` ; \
@@ -566,5 +604,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 b183e36..a5876f1 100644
--- a/toolchain/gcc/Config.in
+++ b/toolchain/gcc/Config.in
@@ -102,3 +102,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/Makefile b/toolchain/gcc/Makefile
index 9536cc2..9d18023 100644
--- a/toolchain/gcc/Makefile
+++ b/toolchain/gcc/Makefile
@@ -76,7 +76,7 @@ HOST_BUILD_DIR1:=$(HOST_BUILD_DIR)-initial
 HOST_BUILD_DIR2:=$(HOST_BUILD_DIR)-final
 
 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
 

Attachment: pgpiFyhlldVlx.pgp
Description: PGP signature

_______________________________________________
Qi Hardware Discussion List
Mail to list (members only): [email protected]
Subscribe or Unsubscribe: 
http://lists.en.qi-hardware.com/mailman/listinfo/discussion

Reply via email to