70 lines
1.5 KiB
Makefile
70 lines
1.5 KiB
Makefile
# compiler stuff
|
|
CXX := c++
|
|
CXXFLAGS := -I include -std=c++11 -Wall -Wextra
|
|
DBG_CXXFLAGS := $(CXXFLAGS) -g
|
|
RLS_CXXFLAGS := $(CXXFLAGS) -O2
|
|
|
|
# linker stuff
|
|
LDFLAGS := -lncursesw
|
|
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)
|