Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[TOOLS] Call-Location Tracing: Add more macros for Fortran
[simgrid.git] / tools / smpi / generate_smpi_defines.pl
index b741fca..64d1710 100755 (executable)
@@ -1,5 +1,6 @@
-#!/usr/bin/perl
+#!/usr/bin/env perl
 # Copyright 2016 Vincent Danjean <vincent.danjean@inria.fr>
+#                Christian Heinrich <franz-christian.heinrich@inria.fr>
 # 
 # Call this script like this:
 # C/C++  : ./generate_smpi_defines.pl ../../include/smpi/smpi.h
@@ -25,7 +26,7 @@ if (defined $options{f}) {
 }
 
 print "$commentChar This file has been automatically generated by the script\n";
-print "$commentChar in " . __FILE__ ."\n";
+print "$commentChar in tools/smpi/generate_smpi_defines.pl\n";
 print "$commentChar DO NOT EDIT MANUALLY. ALL CHANGES WILL BE OVERWRITTEN!\n";
 
 # Formatting of the output
@@ -37,10 +38,16 @@ sub output_macro {
   # This is a GCC extension. The last statement is the value of the expression
   # in parentheses.
   if (defined $options{f}) {
-    print "#define ". uc($id) ." smpi_trace_set_call_location(__FILE__,__LINE__); call ". lc $id ."\n";
+    print "#define ". lc($id) ." smpi_trace_set_call_location(__FILE__,__LINE__); call ". ucfirst $id ."\n";
+    print "#define ". uc($id) ." smpi_trace_set_call_location(__FILE__,__LINE__); call ". ucfirst $id ."\n";
   }
   else {
-    print "#define $id(...) ({ smpi_trace_set_call_location(__FILE__,__LINE__); $id(__VA_ARGS__); })\n";
+    if ($id eq "MPI_Init") {
+      print "#define MPI_Init(...) ({ smpi_process_init(__VA_ARGS__); smpi_trace_set_call_location(__FILE__,__LINE__); MPI_Init(NULL, NULL); })\n";
+    }
+    else {
+      print "#define $id(...) ({ smpi_trace_set_call_location(__FILE__,__LINE__); $id(__VA_ARGS__); })\n";
+    }
   }
 }