Files
pcas/configure/tools/makeConfigAppInclude.pl
2001-04-27 14:05:07 +00:00

113 lines
3.3 KiB
Perl

# $Id$
eval 'exec perl -S $0 ${1+"$@"}' # -*- Mode: perl -*-
if $running_under_some_shell; # makeConfigAppInclude.pl
use Cwd;
$hostarch = $ARGV[0];
$arch = $ARGV[1];
$outfile = $ARGV[2];
$top = $ARGV[3];
$applications{TOP} = $top;
unlink("${outfile}");
open(OUT,">${outfile}") or die "$! opening ${outfile}";
print OUT "#Do not modify this file.\n";
print OUT "#This file is created during the build.\n";
sub ProcessFile
{
local *IN;
my ($file) = @_;
my $line;
my $app_post;
my $prefix;
my $base;
my ($macro,$post);
if (-r "$file") {
open(IN, "$file") or return;
while ($line = <IN>) {
next if ( $line =~ /\s*#/ );
chomp($line);
$line =~ s/[ ]//g; # remove blanks and tabs
next if ( $line =~ /^$/ ); # skip empty lines
$_ = $line;
#the following looks for
# include $(macro)post
($macro,$post) = /include\s*\$\((.*)\)(.*)/;
if ($macro ne "") { # true if macro is present
$base = $applications{$macro};
if ($base eq "") {
#print "error: $macro was not previously defined\n";
next;
} else {
$post = $base . $post;
ProcessFile(${post});
next;
}
}
# the following looks for
# include post
($post) = /include\s*(.*)/;
if ($post ne "") {
ProcessFile(${post});
next;
}
#the following looks for
# prefix = $(macro)post
($prefix,$macro,$post) = /(.*)\s*=\s*\$\((.*)\)(.*)/;
if ($macro eq "") { # true if no macro is present
# the following looks for
# prefix = post
($prefix,$post) = /(.*)\s*=\s*(.*)/;
$app_post = $post;
} else {
$base = $applications{$macro};
if ($base eq "") {
#print "error: $macro was not previously defined\n";
} else {
$app_post = "\$($macro)" . $post;
$post = $base . $post;
}
}
$applications{$prefix} = $post;
if ( -d "$post") { #check that directory exists
print OUT "\n";
if ( -d "$post/bin/$arch") { #check that directory exists
print OUT "${prefix}_BIN = $app_post/bin/${arch}\n";
}
if ( -d "$post/bin/$arch") { #check that directory exists
print OUT "${prefix}_HOST_BIN = $app_post/bin/\$(EPICS_HOST_ARCH)\n";
}
if ( -d "$post/lib/$arch") { #check that directory exists
print OUT "${prefix}_LIB = $app_post/lib/${arch}\n";
}
if ( -d "$post/include") { #check that directory exists
print OUT "INSTALL_INCLUDES += -I$app_post/include/os/\$(OS_CLASS)\n";
}
if ( -d "$post/include") { #check that directory exists
print OUT "INSTALL_INCLUDES += -I$app_post/include\n";
}
if ( -d "$post/dbd") { #check that directory exists
print OUT "INSTALL_DBDFLAGS += -I $app_post/dbd\n";
}
}
}
close IN;
return;
}
}
@files =();
push(@files,"$top/configure/RELEASE");
push(@files,"$top/configure/RELEASE.${hostarch}");
foreach $filename (@files) {
ProcessFile(${filename});
}