git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@292 b9cfdab3-6d41-4d17-bbe4-086880011989
This commit is contained in:
NishiOwO
2025-10-12 10:26:59 +00:00
parent 7c3346c9e3
commit 41214bbfa7
7 changed files with 407 additions and 499 deletions

View File

@@ -1,80 +0,0 @@
#!/usr/bin/env perl
# $Id$
our @sources = ();
our @c_sources = ();
our @cxx_sources = ();
sub scan {
opendir(DIR, $_[0]);
my @files = readdir(DIR);
foreach my $f (@files) {
if (!($f =~ /^vulkan\.cc?$/) && ($f =~ /\.cc?$/)) {
my $p = $_[0] . "/" . $f;
$p =~ s/\//\\/g;
push(@sources, $p);
$p =~ s/\.cc?$/.obj/g;
print(OUT " $p");
}
}
closedir(DIR);
}
open(OUT, ">", "BorMakefile");
print(OUT "# \$Id\$\n");
print(OUT "CC = bcc32\n");
print(OUT "CXX = bcc32\n");
print(OUT "CFLAGS = -D_MILSKO -DUSE_GDI -DUSE_STB_IMAGE -DSTBI_NO_SIMD -Iinclude\n");
print(OUT "CXXFLAGS = -Iinclude\n");
print(OUT "\n");
print(OUT "OBJS =");
scan("src");
scan("src/widget");
scan("src/external");
scan("src/cursor");
scan("src/icon");
push(@sources, "src\\backend\\gdi.c");
@c_sources = @sources;
@sources = ();
print(OUT " src\\backend\\gdi.obj\n");
print(OUT "OOOBJS =");
scan("oosrc");
scan("oosrc/widget");
@cxx_sources = @sources;
@sources = ();
print(OUT "\n");
print(OUT "\n");
print(OUT "all: src\\Mw.dll oosrc\\MwOO.dll\n");
print(OUT "\n");
print(OUT ".SUFFIXES: .c .cc .obj\n");
print(OUT "\n");
print(OUT "clean:\n");
foreach my $l (@c_sources) {
my $obj = $l;
$obj =~ s/\.cc?/.obj/g;
print(OUT " del /q /f $obj\n");
}
foreach my $l (@cxx_sources) {
my $obj = $l;
$obj =~ s/\.cc?/.obj/g;
print(OUT " del /q /f $obj\n");
}
print(OUT " del /q /f src\\Mw.dll\n");
print(OUT " del /q /f src\\Mw.lib\n");
print(OUT " del /q /f oosrc\\MwOO.dll\n");
print(OUT " del /q /f oosrc\\MwOO.lib\n");
print(OUT "\n");
print(OUT "oosrc\\MwOO.dll: \$(OOOBJS) src\\Mw.dll\n");
print(OUT " \$(CC) -tWD -eoosrc\\MwOO.dll \$(OOOBJS) src\\Mw.lib\n");
print(OUT " implib oosrc\\MwOO.lib oosrc\\MwOO.dll");
print(OUT "\n");
print(OUT "src\\Mw.dll: \$(OBJS)\n");
print(OUT " \$(CC) -tWD -esrc\\Mw.dll \$(OBJS)\n");
print(OUT " implib src\\Mw.lib src\\Mw.dll");
print(OUT "\n");
print(OUT ".c.obj:\n");
print(OUT " \$(CC) \$(CFLAGS) -c -o\$@ \$< \n");
print(OUT ".cc.obj:\n");
print(OUT " \$(CXX) -P \$(CXXFLAGS) -c -o\$@ \$< \n");
close(OUT);

186
tools/genmk.pl Executable file
View File

