From bea760abc69713be0723bc68efad7254e10351c3 Mon Sep 17 00:00:00 2001 From: Scott Duensing Date: Sat, 20 Nov 2021 16:27:43 -0600 Subject: [PATCH] Build improvements, support files moved to "data" folder. --- .gitignore | 6 ++--- client/Makefile.djgpp => Makefile.djgpp | 13 ++++++---- client/build.sh => build.sh | 32 ++++++++++-------------- client/client.pro | 11 +++++--- client/postBuild.sh | 26 +++++++++++++++++++ client/src/main.c | 26 +++++++++++++++++-- client/src/system/memory.c | 3 +++ client/src/system/os.h | 1 + client/src/test.c | 6 ++--- client/src/welcome.c | 2 +- shared/thirdparty/memwatch/memwatch.o | Bin 65520 -> 0 bytes client/test.conf => test.conf | 0 client/test.sh => test.sh | 0 13 files changed, 89 insertions(+), 37 deletions(-) rename client/Makefile.djgpp => Makefile.djgpp (87%) rename client/build.sh => build.sh (68%) create mode 100755 client/postBuild.sh delete mode 100644 shared/thirdparty/memwatch/memwatch.o rename client/test.conf => test.conf (100%) rename client/test.sh => test.sh (100%) diff --git a/.gitignore b/.gitignore index aa12e67..ea51266 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,6 @@ build-* *.user *.o -client/bin/ -client/obj/ -client/retired/ +bin/ +obj/ +retired/ diff --git a/client/Makefile.djgpp b/Makefile.djgpp similarity index 87% rename from client/Makefile.djgpp rename to Makefile.djgpp index ddd89ea..725b045 100644 --- a/client/Makefile.djgpp +++ b/Makefile.djgpp @@ -26,16 +26,15 @@ DEBUG = -g ## CHANGE THIS ## TARGET = client -SRCDIR = src -SHARED = ../shared +SRCDIR = . OBJDIR = obj BINDIR = bin ## CHANGE THIS ## # CFLAGS, LDFLAGS, CPPFLAGS, PREFIX can be overriden on CLI CFLAGS := $(DEBUG) -CFLAGS += -I$(SRCDIR) -I$(SRCDIR)/system -I$(SRCDIR)/dos -I$(SRCDIR)/gui -I$(SRCDIR)/thirdparty -CFLAGS += -I$(SHARED) -I$(SHARED)/thirdparty +CFLAGS += -I$(SRCDIR)/client/src -I$(SRCDIR)/client/src/system -I$(SRCDIR)/client/src/dos -I$(SRCDIR)/client/src/gui -I$(SRCDIR)/client/src/thirdparty +CFLAGS += -I$(SRCDIR)/shared -I$(SRCDIR)/shared/thirdparty CPPFLAGS := LDFLAGS := PREFIX := /usr/local @@ -55,13 +54,17 @@ ALL_LDLIBS := -lc # Source, Binaries, Dependencies -SRC := $(shell find $(SRCDIR) -type f -name '*.c' | grep -v '/linux/' && find $(SHARED) -type f -name '*.c') +SRC := $(shell find $(SRCDIR) -type f -name '*.c' | grep -v '/linux/' | grep -v '/server/' | grep -v '/font/' | grep -v '/retired/') OBJ := $(patsubst $(SRCDIR)/%,$(OBJDIR)/%,$(SRC:.c=.o)) DEP := $(OBJ:.o=.d) BIN := $(BINDIR)/$(TARGET) -include $(DEP) +#$(info [${SRC}]) +#$(info [${OBJ}]) + + # Verbosity Control, ala automake V = 0 diff --git a/client/build.sh b/build.sh similarity index 68% rename from client/build.sh rename to build.sh index 12bd7f3..53fd798 100755 --- a/client/build.sh +++ b/build.sh @@ -18,26 +18,20 @@ # along with this program. If not, see . # -mkdir -p bin obj/system obj/dos obj/gui obj/thirdparty/memwatch obj/thirdparty/serial +mkdir -p \ + bin/data \ + obj/client/src/system \ + obj/client/src/dos \ + obj/client/src/gui \ + obj/client/src/thirdparty/serial \ + obj/shared/thirdparty/memwatch \ + obj/shared/thirdparty/blowfish-api \ + obj/shared/thirdparty/ini/src + source /opt/cross/djgpp/setenv + make -f Makefile.djgpp + rm bin/client -cp data/* bin/. -:<<'SKIP' -[[ -f bin/CLIENT.LOG ]] && rm bin/CLIENT.LOG - -cat <<-'BATCH' > bin/test.bat - @echo off - :wait - if not exist flag.dat goto wait - del flag.dat - client.exe 800 600 16 -BATCH - -touch bin/flag.dat -while [[ ! -f bin/CLIENT.LOG ]]; do - /bin/true -done -tail -f bin/CLIENT.LOG -SKIP +cp client/data/* bin/data/. diff --git a/client/client.pro b/client/client.pro index b427574..d56b1dc 100644 --- a/client/client.pro +++ b/client/client.pro @@ -137,15 +137,18 @@ LIBS = \ -lSDL2 OTHER_FILES = \ - Makefile.djgpp \ $$DOS_HEADERS \ $$DOS_SOURCES \ - build.sh \ - test.sh \ - test.conf + ../Makefile.djgpp \ + ../build.sh \ + ../test.sh \ + ../test.conf \ + postBuild.sh testing { DEFINES *= TESTING HEADERS += src/test.h SOURCES += src/test.c } + +QMAKE_POST_LINK = $$PWD/postBuild.sh "$$PWD" "$$DESTDIR" diff --git a/client/postBuild.sh b/client/postBuild.sh new file mode 100755 index 0000000..e1a7182 --- /dev/null +++ b/client/postBuild.sh @@ -0,0 +1,26 @@ +#!/bin/bash -e + +# +# Kangaroo Punch MultiPlayer Game Server Mark II +# Copyright (C) 2020-2021 Scott Duensing +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + + +SOURCE=$1 +TARGET=$2 + +mkdir -p ${TARGET}/data +cp ${SOURCE}/data/* ${TARGET}/data/. diff --git a/client/src/main.c b/client/src/main.c index 9b0f158..8a532ec 100644 --- a/client/src/main.c +++ b/client/src/main.c @@ -30,7 +30,6 @@ * - Find a light grey to replace white widget data areas * - No thumb in listbox scrollbar * - Layout container widgets! - * - DOS makefile is placing thirdparty object files in the wrong place */ @@ -46,6 +45,7 @@ #include "timer.h" #include "gui.h" #include "config.h" +#include "util.h" #include "welcome.h" @@ -68,7 +68,7 @@ static void taskGuiEventLoop(void *data) { (void)data; - pointer = imageLoad("mouse.png"); + pointer = imageLoad("data/mouse.png"); alpha = imagePixelGet(pointer, 5, 0); do { @@ -110,6 +110,11 @@ static void taskGuiEventLoop(void *data) { int main(int argc, char *argv[]) { +#ifndef __linux__ + // On DOS, display the contets of the log now that we're back in text mode. + char *logName = NULL; + FILE *in = NULL; +#endif memoryStartup(argv[0]); logOpenByHandle(memoryLogHandleGet()); @@ -163,5 +168,22 @@ int main(int argc, char *argv[]) { logClose(); memoryShutdown(); +#ifndef __linux__ + //***TODO*** Why the frack does this not work?! + textmode(C80); + // On DOS, display the contets of the log now that we're back in text mode. + logName = utilAppNameWithNewExtensionGet(argv[0], "log"); + in = fopen(logName, "r"); + if (in) { + while (!feof(in)) { + putc(fgetc(in), stdout); + } + fclose(in); + free(in); + } + free(logName); + _Exit(0); +#endif + return 0; } diff --git a/client/src/system/memory.c b/client/src/system/memory.c index 64c48ff..0ca517f 100644 --- a/client/src/system/memory.c +++ b/client/src/system/memory.c @@ -40,8 +40,11 @@ void memoryOutput(int c) { fputc(c, _memoryLog); fflush(_memoryLog); +#ifdef __linux__ + // Also output to stdout on Linux. fputc(c, stdout); fflush(stdout); +#endif } #endif diff --git a/client/src/system/os.h b/client/src/system/os.h index c1ea19c..25df85c 100644 --- a/client/src/system/os.h +++ b/client/src/system/os.h @@ -49,6 +49,7 @@ long biostime(int cmd, long newtime); #include #include #include +#include #include #include diff --git a/client/src/test.c b/client/src/test.c index f7f3d07..eefdf91 100644 --- a/client/src/test.c +++ b/client/src/test.c @@ -123,7 +123,7 @@ static void test(void *data) { guiAttach(W(desktop), W(w4)); // Window 1 - p1 = pictureNew(0, 0, "kanga.png"); + p1 = pictureNew(0, 0, "data/kanga.png"); guiAttach(W(w1), W(p1)); lb1 = listboxNew(155, 10, 120, 140, "List Box"); listboxItemAdd(lb1, "One"); @@ -213,7 +213,7 @@ void taskTestTagList(void *data) { T_X, 300, T_Y, 25, T_WIDTH, 300, T_HEIGHT, 200, T_PICTURE, O(p1), T_X, 0, T_Y, 0, - T_FILENAME, P("kanga.png"), + T_FILENAME, P("data/kanga.png"), T_PICTURE, T_DONE, T_LISTBOX, O(lb1), T_TITLE, P("Listbox"), @@ -331,7 +331,7 @@ static void testTerminal(void *data) { (void)data; // Load ANSI file for terminal test. - in = fopen("kanga.ans", "rt"); + in = fopen("data/kanga.ans", "rt"); fseek(in, 0, SEEK_END); length = ftell(in); fseek(in, 0, SEEK_SET); diff --git a/client/src/welcome.c b/client/src/welcome.c index 36ba852..407d4c8 100644 --- a/client/src/welcome.c +++ b/client/src/welcome.c @@ -71,7 +71,7 @@ void taskWelcome(void *data) { T_TITLE, P("Welcome to KangaWorld!"), T_WIDTH, 500, T_HEIGHT, 225, T_PICTURE, O(picLogo), - T_FILENAME, P("logo.png"), + T_FILENAME, P("data/logo.png"), T_X, 18, T_Y, 18, T_PICTURE, T_DONE, T_BUTTON, O(btnQuit), diff --git a/shared/thirdparty/memwatch/memwatch.o b/shared/thirdparty/memwatch/memwatch.o deleted file mode 100644 index 0e6b4d040ac9ca398d1726f4287cc6fa402667bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65520 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 y(q!0