mirror of
https://gitea.nishi.boats/pyrite-dev/milsko
synced 2025-12-31 06:30:52 +00:00
106 lines
2.6 KiB
Perl
Executable File
106 lines
2.6 KiB
Perl
Executable File
#!/usr/bin/env perl
|
|
|
|
our $clean = 0;
|
|
my @objs = ();
|
|
|
|
sub compile {
|
|
my ($source) = @_;
|
|
my $object = "";
|
|
my $dir = "";
|
|
|
|
$dir = $source;
|
|
$dir =~ s/\/([^\/]+)$//;
|
|
|
|
$source =~ s/^(.+)\/([^\/]+)$/[\/\1]\2/;
|
|
$source =~ s/\//\./g;
|
|
|
|
$object = $source;
|
|
$object =~ s/\.c$/.obj/;
|
|
|
|
print(OUT "\$ if f\$search(\"$object;*\") .eqs. \"\"\n");
|
|
print(OUT "\$ then\n");
|
|
print(OUT "\$ write sys\$output \"CC $object\"\n");
|
|
print(OUT
|
|
"\$ cc /include_directory=(\"./include\",\"./$dir\") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=$object $source\n"
|
|
);
|
|
print(OUT "\$ endif\n");
|
|
|
|
push(@objs, $object);
|
|
}
|
|
|
|
sub clean {
|
|
my ($source) = @_;
|
|
my $object = "";
|
|
my $dir = "";
|
|
|
|
$source =~ s/^(.+)\/([^\/]+)$/[\/\1]\2/;
|
|
$source =~ s/\//\./g;
|
|
|
|
$object = $source;
|
|
$object =~ s/\.c$/.obj/;
|
|
|
|
print(OUT
|
|
"\$ if f\$search(\"$object\") .nes. \"\" then delete $object;*\n");
|
|
}
|
|
|
|
sub thing {
|
|
if ($clean) {
|
|
clean($_[0]);
|
|
}
|
|
else {
|
|
compile($_[0]);
|
|
}
|
|
}
|
|
|
|
sub scan {
|
|
my ($dir) = @_;
|
|
|
|
opendir(my $dh, $dir);
|
|
while (my $file = readdir($dh)) {
|
|
if ( !(($dir . "/" . $file) eq "src/widget/opengl.c")
|
|
&& !(($dir . "/" . $file) eq "src/widget/vulkan.c")
|
|
&& !(($dir . "/" . $file) eq "external/stb_truetype.c")
|
|
&& !(($dir . "/" . $file) eq "external/stb_image.c")
|
|
&& ($file =~ /\.c$/))
|
|
{
|
|
thing($dir . "/" . $file);
|
|
}
|
|
}
|
|
closedir($dh);
|
|
}
|
|
|
|
for (my $i = 0 ; $i < 2 ; $i++) {
|
|
$clean = $i;
|
|
|
|
open(OUT, ">", $i == 0 ? "vms/build.com" : "vms/clean.com");
|
|
scan("src");
|
|
scan("src/cursor");
|
|
scan("src/widget");
|
|
scan("src/dialog");
|
|
scan("src/font");
|
|
scan("src/icon");
|
|
scan("src/abstract");
|
|
scan("external");
|
|
thing("src/backend/x11.c");
|
|
|
|
if ($i == 0) {
|
|
print(OUT "\$ if f\$search(\"[.src]MwSHR.exe;*\") .eqs. \"\"\n");
|
|
print(OUT "\$ then\n");
|
|
print(OUT "\$ write sys\$output \"LINK [.src]MwSHR.exe\"\n");
|
|
print(OUT "\$ OPEN /WRITE LINK_OPT LINK.OPT\n");
|
|
foreach my $obj (@objs) {
|
|
print(OUT "\$ WRITE LINK_OPT \"$obj\"\n");
|
|
}
|
|
print(OUT "\$ WRITE LINK_OPT \"SYS\$LIBRARY:DECW\$XLIBSHR/SHARE\"\n");
|
|
print(OUT "\$ WRITE LINK_OPT \"SYS\$LIBRARY:DPML\$SHR/SHARE\"\n");
|
|
print(OUT "\$ CLOSE LINK_OPT\n");
|
|
print(OUT "\$ link /SHAREABLE=[.src]MwSHR.exe LINK.OPT/options\n");
|
|
print(OUT "\$ DELETE LINK.OPT;*\n");
|
|
print(OUT "\$ endif\n");
|
|
}
|
|
else {
|
|
clean("src/MwSHR.exe");
|
|
}
|
|
close(OUT);
|
|
}
|