@@ -0,0 +1,186 @@
#!/usr/bin/env perl
# $Id$
my @cfiles = ();
my @cxxfiles = ();
sub scan {
opendir(DIR, $_[0]);
my @files = readdir(DIR);
foreach my $f (@files){
if($f =~ /^vulkan\.cc?$/){
next;
}
if($f =~ /\.c$/){
push(@cfiles, $_[0] . "/" . $f);
}elsif($f =~ /\.cc$/){
push(@cxxfiles, $_[0] . "/" . $f);
}
}
closedir(DIR);
}
sub cobjs {
my $r = "";
foreach my $f (@cfiles){
my $b = $f;
$b =~ s/\.cc?$/.obj/;
$b =~ s/\//$_[0]/g;
$r = $r . " " . $_[1] . $b;
}
return $r;
}
sub cxxobjs {
my $r = "";
foreach my $f (@cxxfiles){
my $b = $f;
$b =~ s/\.cc?$/.obj/;
$b =~ s/\//$_[0]/g;
$r = $r . " " . $_[1] . $b;
}
return $r;
}
sub generate {
my ($output, $type) = @_;
my $cc = "";
my $cxx = "";
my $link = "";
my $suffix = 1;
my $symbolic = "";
my $dir = "\\";
my $del = "del /f /q";
my $out = "";
my $dllout = "";
my $def = "";
my $inc = "";
my $dll = "";
my $prefobj = "";
my $needlibs = "";
my $lib = "";
my $c_dllout = "";
my $cxx_dllout = "";
my $c_dllafter = "";
my $cxx_dllafter = "";
if($type eq "Borland"){
$cc = "bcc32 -c";
$cxx = "bcc32 -c -P";
$link = "bcc32";
$out = "-o";
$dllout = "-e";
$def = "-D";
$inc = "-I";
$dll = "-tWD";
$c_dllafter = "implib src${dir}Mw.lib src${dir}Mw.dll";
$cxx_dllafter = "implib oosrc${dir}MwOO.lib oosrc${dir}MwOO.dll";
}elsif($type eq "MSVC"){
$cc = "cl /TC /c /nologo";
$cxx = "cl /TP /c /nologo";
$link = "link /nologo";
$out = "/Fo";
$dllout = "/OUT:";
$def = "/D";
$inc = "/I";
$dll = "/DLL";
}elsif($type eq "Watcom"){
$cc = "wcc386 -bt=nt -q";
$cxx = "wpp386 -bt=nt -q";
$link = "wlink";
$out = "-fo=";
$dllout = "name ";
$def = "-d";
$inc = "-i=";
$dll = "system nt_dll";
$lib = "library ";
$suffix = 0; # is watcom make broken with suffix rule
$symbolic = ".SYMBOLIC";
$dir = "/";
$del = "%erase";
$prefobj = "file ";
$needlibs = "${lib}clib3r.lib";
$c_dllout = "option implib=src${dir}Mw.lib";
$cxx_dllout = "option implib=oosrc${dir}MwOO.lib";
}
open(OUT, ">", $output);
print(OUT "# \$Id\$\n");
print(OUT "CC = $cc\n");
print(OUT "CXX = $cxx\n");
print(OUT "LD = $link\n");
print(OUT "\n");
print(OUT "CFLAGS = ${inc}include ${def}_MILSKO ${def}USE_GDI ${def}USE_STB_IMAGE ${def}STBI_NO_SIMD\n");
print(OUT "CXXFLAGS = ${inc}include\n");
print(OUT "LDFLAGS = $dll");
print(OUT "\n");
if($suffix){
print(OUT ".SUFFIXES: .c .cc .obj\n");
}
print(OUT "all: src${dir}Mw.dll oosrc${dir}MwOO.dll\n");
print(OUT "clean: $symbolic\n");
foreach my $f (@cfiles){
my $b = $f;
$b =~ s/\.cc?$/.obj/;
$b =~ s/\//$dir/g;
print(OUT " $del $b\n");
}
foreach my $f (@cxxfiles){
my $b = $f;
$b =~ s/\.cc?$/.obj/;
$b =~ s/\//$dir/g;
print(OUT " $del $b\n");
}
print(OUT " $del src${dir}Mw.dll\n");
print(OUT " $del oosrc${dir}MwOO.dll\n");
print(OUT "\n");
print(OUT "src${dir}Mw.dll: " . cobjs($dir) . "\n");
print(OUT " \$(LD) \$(LDFLAGS) $c_dllout $dllout\$@ " . cobjs($dir, $prefobj) . " $needlibs ${lib}gdi32.lib ${lib}user32.lib\n");
print(OUT " $c_dllafter\n");
print(OUT "\n");
print(OUT "oosrc${dir}MwOO.dll: " . cxxobjs($dir) . "\n");
print(OUT " \$(LD) \$(LDFLAGS) $cxx_dllout $dllout\$@ " . cxxobjs($dir, $prefobj) . " $needlibs ${lib}src${dir}Mw.lib\n");
print(OUT " $cxx_dllafter\n");
print(OUT "\n");
if($suffix){
print(OUT ".c.obj:\n");
print(OUT " \$(CC) \$(CFLAGS) ${out}\$@ \$<");
print(OUT ".cxx.obj:\n");
print(OUT " \$(CXX) \$(CXXFLAGS) ${out}\$@ \$<\n");
}else{
print(OUT "\n");
foreach my $f (@cfiles){
my $o = $f;
$o =~ s/\.cc?$/.obj/;
print(OUT "$o: $f\n");
print(OUT " \$(CC) \$(CFLAGS) ${out}\$@ \$<\n");
}
foreach my $f (@cxxfiles){
my $o = $f;
$o =~ s/\.cc?$/.obj/;
print(OUT "$o: $f\n");
print(OUT " \$(CXX) \$(CXXFLAGS) ${out}\$@ \$<\n");
}
}
close(OUT);
}
scan("src");
scan("src/external");
scan("src/icon");
scan("src/cursor");
scan("src/widget");
push(@cfiles, "src/backend/gdi.c");
scan("oosrc");
scan("oosrc/widget");
generate("BorMakefile", "Borland");
generate("NTMakefile", "MSVC");
generate("WatMakefile", "Watcom");

