From 13dc7779537236a94bc9e48e03bb765919530cb9 Mon Sep 17 00:00:00 2001 From: NishiOwO Date: Sat, 11 Oct 2025 13:52:40 +0000 Subject: [PATCH] watcom git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@271 b9cfdab3-6d41-4d17-bbe4-086880011989 --- WatMakefile | 161 +++++++++++++++++++++++++++++++++++++++++++++++ tools/genmsvc.pl | 1 + tools/genwat.pl | 70 +++++++++++++++++++++ tools/watcom.pl | 41 ------------ 4 files changed, 232 insertions(+), 41 deletions(-) create mode 100644 WatMakefile create mode 100755 tools/genwat.pl delete mode 100755 tools/watcom.pl diff --git a/WatMakefile b/WatMakefile new file mode 100644 index 0000000..d33d007 --- /dev/null +++ b/WatMakefile @@ -0,0 +1,161 @@ +# $Id$ +WATCOM = /usr/watcom +CC = wcc386 +CXX = wpp386 +CFLAGS = -q -d_MILSKO -dUSE_GDI -dUSE_STB_IMAGE -dSTBI_NO_SIMD -i=$(WATCOM)/h/nt +CXXFLAGS = + +OBJS = src/core.obj src/draw.obj src/default.obj src/lowlevel.obj src/error.obj src/unicode.obj src/font.obj src/color.obj src/messagebox.obj src/boldfont.obj src/widget/button.obj src/widget/frame.obj src/widget/opengl.obj src/widget/window.obj src/widget/menu.obj src/widget/entry.obj src/widget/submenu.obj src/widget/image.obj src/widget/scrollbar.obj src/widget/checkbox.obj src/widget/label.obj src/widget/numberentry.obj src/external/ds.obj src/external/image.obj src/cursor/default.obj src/cursor/cross.obj src/cursor/text.obj src/icon/info.obj src/icon/note.obj src/icon/warning.obj src/icon/error.obj src/icon/news.obj src/icon/question.obj src/backend/gdi.obj + +.EXTENSIONS: +.EXTENSIONS: .obj .c + +all: src/Mw.dll + +clean: .SYMBOLIC + %erase src/core.obj + %erase src/draw.obj + %erase src/default.obj + %erase src/lowlevel.obj + %erase src/error.obj + %erase src/unicode.obj + %erase src/font.obj + %erase src/color.obj + %erase src/messagebox.obj + %erase src/boldfont.obj + %erase src/widget/button.obj + %erase src/widget/frame.obj + %erase src/widget/opengl.obj + %erase src/widget/window.obj + %erase src/widget/menu.obj + %erase src/widget/entry.obj + %erase src/widget/submenu.obj + %erase src/widget/image.obj + %erase src/widget/scrollbar.obj + %erase src/widget/checkbox.obj + %erase src/widget/label.obj + %erase src/widget/numberentry.obj + %erase src/external/ds.obj + %erase src/external/image.obj + %erase src/cursor/default.obj + %erase src/cursor/cross.obj + %erase src/cursor/text.obj + %erase src/icon/info.obj + %erase src/icon/note.obj + %erase src/icon/warning.obj + %erase src/icon/error.obj + %erase src/icon/news.obj + %erase src/icon/question.obj + %erase src/backend/gdi.obj + %erase src/Mw.dll + %erase src/Mw.lib + + +src/Mw.dll: $(OBJS) + %write Mw.lnk system nt_dll initinstance terminstance name src/Mw.dll + %write Mw.lnk option implib=src/Mw.lib + %write Mw.lnk library clib3r.lib + %write Mw.lnk file src/core.obj + %write Mw.lnk file src/draw.obj + %write Mw.lnk file src/default.obj + %write Mw.lnk file src/lowlevel.obj + %write Mw.lnk file src/error.obj + %write Mw.lnk file src/unicode.obj + %write Mw.lnk file src/font.obj + %write Mw.lnk file src/color.obj + %write Mw.lnk file src/messagebox.obj + %write Mw.lnk file src/boldfont.obj + %write Mw.lnk file src/widget/button.obj + %write Mw.lnk file src/widget/frame.obj + %write Mw.lnk file src/widget/opengl.obj + %write Mw.lnk file src/widget/window.obj + %write Mw.lnk file src/widget/menu.obj + %write Mw.lnk file src/widget/entry.obj + %write Mw.lnk file src/widget/submenu.obj + %write Mw.lnk file src/widget/image.obj + %write Mw.lnk file src/widget/scrollbar.obj + %write Mw.lnk file src/widget/checkbox.obj + %write Mw.lnk file src/widget/label.obj + %write Mw.lnk file src/widget/numberentry.obj + %write Mw.lnk file src/external/ds.obj + %write Mw.lnk file src/external/image.obj + %write Mw.lnk file src/cursor/default.obj + %write Mw.lnk file src/cursor/cross.obj + %write Mw.lnk file src/cursor/text.obj + %write Mw.lnk file src/icon/info.obj + %write Mw.lnk file src/icon/note.obj + %write Mw.lnk file src/icon/warning.obj + %write Mw.lnk file src/icon/error.obj + %write Mw.lnk file src/icon/news.obj + %write Mw.lnk file src/icon/question.obj + %write Mw.lnk file src/backend/gdi.obj + wlink @Mw.lnk + %erase Mw.lnk +src/core.obj: src/core.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/core.c +src/draw.obj: src/draw.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/draw.c +src/default.obj: src/default.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/default.c +src/lowlevel.obj: src/lowlevel.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/lowlevel.c +src/error.obj: src/error.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/error.c +src/unicode.obj: src/unicode.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/unicode.c +src/font.obj: src/font.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/font.c +src/color.obj: src/color.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/color.c +src/messagebox.obj: src/messagebox.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/messagebox.c +src/boldfont.obj: src/boldfont.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/boldfont.c +src/widget/button.obj: src/widget/button.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/widget/button.c +src/widget/frame.obj: src/widget/frame.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/widget/frame.c +src/widget/opengl.obj: src/widget/opengl.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/widget/opengl.c +src/widget/window.obj: src/widget/window.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/widget/window.c +src/widget/menu.obj: src/widget/menu.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/widget/menu.c +src/widget/entry.obj: src/widget/entry.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/widget/entry.c +src/widget/submenu.obj: src/widget/submenu.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/widget/submenu.c +src/widget/image.obj: src/widget/image.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/widget/image.c +src/widget/scrollbar.obj: src/widget/scrollbar.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/widget/scrollbar.c +src/widget/checkbox.obj: src/widget/checkbox.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/widget/checkbox.c +src/widget/label.obj: src/widget/label.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/widget/label.c +src/widget/numberentry.obj: src/widget/numberentry.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/widget/numberentry.c +src/external/ds.obj: src/external/ds.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/external/ds.c +src/external/image.obj: src/external/image.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/external/image.c +src/cursor/default.obj: src/cursor/default.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/cursor/default.c +src/cursor/cross.obj: src/cursor/cross.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/cursor/cross.c +src/cursor/text.obj: src/cursor/text.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/cursor/text.c +src/icon/info.obj: src/icon/info.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/icon/info.c +src/icon/note.obj: src/icon/note.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/icon/note.c +src/icon/warning.obj: src/icon/warning.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/icon/warning.c +src/icon/error.obj: src/icon/error.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/icon/error.c +src/icon/news.obj: src/icon/news.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/icon/news.c +src/icon/question.obj: src/icon/question.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/icon/question.c +src/backend/gdi.obj: src/backend/gdi.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ -i=include src/backend/gdi.c diff --git a/tools/genmsvc.pl b/tools/genmsvc.pl index e9f2b80..6c54e02 100755 --- a/tools/genmsvc.pl +++ b/tools/genmsvc.pl @@ -25,6 +25,7 @@ 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"); diff --git a/tools/genwat.pl b/tools/genwat.pl new file mode 100755 index 0000000..8978e04 --- /dev/null +++ b/tools/genwat.pl @@ -0,0 +1,70 @@ +#!/usr/bin/env perl +# $Id$ + +our @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\n"); +print(OUT "CXXFLAGS =\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"); +print(OUT " src/backend/gdi.obj\n"); +print(OUT "\n"); +print(OUT ".EXTENSIONS:\n"); +print(OUT ".EXTENSIONS: .obj .c\n"); +print(OUT "\n"); +print(OUT "all: src/Mw.dll\n"); +print(OUT "\n"); +print(OUT "clean: .SYMBOLIC\n"); +foreach my $l (@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 "\n"); +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 (@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 (@sources){ + my $obj = $l; + $obj =~ s/\.cc?/.obj/g; + print(OUT "$obj: $l\n"); + print(OUT " \$(CC) \$(CFLAGS) -bt=nt -fo=\$@ -i=include $l\n"); +} +close(OUT); diff --git a/tools/watcom.pl b/tools/watcom.pl deleted file mode 100755 index 826b160..0000000 --- a/tools/watcom.pl +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env perl -# $Id$ - -my $target = "nt"; -my @cmd = (); -push(@cmd, "-I$ENV{WATCOM}/h"); -push(@cmd, "-I$ENV{WATCOM}/h/nt"); -push(@cmd, "-DSTBI_NO_SIMD"); -foreach my $f (@ARGV) { - if ($f eq "-static-libgcc") { - next; - } - elsif ($f =~ /^-Wl,--out-implib,(.+)$/) { - push(@cmd, "-Wl,option implib=$1"); - next; - } - elsif ($f =~ /^-W.+$/) { - next; - } - elsif ($f =~ /^-L(.+)$/) { - push(@cmd, "-Wl,libpath $1"); - next; - } - elsif ($f eq "-lMw") { - push(@cmd, "-lMw"); - next; - } - elsif ($f =~ /^-l(.+)$/) { - push(@cmd, "$1.lib"); - next; - } - elsif ($f =~ /^(?:oo)?src\//) { - $target = "nt_dll"; - } - push(@cmd, $f); -} - -unshift(@cmd, "-b$target"); - -print("Running: owcc " . join(" ", @cmd) . "\n"); -exec("owcc", @cmd);