# $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 = ) { 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}); }