View File

@@ -1,63 +0,0 @@
#!/usr/bin/env perl
# $Id$
sub scan {
opendir(DIR, $_[0]);
my @files = readdir(DIR);
foreach my $f (@files) {
if (!($f =~ /^vulkan\.cc?$/) && ($f =~ /\.cc?$/)) {
$f =~ s/\.cc?$/.obj/g;
my $p = $_[0] . "/" . $f;
$p =~ s/\//\\/g;
print(OUT " $p");
}
}
closedir(DIR);
}
open(OUT, ">", "NTMakefile");
print(OUT "# \$Id\$\n");
print(OUT "CC = cl\n");
print(OUT "LD = link\n");
print(OUT "\n");
print(OUT "OBJS =");
scan("src");
scan("src/widget");
scan("src/external");
scan("src/cursor");
scan("src/icon");
print(OUT " src\\backend\\gdi.obj\n");
print(OUT "OOOBJS =");
scan("oosrc");
scan("oosrc/widget");
print(OUT "\n");
print(OUT
"CFLAGS = /nologo /DSTBI_NO_SIMD /D_MILSKO /DUSE_GDI /DUSE_STB_IMAGE /Iinclude\n"
);
print(OUT "CXXFLAGS = /nologo /Iinclude\n");
print(OUT "LDFLAGS = /nologo /DLL /LIBPATH:src /LIBPATH:oosrc\n");
print(OUT "\n");
print(OUT "all: src\\Mw.dll oosrc\\MwOO.dll\n");
print(OUT "\n");
print(OUT ".SUFFIXES: .cc .c .obj\n");
print(OUT "\n");
print(OUT ".c.obj:\n");
print(OUT "\t\$(CC) \$(CFLAGS) /TC /c /Fo\$@ \$<\n");
print(OUT "\n");
print(OUT ".cc.obj:\n");
print(OUT "\t\$(CC) \$(CXXFLAGS) /TP /c /Fo\$@ \$<\n");
print(OUT "\n");
print(OUT "src\\Mw.dll: \$(OBJS)\n");
print(OUT
"\t\$(LD) \$(LDFLAGS) /OUT:src\\Mw.dll \$(OBJS) gdi32.lib user32.lib\n");
print(OUT "\n");
print(OUT "oosrc\\MwOO.dll: \$(OOOBJS)\n");
print(OUT "\t\$(LD) \$(LDFLAGS) /OUT:oosrc\\MwOO.dll \$(OOOBJS) Mw.lib\n");
print(OUT "\n");
print(OUT "clean:\n");
print(OUT "\tdel /q \$(OBJS)\n");
print(OUT "\tdel /q \$(OOOBJS)\n");
print(OUT
"\tdel /q src\\Mw.dll src\\Mw.lib src\\Mw.exp oosrc\\MwOO.dll oosrc\\MwOO.lib oosrc\\MwOO.exp\n"
);
close(OUT);

View File

