From 62a7f58342992e8e7b30247a3abdc2f70f8ae789 Mon Sep 17 00:00:00 2001 From: jettis Date: Wed, 13 Aug 2025 23:33:28 +0300 Subject: [PATCH] Makefile and INSTALL doc changes --- INSTALL.linux-static | 33 +++++++++++++++++++++++++++++++ INSTALL.mingw32-linux | 3 +++ Makefile | 23 ++++++++++++++++++++-- Makefile.linux-static | 45 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 INSTALL.linux-static create mode 100644 Makefile.linux-static diff --git a/INSTALL.linux-static b/INSTALL.linux-static new file mode 100644 index 0000000..fa5b669 --- /dev/null +++ b/INSTALL.linux-static @@ -0,0 +1,33 @@ +Compile on older container to get binary that runs on older OS too (SDL doesn't compile on older than 20.04): +docker run -v .:/SDLRousku -it --rm ubuntu:20.04 + On Linux, install the packages listed at + https://github.com/libsdl-org/SDL/blob/main/docs/README-linux.md#build-dependencies + +in addition apt install xdd nasm libwayland-dev + +mkdir vendored +cd vendored +git clone https://github.com/libsdl-org/SDL.git +cd SDL +cmake -S . -B build -DBUILD_SHARED_LIBS=OFF +cmake --build build + +git clone https://github.com/libsdl-org/SDL_image.git +cd SDL_image/external +./download.sh +cd .. +cmake -S . -B build -DBUILD_SHARED_LIBS=OFF -DSDLIMAGE_VENDORED=ON -DCMAKE_PREFIX_PATH=../SDL/build +cmake --build build + +git clone https://github.com/libsdl-org/SDL_ttf.git +cd SDL_ttf/external/ +./download.sh +cd .. +cmake -S . -B build -DBUILD_SHARED_LIBS=OFF -DSDLTTF_VENDORED=ON -DCMAKE_PREFIX_PATH=../SDL/build +cmake --build build + + + +AppImage: +make install DESTDIR=AppDir +appimage-builder diff --git a/INSTALL.mingw32-linux b/INSTALL.mingw32-linux index c92fff4..04d870b 100644 --- a/INSTALL.mingw32-linux +++ b/INSTALL.mingw32-linux @@ -120,3 +120,6 @@ package() { done } ------------------------------------ + +x86_64-w64-mingw32-make -f Makefile.mingw +x86_64-w64-mingw32-strip Rousku.exe diff --git a/Makefile b/Makefile index d73a39f..eda53f5 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ NEW_DIALOG_OBJECTS = Dialog Item Button Checkbox DropDownList Scrollbar Listbox OBJECTS=main Animal Sound $(addprefix NewDialogs/,$(NEW_DIALOG_OBJECTS)) EXECUTABLE=Rousku -all: $(EXECUTABLE) +all: embed_data.h menu_png.h $(EXECUTABLE) $(EXECUTABLE): $(OBJECTS:%=%.o) $(CXX) $^ $(LDFLAGS) -o $@ @@ -20,6 +20,25 @@ $(EXECUTABLE): $(OBJECTS:%=%.o) $(CXX) $(CXXFLAGS) $< -o $@ $(CXX) -MM $(CXXFLAGS) $*.cpp > $*.d +embed_data.h: + @echo "Generating embed_data.h..." + @{ \ + find skin -name "*.png"; \ + find skin -name "*.wav"; \ + find skin -name "*.tsk"; \ + } | while read n; do \ + xxd -i "$$n"; \ + done > embed_data.h + +menu_png.h: + xxd -i menu.png > menu_png.h + .PHONY: clean clean: - rm `find . -name "*.o"` `find . -name "*.d"` $(EXECUTABLE) + rm `find . -name "*.o"` `find . -name "*.d"` embed_data.h menu_png.h $(EXECUTABLE) + +install: + mkdir -p $(DESTDIR)/usr/bin/ + cp $(EXECUTABLE) $(DESTDIR)/usr/bin/$(EXECUTABLE) + mkdir -p $(DESTDIR)/usr/share/icons/ + cp skin/Tavallinen/paikka/1.png $(DESTDIR)/usr/share/icons/rousku.png diff --git a/Makefile.linux-static b/Makefile.linux-static new file mode 100644 index 0000000..c8b23ea --- /dev/null +++ b/Makefile.linux-static @@ -0,0 +1,45 @@ +CXX=g++ + +# needs "override" because x86_64-w64-mingw32-make sets these as cmdline parameters +override CXXFLAGS += -c -Wall -Ivendored/SDL/include -Ivendored/SDL_image/include -Ivendored/SDL_ttf/include +#override LDFLAGS += $(shell pkg-config --libs sdl3 sdl3-ttf sdl3-image) +override LDFLAGS += -Wl,-Bstatic vendored/SDL/build/libSDL3.a vendored/SDL_image/build/libSDL3_image.a vendored/SDL_ttf/build/libSDL3_ttf.a -Wl,-Bdynamic -lpthread -ldl -static-libgcc -static-libstdc++ + +NEW_DIALOG_OBJECTS = Dialog Item Button Checkbox DropDownList Scrollbar Listbox Frame DlgDropDownList DlgMainMenu +OBJECTS=main Animal Sound $(addprefix NewDialogs/,$(NEW_DIALOG_OBJECTS)) +EXECUTABLE=Rousku + +all: embed_data.h menu_png.h $(EXECUTABLE) + +$(EXECUTABLE): $(OBJECTS:%=%.o) + $(CXX) $^ $(LDFLAGS) -o $@ + +# pull in dependency info for *existing* .o files +-include $(OBJECTS:%=%.d) + +%.o: %.cpp + $(CXX) $(CXXFLAGS) $< -o $@ + $(CXX) -MM $(CXXFLAGS) $*.cpp > $*.d + +embed_data.h: + @echo "Generating embed_data.h..." + @{ \ + find skin -name "*.png"; \ + find skin -name "*.wav"; \ + find skin -name "*.tsk"; \ + } | while read n; do \ + xxd -i "$$n"; \ + done > embed_data.h + +menu_png.h: + xxd -i menu.png > menu_png.h + +.PHONY: clean +clean: + rm `find . -name "*.o"` `find . -name "*.d"` embed_data.h menu_png.h $(EXECUTABLE) + +install: + mkdir -p $(DESTDIR)/usr/bin/ + cp $(EXECUTABLE) $(DESTDIR)/usr/bin/$(EXECUTABLE) + mkdir -p $(DESTDIR)/usr/share/icons/ + cp skin/Tavallinen/paikka/1.png $(DESTDIR)/usr/share/icons/rousku.png