aboutsummaryrefslogtreecommitdiff
path: root/makefile
diff options
context:
space:
mode:
Diffstat (limited to 'makefile')
-rw-r--r--makefile27
1 files changed, 23 insertions, 4 deletions
diff --git a/makefile b/makefile
index c08daf5..8acb3ee 100644
--- a/makefile
+++ b/makefile
@@ -1,3 +1,11 @@
+ifeq ($(PREFIX),)
+ PREFIX := /usr/local
+endif
+
+ifeq ($(BINDIR),)
+ BINDIR := /sbin
+endif
+
# Compiler
CXX = g++
@@ -32,13 +40,13 @@ OBJ_DIR = obj
DEBUG_OBJ_DIR = obj/debug
# Target executable
-TARGET = wg2sd
+CMD = wg2sd
# Build rules
all: CXXFLAGS += $(RELEASE_FLAGS)
all: targets
-targets: $(TARGET)
+targets: $(CMD)
tests: $(TEST_TARGETS)
@@ -46,7 +54,7 @@ debug: CXXFLAGS += $(DEBUGFLAGS)
debug: OBJ_DIR = $(DEBUG_OBJ_DIR)
debug: tests targets
-$(TARGET): $(addprefix $(OBJ_DIR)/, $(OBJECTS))
+$(CMD): $(addprefix $(OBJ_DIR)/, $(OBJECTS))
$(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -o $@
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp | $(OBJ_DIR)
@@ -58,16 +66,27 @@ $(TEST_DIR)/%: $(TEST_DIR)/%.cpp $(addprefix $(OBJ_DIR)/, wg2sd.o) | $(OBJ_DIR)
$(OBJ_DIR) $(DEBUG_OBJ_DIR):
mkdir -p $@
+install:
+ mkdir -p $(DESTDIR)$(PREFIX)$(BINDIR)/
+ install -m 755 $(CMD) $(DESTDIR)$(PREFIX)$(BINDIR)/
+
+uninstall:
+ rm -rf $(DESTDIR)$(PREFIX)$(BINDIR)/$(CMD)
+
# Clean rule
clean:
rm -rf $(OBJ_DIR) $(DEBUG_OBJ_DIR) $(TARGET) $(TEST_TARGETS)
+.PHONY: install uninstall all clean targets tests
+
# Help rule
help:
@echo "Available targets:"
@echo " all (default) : Build the project"
- @echo " release : Build the project with release flags"
@echo " tests : Build the tests"
@echo " debug : Build the project and tests with debug flags"
@echo " clean : Remove all build artifacts"
+ @echo " install : install build executables"
+ @echo " uninstall : uninstall build executables"
@echo " help : Display this help message"
+