@@ -1,111 +0,0 @@
#!/usr/bin/env perl
# $Id$
our @sources = ();
our @c_sources = ();
our @cxx_sources = ();
sub scan {
opendir(DIR, $_[0]);
my @files = readdir(DIR);
foreach my $f (@files) {
if (!($f =~ /^vulkan\.cc?$/) && ($f =~ /\.cc?$/)) {
push(@sources, $_[0] . "/" . $f);
$f =~ s/\.cc?$/.obj/g;
my $p = $_[0] . "/" . $f;
print(OUT " $p");
}
}
closedir(DIR);
}
open(OUT, ">", "WatMakefile");
print(OUT "# \$Id\$\n");
print(OUT "WATCOM = /usr/watcom\n");
print(OUT "CC = wcc386\n");
print(OUT "CXX = wpp386\n");
print(OUT
"CFLAGS = -q -d_MILSKO -dUSE_GDI -dUSE_STB_IMAGE -dSTBI_NO_SIMD -i=\$(WATCOM)/h/nt -i=include\n"
);
print(OUT "CXXFLAGS = -q -i=include -i=\$(WATCOM)/h/nt\n");
print(OUT "\n");
print(OUT "OBJS =");
scan("src");
scan("src/widget");
scan("src/external");
scan("src/cursor");
scan("src/icon");
push(@sources, "src/backend/gdi.c");
@c_sources = @sources;
@sources = ();
print(OUT " src/backend/gdi.obj\n");
print(OUT "OOOBJS =");
scan("oosrc");
scan("oosrc/widget");
@cxx_sources = @sources;
@sources = ();
print(OUT "\n");
print(OUT "\n");
print(OUT "all: src/Mw.dll oosrc/MwOO.dll\n");
print(OUT "\n");
print(OUT "clean: .SYMBOLIC\n");
foreach my $l (@c_sources) {
my $obj = $l;
$obj =~ s/\.cc?/.obj/g;
print(OUT " %erase $obj\n");
}
foreach my $l (@cxx_sources) {
my $obj = $l;
$obj =~ s/\.cc?/.obj/g;
print(OUT " %erase $obj\n");
}
print(OUT " %erase src/Mw.dll\n");
print(OUT " %erase src/Mw.lib\n");
print(OUT " %erase oosrc/MwOO.dll\n");
print(OUT " %erase oosrc/MwOO.lib\n");
print(OUT "\n");
print(OUT "oosrc/MwOO.dll: \$(OOOBJS) src/Mw.dll\n");
print(OUT
" %write MwOO.lnk system nt_dll initinstance terminstance name oosrc/MwOO.dll\n"
);
print(OUT " %write MwOO.lnk option implib=oosrc/MwOO.lib\n");
print(OUT " %write MwOO.lnk library src/Mw.lib\n");
print(OUT " %write MwOO.lnk library clib3r.lib\n");
foreach my $l (@cxx_sources) {
my $obj = $l;
$obj =~ s/\.cc?/.obj/g;
print(OUT " %write MwOO.lnk file $obj\n");
}
print(OUT " wlink \@MwOO.lnk\n");
print(OUT " %erase MwOO.lnk");
print(OUT "\n");
print(OUT "src/Mw.dll: \$(OBJS)\n");
print(OUT
" %write Mw.lnk system nt_dll initinstance terminstance name src/Mw.dll\n"
);
print(OUT " %write Mw.lnk option implib=src/Mw.lib\n");
print(OUT " %write Mw.lnk library clib3r.lib\n");
foreach my $l (@c_sources) {
my $obj = $l;
$obj =~ s/\.cc?/.obj/g;
print(OUT " %write Mw.lnk file $obj\n");
}
print(OUT " wlink \@Mw.lnk\n");
print(OUT " %erase Mw.lnk");
print(OUT "\n");
foreach my $l (@c_sources) {
my $obj = $l;
$obj =~ s/\.cc?/.obj/g;
print(OUT "$obj: $l\n");
print(OUT " \$(CC) \$(CFLAGS) -bt=nt -fo=\$@ $l\n");
}
foreach my $l (@cxx_sources) {
my $obj = $l;
$obj =~ s/\.cc?/.obj/g;
print(OUT "$obj: $l\n");
print(OUT " \$(CXX) \$(CXXFLAGS) -bt=nt -fo=\$@ $l\n");
}
close(OUT);