BASE_UXN := src/uxn SRC_DIR ?= src BUILD_DIR ?= build SRC_MAIN ?= $(SRC_DIR)/main.c EXE_NAME ?= uxnfb BIN := $(BUILD_DIR)/$(EXE_NAME) UXN_HEAD := $(BASE_UXN)/src/uxn.h TAL_SRC ?= $(BASE_UXN)/projects/examples/devices/screen.tal UXN_ROM ?= $(BUILD_DIR)/rom.rom UXN_ASM ?= $(BUILD_DIR)/uxnasm KBD_PATH ?= /dev/input/event1 MOUSE_PATH ?= /dev/input/mice C_DEFINES := -DKBD_PATH=\"$(KBD_PATH)\" -DMOUSE_PATH=\"$(MOUSE_PATH)\" CC ?= cc CFLAGS := -Wall -Wextra -static REL_FLAGS := -DNDEBUG -O2 DEB_FLAGS := -DDEBUG -O0 -g DEBUG ?= 0 ifeq ($(DEBUG), 1) CFLAGS += $(DEB_FLAGS) else ifeq ($(DEBUG), 2) CFLAGS += $(DEB_FLAGS) -fsanitize=address else CFLAGS += $(REL_FLAGS) endif .PHONY: build run clean main: $(BIN) $(BIN): $(SRC_MAIN) $(BUILD_DIR) $(UXN_HEAD) $(CC) $(CFLAGS) -o $(BIN) $(SRC_MAIN) $(C_DEFINES) $(BUILD_DIR): mkdir -p $(BUILD_DIR) $(UXN_HEAD): git submodule init git submodule update $(UXN_ASM): $(UXN_HEAD) $(CC) $(CFLAGS) -o $(UXN_ASM) $(BASE_UXN)/src/uxnasm.c $(UXN_ROM): $(UXN_ASM) ./$(UXN_ASM) $(TAL_SRC) $(UXN_ROM) run: $(BIN) $(UXN_ROM) ./$(BIN) $(UXN_ROM) clean: rm -rf $(BUILD_DIR)