From 2b30a06ecf014a81f9a2a02994bc3613c141fba4 Mon Sep 17 00:00:00 2001 From: NishiOwO Date: Sun, 21 Dec 2025 19:29:05 +0900 Subject: [PATCH] wip VMS port --- src/draw.c | 10 +- tools/gendcl.pl | 106 ++++++++++++++ vms/build.com | 382 ++++++++++++++++++++++++++++++++++++++++++++++++ vms/clean.com | 63 ++++++++ 4 files changed, 558 insertions(+), 3 deletions(-) create mode 100755 tools/gendcl.pl create mode 100644 vms/build.com create mode 100644 vms/clean.com diff --git a/src/draw.c b/src/draw.c index 24e5785..d1f3c78 100644 --- a/src/draw.c +++ b/src/draw.c @@ -1,6 +1,7 @@ #include -#ifdef USE_STB_IMAGE +#ifdef NO_IMAGE +#elif defined(USE_STB_IMAGE) #include "../external/stb_image.h" #else #include @@ -502,7 +503,8 @@ void MwDrawTriangle(MwWidget handle, MwRect* rect, MwLLColor color, int invert, MwLLFreeColor(darker); } -#ifndef USE_STB_IMAGE +#if defined(NO_IMAGE) +#elif !defined(USE_STB_IMAGE) static void PNGCAPI user_error(png_structp png, const char* str) { (void)str; @@ -617,7 +619,9 @@ static unsigned char* load_jpeg(FILE* f, int* w, int* h) { #endif static unsigned char* load_image(const char* path, int* w, int* h) { -#ifdef USE_STB_IMAGE +#if defined(NO_IMAGE) + return NULL; +#elif defined(USE_STB_IMAGE) int ch; return stbi_load(path, w, h, &ch, 4); diff --git a/tools/gendcl.pl b/tools/gendcl.pl new file mode 100755 index 0000000..94e4ad1 --- /dev/null +++ b/tools/gendcl.pl @@ -0,0 +1,106 @@ +#!/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/SHARE\"\n"); + print(OUT "\$ WRITE LINK_OPT \"SYS\$LIBRARY:DECC\$SHR/SHARE/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); +} diff --git a/vms/build.com b/vms/build.com new file mode 100644 index 0000000..17d4829 --- /dev/null +++ b/vms/build.com @@ -0,0 +1,382 @@ +$ if f$search("[.src]color.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src]color.obj" +$ cc /include_directory=("./include","./src") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src]color.obj [.src]color.c +$ endif +$ if f$search("[.src]core.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src]core.obj" +$ cc /include_directory=("./include","./src") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src]core.obj [.src]core.c +$ endif +$ if f$search("[.src]default.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src]default.obj" +$ cc /include_directory=("./include","./src") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src]default.obj [.src]default.c +$ endif +$ if f$search("[.src]draw.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src]draw.obj" +$ cc /include_directory=("./include","./src") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src]draw.obj [.src]draw.c +$ endif +$ if f$search("[.src]error.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src]error.obj" +$ cc /include_directory=("./include","./src") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src]error.obj [.src]error.c +$ endif +$ if f$search("[.src]lowlevel.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src]lowlevel.obj" +$ cc /include_directory=("./include","./src") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src]lowlevel.obj [.src]lowlevel.c +$ endif +$ if f$search("[.src]string.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src]string.obj" +$ cc /include_directory=("./include","./src") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src]string.obj [.src]string.c +$ endif +$ if f$search("[.src]text.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src]text.obj" +$ cc /include_directory=("./include","./src") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src]text.obj [.src]text.c +$ endif +$ if f$search("[.src]unicode.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src]unicode.obj" +$ cc /include_directory=("./include","./src") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src]unicode.obj [.src]unicode.c +$ endif +$ if f$search("[.src.cursor]arrow.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.cursor]arrow.obj" +$ cc /include_directory=("./include","./src/cursor") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.cursor]arrow.obj [.src.cursor]arrow.c +$ endif +$ if f$search("[.src.cursor]cross.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.cursor]cross.obj" +$ cc /include_directory=("./include","./src/cursor") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.cursor]cross.obj [.src.cursor]cross.c +$ endif +$ if f$search("[.src.cursor]default.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.cursor]default.obj" +$ cc /include_directory=("./include","./src/cursor") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.cursor]default.obj [.src.cursor]default.c +$ endif +$ if f$search("[.src.cursor]hidden.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.cursor]hidden.obj" +$ cc /include_directory=("./include","./src/cursor") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.cursor]hidden.obj [.src.cursor]hidden.c +$ endif +$ if f$search("[.src.cursor]text.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.cursor]text.obj" +$ cc /include_directory=("./include","./src/cursor") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.cursor]text.obj [.src.cursor]text.c +$ endif +$ if f$search("[.src.widget]button.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.widget]button.obj" +$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]button.obj [.src.widget]button.c +$ endif +$ if f$search("[.src.widget]checkbox.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.widget]checkbox.obj" +$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]checkbox.obj [.src.widget]checkbox.c +$ endif +$ if f$search("[.src.widget]combobox.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.widget]combobox.obj" +$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]combobox.obj [.src.widget]combobox.c +$ endif +$ if f$search("[.src.widget]entry.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.widget]entry.obj" +$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]entry.obj [.src.widget]entry.c +$ endif +$ if f$search("[.src.widget]frame.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.widget]frame.obj" +$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]frame.obj [.src.widget]frame.c +$ endif +$ if f$search("[.src.widget]image.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.widget]image.obj" +$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]image.obj [.src.widget]image.c +$ endif +$ if f$search("[.src.widget]label.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.widget]label.obj" +$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]label.obj [.src.widget]label.c +$ endif +$ if f$search("[.src.widget]listbox.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.widget]listbox.obj" +$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]listbox.obj [.src.widget]listbox.c +$ endif +$ if f$search("[.src.widget]menu.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.widget]menu.obj" +$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]menu.obj [.src.widget]menu.c +$ endif +$ if f$search("[.src.widget]numberentry.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.widget]numberentry.obj" +$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]numberentry.obj [.src.widget]numberentry.c +$ endif +$ if f$search("[.src.widget]progressbar.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.widget]progressbar.obj" +$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]progressbar.obj [.src.widget]progressbar.c +$ endif +$ if f$search("[.src.widget]radiobox.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.widget]radiobox.obj" +$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]radiobox.obj [.src.widget]radiobox.c +$ endif +$ if f$search("[.src.widget]scrollbar.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.widget]scrollbar.obj" +$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]scrollbar.obj [.src.widget]scrollbar.c +$ endif +$ if f$search("[.src.widget]separator.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.widget]separator.obj" +$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]separator.obj [.src.widget]separator.c +$ endif +$ if f$search("[.src.widget]submenu.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.widget]submenu.obj" +$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]submenu.obj [.src.widget]submenu.c +$ endif +$ if f$search("[.src.widget]treeview.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.widget]treeview.obj" +$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]treeview.obj [.src.widget]treeview.c +$ endif +$ if f$search("[.src.widget]viewport.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.widget]viewport.obj" +$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]viewport.obj [.src.widget]viewport.c +$ endif +$ if f$search("[.src.widget]window.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.widget]window.obj" +$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]window.obj [.src.widget]window.c +$ endif +$ if f$search("[.src.widget]box.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.widget]box.obj" +$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]box.obj [.src.widget]box.c +$ endif +$ if f$search("[.src.dialog]colorpicker.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.dialog]colorpicker.obj" +$ cc /include_directory=("./include","./src/dialog") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.dialog]colorpicker.obj [.src.dialog]colorpicker.c +$ endif +$ if f$search("[.src.dialog]directorychooser.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.dialog]directorychooser.obj" +$ cc /include_directory=("./include","./src/dialog") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.dialog]directorychooser.obj [.src.dialog]directorychooser.c +$ endif +$ if f$search("[.src.dialog]filechooser.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.dialog]filechooser.obj" +$ cc /include_directory=("./include","./src/dialog") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.dialog]filechooser.obj [.src.dialog]filechooser.c +$ endif +$ if f$search("[.src.dialog]messagebox.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.dialog]messagebox.obj" +$ cc /include_directory=("./include","./src/dialog") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.dialog]messagebox.obj [.src.dialog]messagebox.c +$ endif +$ if f$search("[.src.font]boldfont.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.font]boldfont.obj" +$ cc /include_directory=("./include","./src/font") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.font]boldfont.obj [.src.font]boldfont.c +$ endif +$ if f$search("[.src.font]boldttf.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.font]boldttf.obj" +$ cc /include_directory=("./include","./src/font") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.font]boldttf.obj [.src.font]boldttf.c +$ endif +$ if f$search("[.src.font]font.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.font]font.obj" +$ cc /include_directory=("./include","./src/font") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.font]font.obj [.src.font]font.c +$ endif +$ if f$search("[.src.font]ttf.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.font]ttf.obj" +$ cc /include_directory=("./include","./src/font") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.font]ttf.obj [.src.font]ttf.c +$ endif +$ if f$search("[.src.icon]back.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.icon]back.obj" +$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]back.obj [.src.icon]back.c +$ endif +$ if f$search("[.src.icon]clock.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.icon]clock.obj" +$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]clock.obj [.src.icon]clock.c +$ endif +$ if f$search("[.src.icon]computer.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.icon]computer.obj" +$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]computer.obj [.src.icon]computer.c +$ endif +$ if f$search("[.src.icon]directory.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.icon]directory.obj" +$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]directory.obj [.src.icon]directory.c +$ endif +$ if f$search("[.src.icon]down.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.icon]down.obj" +$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]down.obj [.src.icon]down.c +$ endif +$ if f$search("[.src.icon]error.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.icon]error.obj" +$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]error.obj [.src.icon]error.c +$ endif +$ if f$search("[.src.icon]file.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.icon]file.obj" +$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]file.obj [.src.icon]file.c +$ endif +$ if f$search("[.src.icon]forward.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.icon]forward.obj" +$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]forward.obj [.src.icon]forward.c +$ endif +$ if f$search("[.src.icon]info.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.icon]info.obj" +$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]info.obj [.src.icon]info.c +$ endif +$ if f$search("[.src.icon]left.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.icon]left.obj" +$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]left.obj [.src.icon]left.c +$ endif +$ if f$search("[.src.icon]news.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.icon]news.obj" +$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]news.obj [.src.icon]news.c +$ endif +$ if f$search("[.src.icon]note.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.icon]note.obj" +$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]note.obj [.src.icon]note.c +$ endif +$ if f$search("[.src.icon]right.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.icon]right.obj" +$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]right.obj [.src.icon]right.c +$ endif +$ if f$search("[.src.icon]search.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.icon]search.obj" +$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]search.obj [.src.icon]search.c +$ endif +$ if f$search("[.src.icon]up.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.icon]up.obj" +$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]up.obj [.src.icon]up.c +$ endif +$ if f$search("[.src.icon]warning.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.icon]warning.obj" +$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]warning.obj [.src.icon]warning.c +$ endif +$ if f$search("[.src.abstract]directory.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.abstract]directory.obj" +$ cc /include_directory=("./include","./src/abstract") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.abstract]directory.obj [.src.abstract]directory.c +$ endif +$ if f$search("[.src.abstract]dynamic.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.abstract]dynamic.obj" +$ cc /include_directory=("./include","./src/abstract") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.abstract]dynamic.obj [.src.abstract]dynamic.c +$ endif +$ if f$search("[.src.abstract]time.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.abstract]time.obj" +$ cc /include_directory=("./include","./src/abstract") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.abstract]time.obj [.src.abstract]time.c +$ endif +$ if f$search("[.external]stb_ds.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.external]stb_ds.obj" +$ cc /include_directory=("./include","./external") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.external]stb_ds.obj [.external]stb_ds.c +$ endif +$ if f$search("[.src.backend]x11.obj;*") .eqs. "" +$ then +$ write sys$output "CC [.src.backend]x11.obj" +$ cc /include_directory=("./include","./src/backend") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.backend]x11.obj [.src.backend]x11.c +$ endif +$ if f$search("[.src]MwSHR.exe;*") .eqs. "" +$ then +$ write sys$output "LINK [.src]MwSHR.exe" +$ OPEN /WRITE LINK_OPT LINK.OPT +$ WRITE LINK_OPT "[.src]color.obj" +$ WRITE LINK_OPT "[.src]core.obj" +$ WRITE LINK_OPT "[.src]default.obj" +$ WRITE LINK_OPT "[.src]draw.obj" +$ WRITE LINK_OPT "[.src]error.obj" +$ WRITE LINK_OPT "[.src]lowlevel.obj" +$ WRITE LINK_OPT "[.src]string.obj" +$ WRITE LINK_OPT "[.src]text.obj" +$ WRITE LINK_OPT "[.src]unicode.obj" +$ WRITE LINK_OPT "[.src.cursor]arrow.obj" +$ WRITE LINK_OPT "[.src.cursor]cross.obj" +$ WRITE LINK_OPT "[.src.cursor]default.obj" +$ WRITE LINK_OPT "[.src.cursor]hidden.obj" +$ WRITE LINK_OPT "[.src.cursor]text.obj" +$ WRITE LINK_OPT "[.src.widget]button.obj" +$ WRITE LINK_OPT "[.src.widget]checkbox.obj" +$ WRITE LINK_OPT "[.src.widget]combobox.obj" +$ WRITE LINK_OPT "[.src.widget]entry.obj" +$ WRITE LINK_OPT "[.src.widget]frame.obj" +$ WRITE LINK_OPT "[.src.widget]image.obj" +$ WRITE LINK_OPT "[.src.widget]label.obj" +$ WRITE LINK_OPT "[.src.widget]listbox.obj" +$ WRITE LINK_OPT "[.src.widget]menu.obj" +$ WRITE LINK_OPT "[.src.widget]numberentry.obj" +$ WRITE LINK_OPT "[.src.widget]progressbar.obj" +$ WRITE LINK_OPT "[.src.widget]radiobox.obj" +$ WRITE LINK_OPT "[.src.widget]scrollbar.obj" +$ WRITE LINK_OPT "[.src.widget]separator.obj" +$ WRITE LINK_OPT "[.src.widget]submenu.obj" +$ WRITE LINK_OPT "[.src.widget]treeview.obj" +$ WRITE LINK_OPT "[.src.widget]viewport.obj" +$ WRITE LINK_OPT "[.src.widget]window.obj" +$ WRITE LINK_OPT "[.src.widget]box.obj" +$ WRITE LINK_OPT "[.src.dialog]colorpicker.obj" +$ WRITE LINK_OPT "[.src.dialog]directorychooser.obj" +$ WRITE LINK_OPT "[.src.dialog]filechooser.obj" +$ WRITE LINK_OPT "[.src.dialog]messagebox.obj" +$ WRITE LINK_OPT "[.src.font]boldfont.obj" +$ WRITE LINK_OPT "[.src.font]boldttf.obj" +$ WRITE LINK_OPT "[.src.font]font.obj" +$ WRITE LINK_OPT "[.src.font]ttf.obj" +$ WRITE LINK_OPT "[.src.icon]back.obj" +$ WRITE LINK_OPT "[.src.icon]clock.obj" +$ WRITE LINK_OPT "[.src.icon]computer.obj" +$ WRITE LINK_OPT "[.src.icon]directory.obj" +$ WRITE LINK_OPT "[.src.icon]down.obj" +$ WRITE LINK_OPT "[.src.icon]error.obj" +$ WRITE LINK_OPT "[.src.icon]file.obj" +$ WRITE LINK_OPT "[.src.icon]forward.obj" +$ WRITE LINK_OPT "[.src.icon]info.obj" +$ WRITE LINK_OPT "[.src.icon]left.obj" +$ WRITE LINK_OPT "[.src.icon]news.obj" +$ WRITE LINK_OPT "[.src.icon]note.obj" +$ WRITE LINK_OPT "[.src.icon]right.obj" +$ WRITE LINK_OPT "[.src.icon]search.obj" +$ WRITE LINK_OPT "[.src.icon]up.obj" +$ WRITE LINK_OPT "[.src.icon]warning.obj" +$ WRITE LINK_OPT "[.src.abstract]directory.obj" +$ WRITE LINK_OPT "[.src.abstract]dynamic.obj" +$ WRITE LINK_OPT "[.src.abstract]time.obj" +$ WRITE LINK_OPT "[.external]stb_ds.obj" +$ WRITE LINK_OPT "[.src.backend]x11.obj" +$ WRITE LINK_OPT "SYS$LIBRARY:DECW$XLIBSHR/SHARE/SHARE" +$ WRITE LINK_OPT "SYS$LIBRARY:DECC$SHR/SHARE/SHARE" +$ CLOSE LINK_OPT +$ link /SHAREABLE=[.src]MwSHR.exe LINK.OPT/options +$ DELETE LINK.OPT;* +$ endif diff --git a/vms/clean.com b/vms/clean.com new file mode 100644 index 0000000..e0900f2 --- /dev/null +++ b/vms/clean.com @@ -0,0 +1,63 @@ +$ if f$search("[.src]color.obj") .nes. "" then delete [.src]color.obj;* +$ if f$search("[.src]core.obj") .nes. "" then delete [.src]core.obj;* +$ if f$search("[.src]default.obj") .nes. "" then delete [.src]default.obj;* +$ if f$search("[.src]draw.obj") .nes. "" then delete [.src]draw.obj;* +$ if f$search("[.src]error.obj") .nes. "" then delete [.src]error.obj;* +$ if f$search("[.src]lowlevel.obj") .nes. "" then delete [.src]lowlevel.obj;* +$ if f$search("[.src]string.obj") .nes. "" then delete [.src]string.obj;* +$ if f$search("[.src]text.obj") .nes. "" then delete [.src]text.obj;* +$ if f$search("[.src]unicode.obj") .nes. "" then delete [.src]unicode.obj;* +$ if f$search("[.src.cursor]arrow.obj") .nes. "" then delete [.src.cursor]arrow.obj;* +$ if f$search("[.src.cursor]cross.obj") .nes. "" then delete [.src.cursor]cross.obj;* +$ if f$search("[.src.cursor]default.obj") .nes. "" then delete [.src.cursor]default.obj;* +$ if f$search("[.src.cursor]hidden.obj") .nes. "" then delete [.src.cursor]hidden.obj;* +$ if f$search("[.src.cursor]text.obj") .nes. "" then delete [.src.cursor]text.obj;* +$ if f$search("[.src.widget]button.obj") .nes. "" then delete [.src.widget]button.obj;* +$ if f$search("[.src.widget]checkbox.obj") .nes. "" then delete [.src.widget]checkbox.obj;* +$ if f$search("[.src.widget]combobox.obj") .nes. "" then delete [.src.widget]combobox.obj;* +$ if f$search("[.src.widget]entry.obj") .nes. "" then delete [.src.widget]entry.obj;* +$ if f$search("[.src.widget]frame.obj") .nes. "" then delete [.src.widget]frame.obj;* +$ if f$search("[.src.widget]image.obj") .nes. "" then delete [.src.widget]image.obj;* +$ if f$search("[.src.widget]label.obj") .nes. "" then delete [.src.widget]label.obj;* +$ if f$search("[.src.widget]listbox.obj") .nes. "" then delete [.src.widget]listbox.obj;* +$ if f$search("[.src.widget]menu.obj") .nes. "" then delete [.src.widget]menu.obj;* +$ if f$search("[.src.widget]numberentry.obj") .nes. "" then delete [.src.widget]numberentry.obj;* +$ if f$search("[.src.widget]progressbar.obj") .nes. "" then delete [.src.widget]progressbar.obj;* +$ if f$search("[.src.widget]radiobox.obj") .nes. "" then delete [.src.widget]radiobox.obj;* +$ if f$search("[.src.widget]scrollbar.obj") .nes. "" then delete [.src.widget]scrollbar.obj;* +$ if f$search("[.src.widget]separator.obj") .nes. "" then delete [.src.widget]separator.obj;* +$ if f$search("[.src.widget]submenu.obj") .nes. "" then delete [.src.widget]submenu.obj;* +$ if f$search("[.src.widget]treeview.obj") .nes. "" then delete [.src.widget]treeview.obj;* +$ if f$search("[.src.widget]viewport.obj") .nes. "" then delete [.src.widget]viewport.obj;* +$ if f$search("[.src.widget]window.obj") .nes. "" then delete [.src.widget]window.obj;* +$ if f$search("[.src.widget]box.obj") .nes. "" then delete [.src.widget]box.obj;* +$ if f$search("[.src.dialog]colorpicker.obj") .nes. "" then delete [.src.dialog]colorpicker.obj;* +$ if f$search("[.src.dialog]directorychooser.obj") .nes. "" then delete [.src.dialog]directorychooser.obj;* +$ if f$search("[.src.dialog]filechooser.obj") .nes. "" then delete [.src.dialog]filechooser.obj;* +$ if f$search("[.src.dialog]messagebox.obj") .nes. "" then delete [.src.dialog]messagebox.obj;* +$ if f$search("[.src.font]boldfont.obj") .nes. "" then delete [.src.font]boldfont.obj;* +$ if f$search("[.src.font]boldttf.obj") .nes. "" then delete [.src.font]boldttf.obj;* +$ if f$search("[.src.font]font.obj") .nes. "" then delete [.src.font]font.obj;* +$ if f$search("[.src.font]ttf.obj") .nes. "" then delete [.src.font]ttf.obj;* +$ if f$search("[.src.icon]back.obj") .nes. "" then delete [.src.icon]back.obj;* +$ if f$search("[.src.icon]clock.obj") .nes. "" then delete [.src.icon]clock.obj;* +$ if f$search("[.src.icon]computer.obj") .nes. "" then delete [.src.icon]computer.obj;* +$ if f$search("[.src.icon]directory.obj") .nes. "" then delete [.src.icon]directory.obj;* +$ if f$search("[.src.icon]down.obj") .nes. "" then delete [.src.icon]down.obj;* +$ if f$search("[.src.icon]error.obj") .nes. "" then delete [.src.icon]error.obj;* +$ if f$search("[.src.icon]file.obj") .nes. "" then delete [.src.icon]file.obj;* +$ if f$search("[.src.icon]forward.obj") .nes. "" then delete [.src.icon]forward.obj;* +$ if f$search("[.src.icon]info.obj") .nes. "" then delete [.src.icon]info.obj;* +$ if f$search("[.src.icon]left.obj") .nes. "" then delete [.src.icon]left.obj;* +$ if f$search("[.src.icon]news.obj") .nes. "" then delete [.src.icon]news.obj;* +$ if f$search("[.src.icon]note.obj") .nes. "" then delete [.src.icon]note.obj;* +$ if f$search("[.src.icon]right.obj") .nes. "" then delete [.src.icon]right.obj;* +$ if f$search("[.src.icon]search.obj") .nes. "" then delete [.src.icon]search.obj;* +$ if f$search("[.src.icon]up.obj") .nes. "" then delete [.src.icon]up.obj;* +$ if f$search("[.src.icon]warning.obj") .nes. "" then delete [.src.icon]warning.obj;* +$ if f$search("[.src.abstract]directory.obj") .nes. "" then delete [.src.abstract]directory.obj;* +$ if f$search("[.src.abstract]dynamic.obj") .nes. "" then delete [.src.abstract]dynamic.obj;* +$ if f$search("[.src.abstract]time.obj") .nes. "" then delete [.src.abstract]time.obj;* +$ if f$search("[.external]stb_ds.obj") .nes. "" then delete [.external]stb_ds.obj;* +$ if f$search("[.src.backend]x11.obj") .nes. "" then delete [.src.backend]x11.obj;* +$ if f$search("[.src]MwSHR.exe") .nes. "" then delete [.src]MwSHR.exe;*