From e9471615551747cd47dcff9ba46f7d8965f246f2 Mon Sep 17 00:00:00 2001 From: immibis Date: Wed, 19 Feb 2025 19:37:52 +0100 Subject: [PATCH] update makefile for standalone use --- Makefile | 53 +++++++++++++++++++++++++---------------------------- 1 file changed, 25 insertions(+), 28 deletions(-) diff --git a/Makefile b/Makefile index 6615937..9d6a3ef 100644 --- a/Makefile +++ b/Makefile @@ -1,22 +1,16 @@ PROJECT_ROOT = $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) +ifeq ($(PROJECT_ROOT),$(CURDIR)/) +BUILD_DIR=build/ +$(shell mkdir -p build) +else +BUILD_DIR=./ +endif -OBJS = pinetab2_framework.o game.o textbox.o inventory.o decompress_sprite.o +OBJS = main.o game.o textbox.o inventory.o decompress_sprite.o SPRITES = $(patsubst $(PROJECT_ROOT)sprites/%.xcf,%,$(wildcard $(PROJECT_ROOT)sprites/*.xcf)) NAVMESHES = $(patsubst $(PROJECT_ROOT)navmesh/%.tmx,%,$(wildcard $(PROJECT_ROOT)navmesh/*.tmx)) -BUILD_MODE := debug -ifeq ($(BUILD_MODE),debug) - CFLAGS += -g -else ifeq ($(BUILD_MODE),run) - CFLAGS += -O2 -else ifeq ($(BUILD_MODE),linuxtools) - CFLAGS += -g -pg -fprofile-arcs -ftest-coverage - LDFLAGS += -pg -fprofile-arcs -ftest-coverage - EXTRA_CLEAN += pinetab2_framework.gcda pinetab2_framework.gcno $(PROJECT_ROOT)gmon.out - EXTRA_CMDS = rm -rf pinetab2_framework.gcda -else - $(error Build mode $(BUILD_MODE) not supported by this Makefile) -endif +CFLAGS += -g CXX := aarch64-linux-gnu-g++ CC := aarch64-linux-gnu-gcc @@ -26,42 +20,45 @@ CFLAGS += -I/usr/include OBJS += $(patsubst %,sprite_%.o,$(SPRITES)) OBJS += $(patsubst %,navmesh_%.o,$(NAVMESHES)) -all: pinetab2_framework $(patsubst %,%.png,$(SPRITES)) +EXE=$(BUILD_DIR)pt2game -pinetab2_framework: $(OBJS) +# convert sprites to png so they can be included in tiled map files +all: $(EXE) $(patsubst %,$(BUILD_DIR)%.png,$(SPRITES)) + +$(EXE): $(patsubst %,$(BUILD_DIR)%,$(OBJS)) $(CXX) $(LDFLAGS) -o $@ $^ $(EXTRA_CMDS) -%.o: $(PROJECT_ROOT)%.cpp +$(BUILD_DIR)%.o: $(PROJECT_ROOT)%.cpp $(CXX) -c $(CFLAGS) $(CXXFLAGS) $(CPPFLAGS) -o $@ $< -%.o: $(PROJECT_ROOT)%.c +$(BUILD_DIR)%.o: $(PROJECT_ROOT)%.c $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $< -%.o: %.c +$(BUILD_DIR)%.o: $(BUILD_DIR)%.c $(CXX) -c $(CFLAGS) $(CXXFLAGS) $(CPPFLAGS) -o $@ $< -iquote "$(PROJECT_ROOT)" clean: - rm -fr pinetab2_framework $(OBJS) $(EXTRA_CLEAN) + rm -fr $(BUILD_DIR)/$(EXE) $(patsubst %,$(BUILD_DIR)%,$(OBJS)) -sprite_%.o: %.png $(PROJECT_ROOT)compress_sprite.py +$(BUILD_DIR)sprite_%.o: $(BUILD_DIR)%.png $(PROJECT_ROOT)compress_sprite.py python3 "$(PROJECT_ROOT)compress_sprite.py" "$<" $(patsubst %.o,%.raw,$@) - $(OBJCOPY) -I binary --rename-section .data=.rodata,alloc,load,readonly,data,contents $(patsubst %.o,%.raw,$@) $@ + cd $(BUILD_DIR) && $(OBJCOPY) -I binary --rename-section .data=.rodata,alloc,load,readonly,data,contents $(patsubst %.o,%.raw,$(notdir $@)) $(notdir $@) rm $(patsubst %.o,%.raw,$@) @# symbols are _binary_sprite_%_raw_start / _end / _size -navmesh_%.c: $(PROJECT_ROOT)navmesh/%.tmx $(PROJECT_ROOT)compile_navmesh.py - python3 "$(PROJECT_ROOT)compile_navmesh.py" "$<" "$@" "$(patsubst navmesh_%.c,%,$@)" +$(BUILD_DIR)navmesh_%.c: $(PROJECT_ROOT)navmesh/%.tmx $(PROJECT_ROOT)compile_navmesh.py + python3 "$(PROJECT_ROOT)compile_navmesh.py" "$<" "$@" "$(patsubst $(BUILD_DIR)navmesh_%.c,%,$@)" @# symbols are navmesh_% and predef_% -navmesh_%.o: $(PROJECT_ROOT)compiled_structures.h $(PROJECT_ROOT)objids.h -pinetab2_framework.o: $(PROJECT_ROOT)engine.h +$(BUILD_DIR)navmesh_%.o: $(PROJECT_ROOT)compiled_structures.h $(PROJECT_ROOT)objids.h +$(BUILD_DIR)main.o: $(PROJECT_ROOT)engine.h -%.png: $(PROJECT_ROOT)sprites/%.xcf +$(BUILD_DIR)%.png: $(PROJECT_ROOT)sprites/%.xcf gimp -in -b '(let ((image (car (gimp-xcf-load 0 "$<" "$(notdir $<)")))) ;\ ;(gimp-image-scale image 1280 800) ;\ (let ((layer (car (gimp-image-merge-visible-layers image CLIP-TO-IMAGE)))) ;\ - (file-png-save 1 image layer "$@" "$@" 0 9 0 0 0 0 0) ;\ + (file-png-save 1 image layer "$@" "$(notdir $@)" 0 9 0 0 0 0 0) ;\ ) ;\ )' -b '(gimp-quit 0)' \ No newline at end of file