bug#8635: Some Fortran files don't have the extensions automake wants

2011-05-09 Thread Stefano Lattarini
severity 8635 wishlist
thanks

On Saturday 07 May 2011, Peter Williams wrote:
 I'm working on wrapping a large, preexisting piece of Fortran code with
 an Autotools-based build system. The code is written in Fortran 90 and
 uses .for for the file extension. Unfortunately, automake ...

I assume you are using automake 1.11.1, right?

 ... thinks that .for files are Fortran 77 code, so the wrong compiler
 gets used and chokes on the F90 constructs.
 
 It's not practical for me to rename the files -- tracking upstream would
 become impossible. Would it be possible to provide a way for me to tell
 automake that my .for files are actually Fortran 90, not Fortran 77? As
 far as I can tell, this mapping is simply hardcoded in /usr/bin/automake.

You're right.

 It wouldn't be the most pleasant, but it'd suffice
 if there were some global variable that I could set that would say hey,
 Automake, .for files are F90. One could imagine more generic solutions
 as well, but Fortran is probably the only language that has these kinds
 of problems.

Please try the attached patch (against the v1.11.1 tag in the automake git
repository).  I *think* it should solve your problem for what concerns
automake.  However, note that the GNU Fortran Compiler will still consider
`*.for' files to be Fortran 77 by default, so you'll have to instruct it
to explicitly assume free-form Fortran 90 input, with .e.g.:

  $ ./configure FCFLAGS='-ffree-form -x f95' LDFLAGS='-x none'

This solution is probably not the best one, and is certainly not pretty,
but it should work.  If you can come up with a more general one, I'd be
happy to hear about it.

 Thanks,
 
 Peter
 

HTH,
  Stefano
diff --git a/automake.in b/automake.in
index e934c5f..23392a8 100755
--- a/automake.in
+++ b/automake.in
@@ -939,7 +939,7 @@ register_language ('name' = 'f77',
 		   'lder' = 'F77LD',
 		   'ld' = '$(F77)',
 		   'pure' = 1,
-		   'extensions' = ['.f', '.for']);
+		   'extensions' = ['.f']);
 
 # Fortran
 register_language ('name' = 'fc',
@@ -957,7 +957,7 @@ register_language ('name' = 'fc',
 		   'lder' = 'FCLD',
 		   'ld' = '$(FC)',
 		   'pure' = 1,
-		   'extensions' = ['.f90', '.f95', '.f03', '.f08']);
+		   'extensions' = ['.for', '.f90', '.f95', '.f03', '.f08']);
 
 # Preprocessed Fortran
 register_language ('name' = 'ppfc',


bug#8635: Some Fortran files don't have the extensions automake wants

2011-05-09 Thread Peter Williams
Hi Stefano,

Thanks for your prompt reply.

On Mon, 2011-05-09 at 14:11 +0200, Stefano Lattarini wrote:
 severity 8635 wishlist
 thanks
 
 On Saturday 07 May 2011, Peter Williams wrote:
  I'm working on wrapping a large, preexisting piece of Fortran code with
  an Autotools-based build system. The code is written in Fortran 90 and
  uses .for for the file extension. Unfortunately, automake ...
 
 I assume you are using automake 1.11.1, right?

Yes.

 Please try the attached patch (against the v1.11.1 tag in the automake git
 repository).  I *think* it should solve your problem for what concerns
 automake.  However, note that the GNU Fortran Compiler will still consider
 `*.for' files to be Fortran 77 by default, so you'll have to instruct it
 to explicitly assume free-form Fortran 90 input, with .e.g.:
 
   $ ./configure FCFLAGS='-ffree-form -x f95' LDFLAGS='-x none'
 
 This solution is probably not the best one, and is certainly not pretty,
 but it should work.  If you can come up with a more general one, I'd be
 happy to hear about it.

This does work. Do you think this change would be applied to released
versions of automake, though? I don't think developers would be too
happy about needing to run a custom-patched version of automake.

I was thinking that there could be an Autoconf macro called 

