Makefile (943B)
1 BUILD_DIR := $(CURDIR)/build
2 ENGINE := ../../engine
3 PLATFORM_FILE := $(BUILD_DIR)/platform
4 PLATFORMS := $(notdir $(wildcard runtimes/*))
5 EMBED_PLATFORMS := xbox n64 dreamcast ps1 saturn
6
7 .DEFAULT_GOAL := help
8
9 help:
10 @echo "Usage: make <platform>"
11 @echo "Platforms: $(PLATFORMS)"
12
13 $(PLATFORMS):
14 if [ -d "$(BUILD_DIR)" ]; then \
15 if [ -f "$(PLATFORM_FILE)" ]; then \
16 if [ "$$(cat "$(PLATFORM_FILE)")" != "$@" ]; then \
17 rm -rf "$(BUILD_DIR)"; \
18 fi; \
19 elif [ -n "$$(ls -A "$(BUILD_DIR)" 2>/dev/null)" ]; then \
20 rm -rf "$(BUILD_DIR)"; \
21 fi; \
22 fi
23 mkdir -p "$(BUILD_DIR)"
24 printf '%s\n' '$@' > "$(PLATFORM_FILE)"
25 $(MAKE) -C game BUILD="$(BUILD_DIR)/game"
26 $(MAKE) -C runtimes/$@ ENGINE="$(ENGINE)" BUILD_DIR="$(BUILD_DIR)" EMBED_GAME="$(if $(filter undefined,$(origin EMBED_GAME)),$(if $(filter $@,$(EMBED_PLATFORMS)),1,0),$(EMBED_GAME))"
27
28 clean:
29 rm -rf "$(BUILD_DIR)"
30 $(MAKE) -C game clean
31
32 .PHONY: help clean $(PLATFORMS)