use File::Temp;
use File::Copy;
-my $include="-I@top_srcdir@/include -I@top_srcdir@/include/smpi -I@includedir@ -I@includedir@/smpi";
+my $include="@includeflag@@f2cflags@";
foreach my $fortran (@ARGV) {
my $output = $fortran;
$output =~ s/.f$/.c/;
+
+ #print "F2C INPUT : ".$fortran."\n";
+ #print "F2C OUTPUT: ".$output."\n";
+
+ my$outputdir = $output;
+ $outputdir=~s/[^\/]*\.c$//g;
+ #print "F2C DIR : ".$outputdir."\n";
+
my $tmp = new File::Temp;
$tmp->autoflush(1);
- `f2c $include -w -a $fortran`;
+ #print "f2c -d$outputdir $include -w -a $fortran\n";
+ `f2c -d$outputdir $include -w -a $fortran`;
die "F2C failed\n" if $?;
- open F2C,"<$output";
+ open F2C,"<$output" or die "Unable to open file $output";
my $started = 0;
- my $cutext = 0;
print $tmp "#ifndef INTEGER_STAR_8\n";
print $tmp "#define INTEGER_STAR_8\n";
print $tmp "#endif\n";
if(/\/\* Table of constant values \*\// || /MAIN__/) {
$started = 0;
}
- if(/extern \/\* Subroutine \*\//) {
- $cutext = 1;
- }
- if($cutext) {
- if(/;$/) {
- $cutext = 0;
- }
- next;
- }
+ $_ =~ s/(mpi_[\w]*_)_/$1/g;
if(/\/* Main program alias \*\/\s*int\s+.*\s*\(\s*\)\s*{(.*)}/) {
- $_ = "int smpi_simulated_main(int argc, char** argv) { smpi_process_init(&argc, &argv); $1 }\n";
+ $_ = "int smpi_simulated_main_(int argc, char** argv) { smpi_process_init(&argc, &argv); $1 }\n";
}
print $tmp "$_\n";
}