# # Copyright (C) 2002 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 () { 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;