# SPDX-FileCopyrightText: 2025 thorium1256 # # SPDX-License-Identifier: GPL-3.0-or-later # compiler stuff CXX := c++ CXXFLAGS := -I include -std=c++11 -Wall -Wextra DBG_CXXFLAGS := $(CXXFLAGS) -g RLS_CXXFLAGS := $(CXXFLAGS) -O2 # linker stuff LDFLAGS := -lncursesw -lSDL2 DBG_LDFLAGS := $(LDFLAGS) RLS_LDFLAGS := $(LDFLAGS) -s # directories BUILD_DIR := build SRC_DIR := src BIN_DIR := bin DBG_DIR := $(BIN_DIR)/debug RLS_DIR := $(BIN_DIR)/release DBG_EXEC := $(DBG_DIR)/debug RLS_STRIPPED_EXEC := $(RLS_DIR)/tuimine # install stuff PREFIX ?= /usr/local BINDIR ?= $(PREFIX)/bin DATADIR ?= $(PREFIX)/share APPLICATION ?= tuimine # sources and objects SRCS := $(wildcard $(SRC_DIR)/*.cpp) DBG_OBJS := $(patsubst $(SRC_DIR)/%.cpp,$(BUILD_DIR)/debug_%.o,$(SRCS)) RLS_OBJS := $(patsubst $(SRC_DIR)/%.cpp,$(BUILD_DIR)/release_%.o,$(SRCS)) $(shell mkdir -p $(BIN_DIR)) $(shell mkdir -p $(DBG_DIR)) $(shell mkdir -p $(RLS_DIR)) $(shell mkdir -p $(BUILD_DIR)) # phony rules .PHONY = all debug release clean install uninstall all: release debug: $(DBG_EXEC) release: $(RLS_STRIPPED_EXEC) both: debug release # linking $(DBG_EXEC): $(DBG_OBJS) $(CXX) -o $@ $^ $(DBG_LDFLAGS) $(RLS_STRIPPED_EXEC): $(RLS_OBJS) $(CXX) -o $@ $^ $(RLS_LDFLAGS) # compiling $(BUILD_DIR)/debug_%.o: $(SRC_DIR)/%.cpp $(CXX) -c -o $@ $< $(DBG_CXXFLAGS) $(BUILD_DIR)/release_%.o: $(SRC_DIR)/%.cpp $(CXX) -c -o $@ $< $(RLS_CXXFLAGS) install: release install -d $(DESTDIR)$(BINDIR) install -m 755 $(RLS_STRIPPED_EXEC) $(DESTDIR)$(BINDIR)/$(APPLICATION) uninstall: rm -f $(DESTDIR)$(BINDIR)/$(APPLICATION) clean: rm -rf $(BUILD_DIR) $(DBG_DIR) $(RLS_DIR)