main
44ceea7 ยท 1 month ago 7 commits
 1.DEFAULT_GOAL := all
 2SHELL := /bin/bash
 3
 4BUILD_DIR   := $(CURDIR)/builds
 5SWAY_DIR    := $(CURDIR)/swaylock-mod
 6WDU_DIR     := $(CURDIR)/wdu
 7TPLINKCTL_DIR := $(CURDIR)/tplinkctl 
 8INSTALL_DIR := $(HOME)/.wraith/bin
 9
10SWAY_BIN := swaylock
11WDU_BIN  := wdu
12TPLINKCTL_BIN := tplinkctl 
13
14GREEN  := \033[0;32m
15YELLOW := \033[0;33m
16RED    := \033[0;31m
17BLUE   := \033[0;34m
18BOLD   := \033[1m
19RESET  := \033[0m
20
21# ---------------------------------------------------------
22# ๐Ÿ” Dependency Checks
23# ---------------------------------------------------------
24define require
25	@command -v $(1) >/dev/null 2>&1 || { \
26		echo -e "$(RED)โœ– Missing dependency: $(1)$(RESET)"; \
27		echo -e "  โ†’ Please install $(1) and retry."; \
28		exit 1; \
29	}
30endef
31
32# ---------------------------------------------------------
33# Help
34# ---------------------------------------------------------
35help:
36	@echo -e "$(BLUE)Usage:$(RESET)"
37	@echo "  make <target>\n"
38	@echo -e "$(BLUE)Available targets:$(RESET)"
39	@echo "  help            Show this help menu"
40	@echo "  all             Build all components"
41	@echo "  swaylock        Build swaylock"
42	@echo "  wdu             Build wdu"
43	@echo "  tplinkctl       Build tplinkctl"
44	@echo "  install         Build and install binaries"
45	@echo "  clean           Remove all build artifacts\n"
46
47# ---------------------------------------------------------
48# Targets
49# ---------------------------------------------------------
50all: swaylock wdu tplinkctl
51	@echo -e "\n$(GREEN)All builds completed$(RESET)"
52	@echo -e "$(BOLD)Artifacts in $(BUILD_DIR)$(RESET)"
53
54prepare:
55	@mkdir -p $(BUILD_DIR)
56
57swaylock: prepare
58	@echo -e "\n$(BOLD)Building Swaylock$(RESET)"
59	$(call require,meson)
60	$(call require,ninja)
61
62	@if [ ! -d "$(SWAY_DIR)/build" ]; then \
63		echo -e "$(YELLOW)Configuring Meson$(RESET)"; \
64		cd $(SWAY_DIR) && meson setup build; \
65	fi
66
67	@cd $(SWAY_DIR) && meson compile -C build
68	@cp $(SWAY_DIR)/build/$(SWAY_BIN) $(BUILD_DIR)/$(SWAY_BIN)
69	@echo -e "$(GREEN)Swaylock built successfully$(RESET)"
70
71wdu: prepare
72	@echo -e "\n$(BOLD)Building WDU$(RESET)"
73	$(call require,go)
74
75	@cd $(WDU_DIR) && go build -o $(BUILD_DIR)/$(WDU_BIN)
76	@echo -e "$(GREEN)WDU built successfully$(RESET)"
77
78tplinkctl: prepare
79	@echo -e "\n$(BOLD)Building tplinkctl$(RESET)"
80	$(call require,go)
81
82	@cd $(TPLINKCTL_DIR) && go build -o $(BUILD_DIR)/$(TPLINKCTL_BIN)
83	@echo -e "$(GREEN)tplinkctl built successfully$(RESET)"
84
85install: all
86	@echo -e "\n$(BOLD)Installing binaries$(RESET)"
87	@mkdir -p $(INSTALL_DIR)
88	@cp $(BUILD_DIR)/$(SWAY_BIN) $(INSTALL_DIR)/
89	@cp $(BUILD_DIR)/$(WDU_BIN) $(INSTALL_DIR)/
90	@cp $(BUILD_DIR)/$(TPLINKCTL_BIN) $(INSTALL_DIR)/
91	@echo -e "$(GREEN)Installed to $(INSTALL_DIR)$(RESET)"
92
93clean:
94	@echo -e "\n$(YELLOW)Cleaning build artifacts$(RESET)"
95	@rm -rf $(BUILD_DIR)
96	@rm -rf $(SWAY_DIR)/build
97	@rm -rf $(WDU_DIR)/$(WDU_BIN)
98	@rm -rf $(TPLINKCTL_DIR)/$(TPLINKCTL_BIN)
99	@echo -e "$(GREEN)Clean complete$(RESET)\n"