#!/usr/bin/env perl
+#
+# Copyright (c) 2016-2022. The SimGrid Team. All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the license (GNU LGPL) which comes with this package.
+#
# 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
# FORTRAN: ./generate_smpi_defines.pl -f ../../include/smpi/smpi.h
# with MPI+TAU).
use strict;
use warnings;
-use Getopt::Std;
+use Getopt::Std;
my %options=();
getopts("fc", \%options);
$commentChar="!"
}
+print "$commentChar Copyright (c) 2016-2022. The SimGrid Team. All rights reserved.\n";
+print "\n";
+print "$commentChar This program is free software; you can redistribute it and/or modify it\n";
+print "$commentChar under the terms of the license (GNU LGPL) which comes with this package.\n";
+print "\n";
print "$commentChar This file has been automatically generated by the script\n";
-print "$commentChar in tools/smpi/" . __FILE__ ."\n";
+print "$commentChar in tools/smpi/generate_smpi_defines.pl\n";
print "$commentChar DO NOT EDIT MANUALLY. ALL CHANGES WILL BE OVERWRITTEN!\n";
+print "\n";
# Formatting of the output
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 {
- 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";
- }
+ print "#define $id(...) (smpi_trace_set_call_location(__FILE__, __LINE__), $id(__VA_ARGS__))\n";
}
}
}
$incall=1;
$wholemacro = $line;
- } elsif ($incall && $line =~ /^\s+\S/) {
+ } elsif ($incall && $line =~ /^\s+\S/) {
# Did we already start parsing an MPI_CALL macro? If so, just concatenate
$wholemacro .= ' '.$line;
} elsif ($incall) {