The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

#
# Copyright (C) 2003  Sam Horrocks
# 
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
#
#

use strict;

package SpeedyMake::speedy_dump;

require '../src/SpeedyMake.pl';
use vars qw(@ISA);
@ISA = 'SpeedyMake';

sub my_name {'speedy.ph'}
sub my_name_full {shift->my_name}
sub main_file {shift->my_name}
sub main_file_full {shift->my_name}
sub main_h {'speedy_main'}
sub src_files_o { (); }
sub src_files_c { (); }

# Get a list of our structs from our include files
sub structs { my $class = shift;
    my @list;
    foreach my $f ($class->allinc) {
	if (open(F, $f)) {
	    while (<F>) {
		chop;
		@_ = split;
		if ($_[0] eq 'typedef' && $_[2] =~ /^\w/ &&
		    ($_[1] eq 'struct' || $_[1] eq 'union' || $_[1] eq 'char'))
		{
		    push(@list, $_[2]);
		}
	    }
	    close(F);
	}
    }
    return @list;
}

sub makeaperl { my $class = shift;
    my $my_name = $class->my_name;
    my $ldopts = $class->get_ldopts;
    my $ccopts = $class->get_ccopts;
    my $struct_list = join(',', $class->structs);
    my $h = join(' ', map {"../src/$_"} $class->src_files_h);

    "
all :: ${my_name}

${my_name}: " . $class->allinc . " speedy.h
	rm -f ${my_name}; here=\`pwd\`; (c2ph CC=\$(CC) DEFINES=\"\`echo \$(INC) $ccopts | sed \\\"s^-I\\.^-I\$\${here}/.^g\\\"\`\" -s$struct_list speedy.h) >$my_name

    ";

}

SpeedyMake::speedy_dump->init->write_makefile;

1;