File 0004-Makefile-for-Linux-builds.patch of Package wangemu
From c7aea5bcf8f64f45e3984490b50cdfe090fbbe94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= <kkaempf@gmail.com> Date: Fri, 3 Oct 2025 10:57:17 +0200 Subject: [PATCH 04/11] Makefile for Linux builds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Klaus Kämpf <kkaempf@gmail.com> --- Makefile.linux | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 Makefile.linux diff --git a/Makefile.linux b/Makefile.linux new file mode 100644 index 0000000..3f2a33f --- /dev/null +++ b/Makefile.linux @@ -0,0 +1,96 @@ +# This is a makefile for building the emulator on Linux. +# +# make targets: +# +# make -- shorthand for "make debug" +# make debug -- non-optimized wangemu build, and generate tags +# make opt -- optimized wangemu build, and generate tags +# make tags -- make ctags index from files in src/ +# make clean -- remove all build products +# make release -- create a "release" directory containing the app bundle and support files +# make dmg -- package the release files into a .dmg disk image + +.PHONY: debug opt tags clean release dmg + +# Add .d to Make's recognized suffixes. +.SUFFIXES: .c .cpp .mm .d .o + +# don't create dependency files for these targets +NODEPS := clean tags + +# Find all the source files in the src/ directory +CPP_SOURCES := $(shell find src -name "*.cpp") +C_SOURCES := $(shell find src -name "*.c") +H_SOURCES := $(shell find src -name "*.h") + +# These are the dependency files, which make will clean up after it creates them +DEPFILES := $(patsubst %.cpp,%.d,$(CPP_SOURCES)) \ + $(patsubst %.c,%.d,$(C_SOURCES)) + +OBJFILES := $(patsubst src/%.cpp,obj/%.o,$(CPP_SOURCES)) \ + $(patsubst src/%.c,obj/%.o,$(C_SOURCES)) + +# debug build +debug: OPTFLAGS := -g -O0 +debug: wangemu tags + +# optimized build +opt: OPTFLAGS := -O2 +opt: wangemu tags + +CXX := `wx-config --cxx` +CXXFLAGS := `wx-config --cxxflags` -fno-common +CXXWARNINGS := -Wall -Wextra -Wshadow -Wformat -Wundef -Wstrict-aliasing=1 \ + -Wno-deprecated-declarations \ + -Wno-ctor-dtor-privacy -Woverloaded-virtual +LDFLAGS := `wx-config --libs` + +# don't create dependencies when we're cleaning, for instance +ifeq (0, $(words $(findstring $(MAKECMDGOALS), $(NODEPS)))) + -include $(DEPFILES) +endif + +# ===== create the dependency files ===== + +src/%.d: src/%.cpp + $(CXX) $(CXXFLAGS) -MM -MT '$(patsubst src/%.cpp,obj/%.o,$<)' $< -MF $@ + +src/%.d: src/%.c + $(CXX) $(CXXFLAGS) -MM -MT '$(patsubst src/%.c,obj/%.o,$<)' $< -MF $@ + +# ===== build the .o files ===== + +obj/%.o: src/%.cpp src/%.d + @mkdir -p $(dir $@) + $(CXX) $(OPTFLAGS) $(CXXFLAGS) $(CXXWARNINGS) -o $@ -c $< + +obj/%.o: src/%.c src/%.d + @mkdir -p $(dir $@) + $(CXX) $(OPTFLAGS) $(CXXFLAGS) -o $@ -c $< + +# ==== link step ==== + +wangemu: $(OBJFILES) + $(CXX) $(OBJFILES) $(LDFLAGS) -o wangemu + +# ==== build ctags index file ==== + +tags: src/tags +src/tags: $(CPP_SOURCES) $(C_SOURCES) $(H_SOURCES) + (cd src; ctags *.h *.cpp *.c >& /dev/null) + +# ===== build a release directory ===== + +release: + @./make_release + +# ===== build the dmg disk image ===== + +dmg: + @./make_dmg + +# ===== clean build products ===== + +clean: + rm -f src/*.d src/tags obj/*.o *.dmg + rm -rf release -- 2.51.0