--- F77.pm.orig	2011-01-01 02:53:06.000000000 +0100
+++ F77.pm	2015-05-29 08:13:33.000000000 +0200
@@ -351,9 +351,49 @@
 
 ### FreeBSD ###
 
-$F77config{Freebsd}{F77}{Trail_} = 1;
-$F77config{Freebsd}{F77}{Link}   = '-L/usr/lib -lf2c -lm';
-$F77config{Freebsd}{DEFAULT}     = 'F77';
+if($^O =~ /Freebsd/i) {
+  $gfortran = 'gfortran48'; # requires rewrite
+  $fallback_compiler = 'G77';
+}
+
+$F77config{Freebsd}{G77}{Link} = sub {
+    $dir = `g77-34 -print-file-name=libg2c.a`;
+    chomp $dir;
+    # Note that -print-file-name returns just the library name
+    # if it cant be found - make sure that we only accept the
+    # directory if it returns a proper path (or matches a /)
+
+    if( defined $dir ) {
+        $dir =~ s,/libg2c.a$,,;
+    } else {
+        $dir = "/usr/local/lib";
+    }    
+    return( "-L$dir -L/usr/lib -lg2c -lm" );
+};
+
+$F77config{Freebsd}{GFortran}{Link} = sub {
+    $dir = `$gfortran -print-file-name=libgfortran.a`;
+    chomp $dir;
+    # Note that -print-file-name returns just the library name
+    # if it cant be found - make sure that we only accept the
+    # directory if it returns a proper path (or matches a /)
+
+    if( defined $dir ) {
+        $dir =~ s,/libgfortran.a$,,;
+    } else {
+        $dir = "/usr/local/lib";
+    }    
+    return( "-L$dir -L/usr/lib -lgfortran -lm" );
+};
+
+$F77config{Freebsd}{G77}{Trail_} = 1;
+$F77config{Freebsd}{GFortran}{Trail_} = 1;
+$F77config{Freebsd}{G77}{Compiler} = 'g77-34';
+$F77config{Freebsd}{GFortran}{Compiler} = "$gfortran";
+$F77config{Freebsd}{G77}{Cflags} = '-O2';
+$F77config{Freebsd}{GFortran}{Cflags}   = '-O2';
+$F77config{Freebsd}{DEFAULT}     = 'GFortran';
+
 
 ### VMS ###
 
@@ -446,7 +486,8 @@
 EOD
     	 $system   =
             $Config{cc} =~ /\bgcc/ && $^O =~ /MSWin32/i ? "MinGW"
-                                                        :"Generic";
+                                    : $^O =~ /Freebsd/i ? "Freebsd"
+                                                        : "Generic";
     	 $compiler = $fallback_compiler;
     	 my $flibs = get ($F77config{$system}{$compiler}{Link});
     	 $Runtime =  $flibs ; #. gcclibs($flibs); #  Note gcclibs appears to be no longer required.