Ge Wangcore ejectedd38351c9 years agoHistory
104 lines · 1.7 KB · Perl
RawDownload
use Data::Dumper;my %seen;my @source; my $output = $ARGV[0]; my @fileList = `ls *.c *.h`;foreach $_ (@fileList){	chomp;	if( $_ =~ /$output/ || $_ =~ /test/ ) {}	elsif( $_ =~ /\.h/ ) { $seen{$_} = 0; }	elsif( $_ =~ /\.c/ ) {  push @source, $_ }} close DOTH;close DOTC;open DOTH, ">" . $output . ".h" or die;open DOTC, ">" . $output . ".c" or die;my @list;$seen{'config.h'} = 1;push @list, "config.h";$seen{'sndfile.h'} = 1;push @list, "sndfile.h";$seen{'common.h'} = 1;push @list, "common.h";$seen{'G72x.h'} = 1;push @list, "G72x.h"; sub depend{	my $file = shift;	my $handle;	open $handle, "<$file";	while(<$handle>)	{		if( my $include = /#include[ \t]*[<"]([\w\d]+\.h)[>"]/ )		{			if( defined( $seen{$include} && $seen{$include} == 0 ) )			{				depend( $include );			}		}	}	close $handle;	$seen{$file} = 1;	push @list, $file;} foreach my $key ( keys %seen ){	if( $seen{$key} == 0 ) { depend($key); }} print DOTH '#include <stdio.h>' . "\n\n";print DOTH '#include <stdlib.h>' . "\n\n";foreach my $file (@list){	open F, "<$file";	while(<F>)	{		if( $_ !~ /#include[ \t]*[<"](\w+\.h)[>"]/ )		{			print DOTH $_;		}	}	close F;}     close FILE; print DOTC '#include ' . "\"$output.h\"\n";print DOTC '#include <stdio.h>' . "\n\n";print DOTC '#include <stdlib.h>' . "\n\n";foreach my $file (@source){	open FILE, $file;	$file =~ s/\.[ch]//g;	while( my $line = <FILE> )	{		if( $line !~ /#include[ \t]*("[\w\d]+\.[ch]")|<CoreServices.h>/ )	       	{			$line =~ s/(f2d_array)/$file$1/g;			$line =~ s/(d2f_array)/$file$1/g;			$line =~ s/(_\w+tab)/$file$1/g;			$line =~ s/(STEP)/$file$1/g;			$line =~ s/(HAVE_[^D]\w+)/$file$1/g;		       	print DOTC $line; 		}	}	close FILE;}   close DOTH;close DOTC;   

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t