$file = "$1.r";
$depends{$j} = [$file];
push @scanlist, $file;
- } elsif ($j =~ /\.lib$/) {
- # libraries don't have dependencies
- } else {
+ } elsif ($j !~ /\./) {
$file = "$j.c";
$file = "$j.m" unless &findfile($file);
$depends{$j} = [$file];
} elsif ($i =~ /^(.*)\.lib/) {
$y = $1;
($x = $ltmpl) =~ s/X/$y/;
- } else {
+ } elsif ($i !~ /\./) {
($x = $otmpl) =~ s/X/$i/;
}
push @ret, $x if $x ne "";
return join " ", @ret;
}
+sub special {
+ my ($prog, $suffix) = @_;
+ my @ret;
+ my ($i, $x, $y);
+ @ret = ();
+ foreach $i (@{$programs{$prog}}) {
+ if (substr($i, (length $i) - (length $suffix)) eq $suffix) {
+ push @ret, $i;
+ }
+ }
+ return join " ", @ret;
+}
+
sub splitline {
my ($line, $width, $splitchar) = @_;
my ($result, $len);
print
"CC = \$(TOOLPATH)gcc\n".
"\n".
- &splitline("CFLAGS = -O2 -Wall -Werror -g -DMAC_OS_X " .
+ &splitline("CFLAGS = -O2 -Wall -Werror -g " .
(join " ", map {"-I$dirpfx$_"} @srcdirs))."\n".
"LDFLAGS = -framework Cocoa\n".
+ &splitline("all:" . join "", map { " $_" } &progrealnames("MX")) .
+ "\n" .
+ $makefile_extra{'osx'} .
"\n".
".SUFFIXES: .o .c .m\n".
"\n".
".m.o:\n".
"\t\$(CC) -x objective-c \$(COMPAT) \$(FWHACK) \$(XFLAGS) \$(CFLAGS) -c \$<\n".
"\n";
- print &splitline("all:" . join "", map { " $_" } &progrealnames("MX"));
print "\n\n";
foreach $p (&prognames("MX")) {
($prog, $type) = split ",", $p;
$objstr = &objects($p, "X.o", undef, undef);
- print "${prog}: ${prog}.app/Contents/MacOS/$prog\n\n";
- print "${prog}.app:\n\tmkdir \$\@\n";
- print "${prog}.app/Contents: ${prog}.app\n\tmkdir \$\@\n";
- print "${prog}.app/Contents/MacOS: ${prog}.app/Contents\n\tmkdir \$\@\n";
+ $icon = &special($p, ".icns");
+ $infoplist = &special($p, "info.plist");
+ print "${prog}.app:\n\tmkdir -p \$\@\n";
+ print "${prog}.app/Contents: ${prog}.app\n\tmkdir -p \$\@\n";
+ print "${prog}.app/Contents/MacOS: ${prog}.app/Contents\n\tmkdir -p \$\@\n";
+ $targets = "${prog}.app/Contents/MacOS/$prog";
+ if (defined $icon) {
+ print "${prog}.app/Contents/Resources: ${prog}.app/Contents\n\tmkdir -p \$\@\n";
+ print "${prog}.app/Contents/Resources/${prog}.icns: ${prog}.app/Contents/Resources $icon\n\tcp $icon \$\@\n";
+ $targets .= " ${prog}.app/Contents/Resources/${prog}.icns";
+ }
+ if (defined $infoplist) {
+ print "${prog}.app/Contents/Info.plist: ${prog}.app/Contents/Resources $infoplist\n\tcp $infoplist \$\@\n";
+ $targets .= " ${prog}.app/Contents/Info.plist";
+ }
+ $targets .= " \$(${prog}_extra)";
+ print &splitline("${prog}: $targets", 69) . "\n\n";
print &splitline("${prog}.app/Contents/MacOS/$prog: ".
"${prog}.app/Contents/MacOS " . $objstr), "\n";
$libstr = &objects($p, undef, undef, "-lX");
print &splitline(sprintf("%s: %s", $d->{obj}, join " ", @{$d->{deps}})),
"\n";
}
- print "\n";
- print $makefile_extra{'osx'};
print "\nclean:\n".
- "\trm -f *.o\n".
+ "\trm -f *.o *.dmg\n".
"\trm -rf *.app\n";
select STDOUT; close OUT;
}