2D_Engine_C/Makefile

70 lines
1.4 KiB
Makefile

SHELL = /usr/bin/env bash
ROOT := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
ifneq ($(realpath $(ROOT)/config.mk), $(ROOT)/config.mk)
$(error ERROR: Please run the configure script before building.)
endif
include $(ROOT)/config.mk
#
# User config
#
BUILD_DIR_NAME = build
SOURCE_DIR = src
CORE_DIR = core
HOST_DIR = host
OUTPUT = 2D_Engine
ASSET_OUTPUT = game.data
ifneq ($(DEBUG),)
CFLAGS += -O1 -g -DDEBUG=$(DEBUG) -Wextra -Wall --pedantic -Wno-missing-braces \
-Wno-missing-field-initializers -Wformat=2 -Wswitch-default -Wswitch \
-Wcast-align -Wpointer-arith -Wbad-function-cast -Wstrict-overflow=5 \
-Wstrict-prototypes -Winline -Wundef -Wnested-externs -Wcast-qual \
-Wshadow -Wunreachable-code -Wlogical-op -Wfloat-equal -Wstrict-aliasing=2 \
-Wredundant-decls -Wold-style-definition
endif
#
# End
#
# Relocate build dir
BUILD_DIR := $(ROOT)/$(BUILD_DIR_NAME)/$(HOST)
# Verbosity
Q := @
ifeq ($(VERBOSE), 1)
Q :=
endif
# Colors
GREEN := \033[32m
YELLOW := \033[33m
RESET := \033[m
# Default targets
all: setup $(BUILD_DIR)/$(OUTPUT)
include $(ROOT)/$(SOURCE_DIR)/Makefile
include $(ROOT)/$(CORE_DIR)/Makefile
setup:
$(eval export TOTAL_BUILD_FILES := $(shell echo $$(($$(make -n $(OBJECTS) $(CORE_OBJECTS) 2>/dev/null | grep -c $(CC)) + 2))))
$(Q)mkdir -p $(dir $(OBJECTS) $(CORE_OBJECTS))
.PHONY: clean run print-var-%
clean:
$(Q)rm -rf $(dir $(BUILD_DIR))
run: all
$(Q)cd $(BUILD_DIR) && ./$(OUTPUT)
print-var-% :
@echo $($*)