69 lines
1.1 KiB
Makefile
69 lines
1.1 KiB
Makefile
export
|
|
|
|
SHELL = /usr/bin/env bash
|
|
|
|
ROOT := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
|
|
|
|
#
|
|
# User settings
|
|
#
|
|
|
|
BUILD_DIR = build
|
|
|
|
SOURCE_DIR = src
|
|
|
|
OUTPUT = brainfuck
|
|
|
|
CC = gcc
|
|
CFLAGS = --std=c17 -Os
|
|
LD_FLAGS =
|
|
|
|
ifneq ($(DEBUG),)
|
|
CFLAGS += -O0 -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 vars
|
|
BUILD_DIR := $(ROOT)/$(BUILD_DIR)
|
|
|
|
SOURCE_DIR := $(ROOT)/$(SOURCE_DIR)
|
|
|
|
OUTPUT := $(BUILD_DIR)/$(OUTPUT)
|
|
|
|
# Verbosity
|
|
export Q := @
|
|
ifeq ($(VERBOSE), 1)
|
|
Q :=
|
|
endif
|
|
|
|
# Colors
|
|
GREEN := \033[32m
|
|
YELLOW := \033[33m
|
|
RESET := \033[m
|
|
|
|
# Default targets
|
|
all: $(OUTPUT)
|
|
|
|
$(OUTPUT): FORCE
|
|
$(Q)cd $(SOURCE_DIR) && $(MAKE) $@
|
|
|
|
FORCE:
|
|
|
|
clean:
|
|
$(Q)rm -rf $(BUILD_DIR)
|
|
|
|
run: all
|
|
$(Q)cd $(BUILD_DIR) && ./$(notdir $(OUTPUT))
|
|
|
|
print-var-% :
|
|
@echo $($*)
|
|
|
|
.PHONY: clean run print-var-% |