forked from OSchip/llvm-project
102 lines
2.8 KiB
Perl
102 lines
2.8 KiB
Perl
|
#!/usr/bin/perl -w
|
||
|
|
||
|
# ompts_makeHeader [options] -f=NAME -t=DIR
|
||
|
#
|
||
|
# Creats the headerfile for the OpenMP-Testsuite out of the templatefiles
|
||
|
# witch are in the default/explicitely specified dir and the settings in the
|
||
|
# given config file.
|
||
|
#
|
||
|
# ATTENTION:
|
||
|
# At the moment it builts only a c-headerfile!
|
||
|
#
|
||
|
# -f=FILENAME: Using file FILENAME as configfile
|
||
|
# -t=DIR: Directory holding the template files
|
||
|
#
|
||
|
# options
|
||
|
# -i=FILENAME: Include other Headerfile. The files to be included must be specified
|
||
|
# after setting this option. (Not implemented yet.)
|
||
|
# -o=FILENAME: outputfilename (default is "omp_testsuite.h")
|
||
|
|
||
|
$headerfile = "\/\* Global headerfile of the OpenMP Testsuite \*\/\n\n\/\* This file was created with the ompts_makeHeader.pl script using the following opions:\ *\/\n\/\* ";
|
||
|
if(@ARGV > 0)
|
||
|
{
|
||
|
foreach $opt (@ARGV)
|
||
|
{
|
||
|
$headerfile .= "$opt ";
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$headerfile .= "No options were specified";
|
||
|
}
|
||
|
$headerfile .=" \*\/\n\n\n";
|
||
|
|
||
|
use Getopt::Long;
|
||
|
GetOptions("-o=s" => \$outfile, "-f=s" =>\$configfile, "-t=s" => \$templatedir, "-i=s" => \$include);
|
||
|
|
||
|
$include = "";
|
||
|
|
||
|
|
||
|
# Getting and verifying the necessary options:
|
||
|
if(!$configfile) {
|
||
|
die "Config file name is missing.";
|
||
|
}
|
||
|
else {
|
||
|
if (!(-e $configfile)) {
|
||
|
die "Could not find config file $configfile.";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if(!$templatedir) {
|
||
|
die "Directoryname is missing.";
|
||
|
}
|
||
|
|
||
|
if(!$outfile){
|
||
|
$outfile = "omp_testsuite.h"; # setting default value for the headerfile
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
#@includefiles; # list holing extra includefiles specified by the user
|
||
|
|
||
|
|
||
|
# generating the head of the includeguard:
|
||
|
$headerfile .= "\#ifndef OMP_TESTSUITE_H\n\#define OMP_TESTSUITE_H\n\n";
|
||
|
|
||
|
# inserting general settings out of the configfile:
|
||
|
open(OMPTS_CONF,$configfile) or die "Could not open the global config file $configfile.";
|
||
|
while(<OMPTS_CONF>){
|
||
|
$headerfile .= $_;
|
||
|
}
|
||
|
close(OMPTS_CONF);
|
||
|
|
||
|
# searching the tests:
|
||
|
opendir TEMPLATEDIR, $templatedir or die "Could not open dir $templatedir.";
|
||
|
@templates = grep /(.*)\.c/, readdir TEMPLATEDIR;
|
||
|
closedir TEMPLATEDIR;
|
||
|
|
||
|
# inserting the function declarations:
|
||
|
foreach $template (@templates){
|
||
|
$source = "";
|
||
|
open(TEMPLATE,$templatedir."/".$template) or die "Could not open the following sourcefile: ".$templatedir."/".$template;
|
||
|
while(<TEMPLATE>){
|
||
|
$source .= $_;
|
||
|
}
|
||
|
close(TEMPLATE);
|
||
|
$source =~ /\<ompts\:testcode\:functionname\>(.*)\<\/ompts\:testcode\:functionname\>/;
|
||
|
$functionname = $1."(FILE \* logfile);";
|
||
|
$source =~ /\<ompts\:directive\>(.*)\<\/ompts\:directive\>/;
|
||
|
$directive = $1;
|
||
|
$headerfile .= "int test_".$functionname." /* Test for ".$directive." */\n";
|
||
|
$headerfile .= "int crosstest_".$functionname." /* Crosstest for ".$directive." */\n";
|
||
|
}
|
||
|
|
||
|
# inserting the end of the includeguard:
|
||
|
$headerfile .= "\n#endif";
|
||
|
|
||
|
# craeting the headerfile:
|
||
|
open(OUTFILE,">".$outfile) or die "Could not create the haedaerfile ($outfile)";
|
||
|
print OUTFILE $headerfile."\n";
|
||
|
close(OUTFILE);
|
||
|
|