Hi Rob, Many thanks for your expert advice. You've given me quite a few avenues to explore.
Cheers, Ron. > On 10 Jun 2017, at 9:04 pm, sisyph...@optusnet.com.au wrote: > > > From: Ron Grunwald via inline > Sent: Saturday, June 10, 2017 8:53 PM > To: inline@perl.org > Subject: Re: Inline::F2003 - New ILSM proposed > Hello all, > >> The example code below illustrates how Inline::F2003 could be configured to >> build a shared library from the Fortran source files listed in "SRCLIST". >> Also, I propose to add a new parameter called "MAKEFILE", and this leads me >> into an area that I'm unsure about. >> >> use Inline F2003 => Config => ( >> SRCLIST => "ModMatrixOps.f03", >> LIBNAME => "libMatrixOps.so", >> LIBTYPE => ".so", >> MAKEFILE => "AUTOMAKE", >> BUILDDIR => "BLD_Linux.AMD64_gfortran", >> FOR => "gfortran", >> FORFLG => "-v -g -c -std=f2003 -fpic -cpp" >> ); >> >> This new parameter "MAKEFILE" is intended to allow programmers to specify >> their own makefile. However, the special value "AUTOMAKE" can also be >> specified (as shown above), which means that Inline::F2003 would generate a >> suitable makefile, and this is where I need some advice. >> >> Inline::C uses ExtUtils::MakeMaker to generate the makefile. I would like to >> use ExtUtils::MakeMaker, but I don't think it would be possible since it >> generates makefiles for C compilation, not Fortran compilation. > > Both PDL and PGPLOT modules use ExtUtils::MakeMaker && perform fortran > compilations. > They make use of the ExtUtils::F77 module. > FAIK it might simply be that EU::F77's job is simply to determine the name of > the fortran compiler, and the flags that it should take ... or perhaps > there's more to it than just that. > > The fortran compilations in the PDL build occur during the building of > PDL::Slatec and PDL::Minuit - there might be other places, too. > With EU::F77 installed you should be able to build PDL (such that both > PDL::Slatec and PDL::Minuit are built) with 'cpan -i PDL'. > > Hopefully there's something in there that will help. > > Any questions about how the fortran stuff is managed by PDL or EU::MM could > also be sent to the PDL devel mailing list. It's an active list that's fairly > well attended by informed and helpful folk. > >> Unless there is some clever way to configure ExtUtils::MakeMaker to output >> Fortran makefiles? >> >> Another option is to use the GNU autotools. > > PDL::Audio (http://search.cpan.org/~mlehmann/PDL-Audio-1.2/) is the only > module I've ever built that makes use of autotools (in the sndlib folder in > the source distro). > It works well, though I haven't studied it. > Maybe there's something useful to be gleaned from it, too. > >> In this scenario, Inline::F2003 would read an existing "Makefile.in", then >> use the parameters specified in the above example, and write out the final >> Makefile. Sounds simple, but I've never done this before. >> >> If anyone is able to provide advice, suggestions or opinions, I would be >> really grateful. > > My only other advice would be to also sound this out on perlmonks. (But that > might pay off ... or it might not :-) > > Cheers, > Rob >