my @cmdfunc;
my @protos;
my @files;
+my @help;
my @filelist = <*.c>;
$modname=$ARGV[0];
}
+my $smallname;
+$smallname=$modname;
+$smallname=~s/\.so$//;
+
+my $cname;
+$cname=$smallname . ".c";
+$smallname=~s/^chanserv_//;
+
+
for (@filelist) {
next if (/commandlist.c/);
+ next if ($_ eq $cname);
my $fname = $_;
- my ($cn, $cl, $ca, $cd, $cf, $cp);
+ my ($cn, $cl, $ca, $cd, $cf, $cp, $ch);
+ $ch="";
open INFILE,"<$fname";
if (/CMDPROTO: (.*)/) {
$cp=$1;
}
+
+ if (/CMDHELP: (.*)/) {
+ $ch.=$1."\\n";
+ }
}
if (defined $cn and defined $cl and defined $ca and defined $cd and defined $cf and defined $cp) {
push @cmddesc, $cd;
push @cmdfunc, $cf;
push @protos, $cp;
+ push @help, $ch;
} else {
print "Warning: found source file $fname without complete tags, skipping...\n";
}
my @names2 = @cmdnames;
my @func2 = @cmdfunc;
+print CL "void ".$smallname."_init(void);\n";
+print CL "void ".$smallname."_fini(void);\n\n";
+
print CL "\nvoid _init() {\n";
+print CL " ".$smallname."_init();\n";
while (my $cn = shift @cmdnames) {
print CL " chanservaddcommand(\"".$cn."\", ".(shift @cmdlevels).", ".(shift @cmdargs).", ";
- print CL (shift @cmdfunc).", \"".(shift @cmddesc)."\", \"\");\n";
+ print CL (shift @cmdfunc).", \"".(shift @cmddesc)."\", \"".(shift @help),"\");\n";
}
print CL "}\n\nvoid _fini() {\n";
+print CL " ".$smallname."_fini();\n";
while (my $cn = shift @names2) {
print CL " chanservremovecommand(\"".$cn."\", ".(shift @func2).");\n";
close CL;
-open MF,">Makefile";
-
-print MF "# Automatically generated Makefile, do not edit.\n\n";
-
-print MF ".PHONY: all Makefile\n";
+open MF,">autobuild.mk";
-print MF "all: Makefile $modname\n\n";
-
-print MF "Makefile:\n";
-print MF "\t../mkcommandlist.pl $modname\n";
+print MF "# Automatically generated Makefile, do not edit.\n";
print MF "\n$modname: ";
push @files,"commandlist.c";
+push @files,$cname;
+
foreach (@files) {
s/.c$/.o/;
print MF "$_ ";
}
print MF "\n";
-print MF "\t ld -shared -Bdynamic -o \$\@ \$\^ \n";
close MF;