summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorelbachir-one <bachiralfa@gmail.com>2025-05-18 04:48:32 +0100
committerelbachir-one <bachiralfa@gmail.com>2025-05-18 04:48:32 +0100
commit90050a84fcbfa0ee8668a0327b00ce62185c4d35 (patch)
treefed33dd7b689a8b604b988a9375a99069fbe6df2 /Makefile
parentcbb199e65c4784007bc4c5aca32c6a89f03b9993 (diff)
Enable automatic dependency tracking and improve Makefile robustness
- Added automatic header dependency generation using -MMD and -MP - Ensured build directories are created with mkdir -p - Improved quoting for install/uninstall paths to handle spaces - Adding a man page for SXWM
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile30
1 files changed, 21 insertions, 9 deletions
diff --git a/Makefile b/Makefile
index ad457e6..2721383 100644
--- a/Makefile
+++ b/Makefile
@@ -8,6 +8,10 @@ SRC_DIR := src
OBJ_DIR := build
SRC := $(wildcard $(SRC_DIR)/*.c)
OBJ := $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRC))
+DEP := $(OBJ:.o=.d)
+
+MAN := sxwm.1
+MAN_DIR := $(PREFIX)/share/man/man1
XSESSIONS := $(DESTDIR)$(PREFIX)/share/xsessions
@@ -17,28 +21,36 @@ $(BIN): $(OBJ)
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR)
- $(CC) $(CFLAGS) -c -o $@ $<
+ @mkdir -p $(dir $@)
+ $(CC) $(CFLAGS) -MMD -MP -c -o $@ $<
+
+-include $(DEP)
$(OBJ_DIR):
- mkdir -p $(OBJ_DIR)
+ @mkdir -p $@
clean:
- rm -rf $(OBJ_DIR) $(BIN)
+ @rm -rf $(OBJ_DIR) $(BIN)
install: all
@echo "Installing $(BIN) to $(DESTDIR)$(PREFIX)/bin..."
- @mkdir -p $(DESTDIR)$(PREFIX)/bin
- @install -m 755 $(BIN) $(DESTDIR)$(PREFIX)/bin/$(BIN)
+ @mkdir -p "$(DESTDIR)$(PREFIX)/bin"
+ @install -m 755 $(BIN) "$(DESTDIR)$(PREFIX)/bin/$(BIN)"
@echo "Installing sxwm.desktop to $(XSESSIONS)..."
- @mkdir -p $(XSESSIONS)
- @install -m 644 sxwm.desktop $(XSESSIONS)/sxwm.desktop
+ @mkdir -p "$(XSESSIONS)"
+ @install -m 644 sxwm.desktop "$(XSESSIONS)/sxwm.desktop"
+ @echo "Installing man page to $(DESTDIR)$(MAN_DIR)..."
+ @mkdir -p $(DESTDIR)$(MAN_DIR)
+ @install -m 644 $(MAN) $(DESTDIR)$(MAN_DIR)/
@echo "Installation complete."
uninstall:
@echo "Uninstalling $(BIN) from $(DESTDIR)$(PREFIX)/bin..."
- @rm -f $(DESTDIR)$(PREFIX)/bin/$(BIN)
+ @rm -f "$(DESTDIR)$(PREFIX)/bin/$(BIN)"
@echo "Uninstalling sxwm.desktop from $(XSESSIONS)..."
- @rm -f $(XSESSIONS)/sxwm.desktop
+ @rm -f "$(XSESSIONS)/sxwm.desktop"
+ @echo "Uninstalling man page from $(DESTDIR)$(MAN_DIR)..."
+ @rm -f $(DESTDIR)$(MAN_DIR)/$(MAN)
@echo "Uninstallation complete."
.PHONY: all clean install uninstall