AM_ALIAS_SOURCE_EXTENSION([.for],[.f90])

that would mutate the %extension_map variable to treat .for files the
way that .f90 files are normally treated. It looks like this could
happen in scan_autoconf_traces. I don't have a good enough
understanding of the automake internals to know whether this would be a
simple change or whether that would affect a lot of other things,
though.

Peter


 
  Thanks,
  
  Peter
  
 
 HTH,
   Stefano

-- 
Peter Williams / pwilli...@astro.berkeley.edu
Department of Astronomy, UC Berkeley






bug#8635: Some Fortran files don't have the extensions automake wants

2011-05-09 Thread Ralf Wildenhues
* Stefano Lattarini wrote on Mon, May 09, 2011 at 02:11:53PM CEST:
 --- a/automake.in
 +++ b/automake.in
 @@ -939,7 +939,7 @@ register_language ('name' = 'f77',
  'lder' = 'F77LD',
  'ld' = '$(F77)',
  'pure' = 1,
 -'extensions' = ['.f', '.for']);
 +'extensions' = ['.f']);
  
  # Fortran
  register_language ('name' = 'fc',
 @@ -957,7 +957,7 @@ register_language ('name' = 'fc',
  'lder' = 'FCLD',
  'ld' = '$(FC)',
  'pure' = 1,
 -'extensions' = ['.f90', '.f95', '.f03', '.f08']);
 +'extensions' = ['.for', '.f90', '.f95', '.f03', '.f08']);
  
  # Preprocessed Fortran
  register_language ('name' = 'ppfc',

Sorry, but this is not a good change, and it is backward-incompatible
(even if .for might not have been used much in practice).

My intention with the recent Autoconf Fortran changes was to go ahead
and let Automake grab those extensions for $(FC) for which an
AC_FC_SRCEXT was issued.  And assume preprocessing for those where
AC_FC_PP_SRCEXT was issued for.  But that is a bigger change.

Cheers, and sorry for my really slow catchup
(also, all of my mail from yesterday got stuck somewhere...)
Ralf





bug#8635: Some Fortran files don't have the extensions automake wants

2011-05-09 Thread Stefano Lattarini
Hi Ralf.

On Monday 09 May 2011, Ralf Wildenhues wrote:
 * Stefano Lattarini wrote on Mon, May 09, 2011 at 02:11:53PM CEST:
  --- a/automake.in
  +++ b/automake.in
  @@ -939,7 +939,7 @@ register_language ('name' = 'f77',
 'lder' = 'F77LD',
 'ld' = '$(F77)',
 'pure' = 1,
  -  'extensions' = ['.f', '.for']);
  +  'extensions' = ['.f']);
   
   # Fortran
   register_language ('name' = 'fc',
  @@ -957,7 +957,7 @@ register_language ('name' = 'fc',
 'lder' = 'FCLD',
 'ld' = '$(FC)',
 'pure' = 1,
  -  'extensions' = ['.f90', '.f95', '.f03', '.f08']);
  +  'extensions' = ['.for', '.f90', '.f95', '.f03', '.f08']);
   
   # Preprocessed Fortran
   register_language ('name' = 'ppfc',
 
 Sorry, but this is not a good change, and it is backward-incompatible
 (even if .for might not have been used much in practice).

Sorry if I hadn't been clear: my intention was *not* for this patch to be
applied to the automake official repository; it was just intended as a quick
workaround for Peter.  See also my other mail in this thread.

 My intention with the recent Autoconf Fortran changes was to go ahead
 and let Automake grab those extensions for $(FC) for which an
 AC_FC_SRCEXT was issued.  And assume preprocessing for those where
 AC_FC_PP_SRCEXT was issued for.  But that is a bigger change.

My fortran fu is pretty weak, so I'm happily going to follow your lead
here.

 Cheers, and sorry for my really slow catchup
 (also, all of my mail from yesterday got stuck somewhere...)

Too bad :-(

 Ralf
 

Regards,
  Stefano