Makefile 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. CC := cc
  2. CFLAGS := -Wall -Wextra -O2 -Isrc -I/usr/include/libxml2
  3. LDFLAGS :=
  4. LIBS := -lbeaker -lcurl -lxml2 -lpthread -lm -lssl -lcrypto
  5. SRC_DIR := src
  6. BIN_DIR := bin
  7. OBJ_DIR := obj
  8. SRCS := $(shell find $(SRC_DIR) -name '*.c')
  9. OBJS := $(SRCS:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o)
  10. TARGET := $(BIN_DIR)/omnisearch
  11. all: $(TARGET)
  12. $(TARGET): $(OBJS)
  13. @mkdir -p $(BIN_DIR)
  14. $(CC) $(OBJS) -o $@ $(LDFLAGS) $(LIBS)
  15. @echo "Build complete: $(TARGET)"
  16. $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
  17. @mkdir -p $(dir $@)
  18. $(CC) $(CFLAGS) -c $< -o $@
  19. @echo "Compiled: $<"
  20. run: $(TARGET)
  21. ./$(TARGET)
  22. clean:
  23. rm -rf $(OBJ_DIR) $(BIN_DIR)
  24. @echo "Cleaned build artifacts"
  25. rebuild: clean all
  26. info:
  27. @echo "Compiler: $(CC)"
  28. @echo "CFlags: $(CFLAGS)"
  29. @echo ""
  30. @echo "Sources to compile:"
  31. @echo "$(SRCS)" | tr ' ' '\n'
  32. @echo ""
  33. @echo "Object files to generate:"
  34. @echo "$(OBJS)" | tr ' ' '\n'
  35. PREFIX ?= /usr
  36. INSTALL_BIN_DIR := $(PREFIX)/bin
  37. DATA_DIR := /etc/omnisearch
  38. CONF_DIR := /etc/omnisearch
  39. VAR_DIR := /var/lib/omnisearch
  40. LOG_DIR := /var/log/omnisearch
  41. CACHE_DIR := /var/cache/omnisearch
  42. USER := omnisearch
  43. GROUP := omnisearch
  44. SYSTEMD_DIR := /etc/systemd/system
  45. OPENRC_DIR := /etc/init.d
  46. DINIT_DIR := /etc/dinit.d
  47. install:
  48. @echo "Available install targets:"
  49. @echo " make install-systemd"
  50. @echo " make install-openrc"
  51. @echo " make install-runit"
  52. @echo " make install-s6"
  53. @echo " make install-dinit"
  54. @echo ""
  55. @echo "Example: doas/sudo make install-openrc"
  56. install-systemd: $(TARGET)
  57. @mkdir -p $(DATA_DIR)/templates $(DATA_DIR)/static $(LOG_DIR) $(CACHE_DIR)
  58. @cp -rf templates/* $(DATA_DIR)/templates/
  59. @cp -rf static/* $(DATA_DIR)/static/
  60. @cp -n example-config.ini $(DATA_DIR)/config.ini || true
  61. install -m 755 $(TARGET) $(INSTALL_BIN_DIR)/omnisearch
  62. @echo "Setting up user '$(USER)'..."
  63. @(grep -q '^$(GROUP):' /etc/group || groupadd $(GROUP)) 2>/dev/null || true
  64. @id -u $(USER) >/dev/null 2>&1 || useradd --system --home $(DATA_DIR) --shell /usr/sbin/nologin -g $(GROUP) $(USER)
  65. @chown -R $(USER):$(GROUP) $(LOG_DIR) $(CACHE_DIR) $(VAR_DIR) $(DATA_DIR) 2>/dev/null || true
  66. @chown $(USER):$(GROUP) $(DATA_DIR)/config.ini 2>/dev/null || true
  67. install -m 644 init/systemd/omnisearch.service $(SYSTEMD_DIR)/omnisearch.service
  68. @echo ""
  69. @echo "Config: $(DATA_DIR)/config.ini"
  70. @echo "Edit config with: nano $(DATA_DIR)/config.ini"
  71. @echo "Installed systemd service to $(SYSTEMD_DIR)/omnisearch.service"
  72. @echo "Run 'systemctl enable --now omnisearch' to start"
  73. install-openrc: $(TARGET)
  74. @mkdir -p $(DATA_DIR)/templates $(DATA_DIR)/static $(LOG_DIR) $(CACHE_DIR)
  75. @cp -rf templates/* $(DATA_DIR)/templates/
  76. @cp -rf static/* $(DATA_DIR)/static/
  77. @cp -n example-config.ini $(DATA_DIR)/config.ini || true
  78. install -m 755 $(TARGET) $(INSTALL_BIN_DIR)/omnisearch
  79. @echo "Setting up user '$(USER)'..."
  80. @(grep -q '^$(GROUP):' /etc/group || groupadd $(GROUP)) 2>/dev/null || true
  81. @id -u $(USER) >/dev/null 2>&1 || useradd --system --home $(DATA_DIR) --shell /usr/sbin/nologin -g $(GROUP) $(USER)
  82. @chown -R $(USER):$(GROUP) $(LOG_DIR) $(CACHE_DIR) $(VAR_DIR) $(DATA_DIR) 2>/dev/null || true
  83. @chown $(USER):$(GROUP) $(DATA_DIR)/config.ini 2>/dev/null || true
  84. install -m 755 init/openrc/omnisearch $(OPENRC_DIR)/omnisearch
  85. @echo ""
  86. @echo "Config: $(DATA_DIR)/config.ini"
  87. @echo "Edit config with: nano $(DATA_DIR)/config.ini"
  88. @echo "Installed openrc service to $(OPENRC_DIR)/omnisearch"
  89. @echo "Run 'rc-update add omnisearch default' to enable"
  90. install-runit: $(TARGET)
  91. @mkdir -p $(DATA_DIR)/templates $(DATA_DIR)/static $(LOG_DIR) $(CACHE_DIR)
  92. @cp -rf templates/* $(DATA_DIR)/templates/
  93. @cp -rf static/* $(DATA_DIR)/static/
  94. @cp -n example-config.ini $(DATA_DIR)/config.ini || true
  95. install -m 755 $(TARGET) $(INSTALL_BIN_DIR)/omnisearch
  96. @echo "Setting up user '$(USER)'..."
  97. @(grep -q '^$(GROUP):' /etc/group || groupadd $(GROUP)) 2>/dev/null || true
  98. @id -u $(USER) >/dev/null 2>&1 || useradd --system --home $(DATA_DIR) --shell /usr/sbin/nologin -g $(GROUP) $(USER)
  99. @chown -R $(USER):$(GROUP) $(LOG_DIR) $(CACHE_DIR) $(VAR_DIR) $(DATA_DIR) 2>/dev/null || true
  100. @chown $(USER):$(GROUP) $(DATA_DIR)/config.ini 2>/dev/null || true
  101. @mkdir -p /etc/service/omnisearch/log/supervise/control
  102. install -m 755 init/runit/run /etc/service/omnisearch/run
  103. install -m 755 init/runit/log/run /etc/service/omnisearch/log/run
  104. install -m 755 init/runit/log/run /etc/service/omnisearch/log/supervise/control
  105. @echo ""
  106. @echo "Config: $(DATA_DIR)/config.ini"
  107. @echo "Edit config with: nano $(DATA_DIR)/config.ini"
  108. @echo "Installed runit service to /etc/service/omnisearch"
  109. @echo "Service will start automatically"
  110. install-s6: $(TARGET)
  111. @mkdir -p $(DATA_DIR)/templates $(DATA_DIR)/static $(LOG_DIR) $(CACHE_DIR)
  112. @cp -rf templates/* $(DATA_DIR)/templates/
  113. @cp -rf static/* $(DATA_DIR)/static/
  114. @cp -n example-config.ini $(DATA_DIR)/config.ini || true
  115. install -m 755 $(TARGET) $(INSTALL_BIN_DIR)/omnisearch
  116. @echo "Setting up user '$(USER)'..."
  117. @(grep -q '^$(GROUP):' /etc/group || groupadd $(GROUP)) 2>/dev/null || true
  118. @id -u $(USER) >/dev/null 2>&1 || useradd --system --home $(DATA_DIR) --shell /usr/sbin/nologin -g $(GROUP) $(USER)
  119. @chown -R $(USER):$(GROUP) $(LOG_DIR) $(CACHE_DIR) $(VAR_DIR) $(DATA_DIR) 2>/dev/null || true
  120. @chown $(USER):$(GROUP) $(DATA_DIR)/config.ini 2>/dev/null || true
  121. @mkdir -p /var/service/omnisearch/log/supervise/control
  122. install -m 755 init/s6/run /var/service/omnisearch/run
  123. install -m 755 init/s6/log/run /var/service/omnisearch/log/run
  124. install -m 755 init/s6/log/run /var/service/omnisearch/log/supervise/control
  125. @echo ""
  126. @echo "Config: $(DATA_DIR)/config.ini"
  127. @echo "Edit config with: nano $(DATA_DIR)/config.ini"
  128. @echo "Installed s6 service to /var/service/omnisearch"
  129. @echo "Service will start automatically"
  130. install-dinit: $(TARGET)
  131. @mkdir -p $(DATA_DIR)/templates $(DATA_DIR)/static $(LOG_DIR) $(CACHE_DIR)
  132. @cp -rf templates/* $(DATA_DIR)/templates/
  133. @cp -rf static/* $(DATA_DIR)/static/
  134. @cp -n example-config.ini $(DATA_DIR)/config.ini || true
  135. install -m 755 $(TARGET) $(INSTALL_BIN_DIR)/omnisearch
  136. @echo "Setting up user '$(USER)'..."
  137. @(grep -q '^$(GROUP):' /etc/group || groupadd $(GROUP)) 2>/dev/null || true
  138. @id -u $(USER) >/dev/null 2>&1 || useradd --system --home $(DATA_DIR) --shell /usr/sbin/nologin -g $(GROUP) $(USER)
  139. @chown -R $(USER):$(GROUP) $(LOG_DIR) $(CACHE_DIR) $(VAR_DIR) $(DATA_DIR) 2>/dev/null || true
  140. @chown $(USER):$(GROUP) $(DATA_DIR)/config.ini 2>/dev/null || true
  141. install -m 644 init/dinit/omnisearch $(DINIT_DIR)/omnisearch
  142. @echo ""
  143. @echo "Config: $(DATA_DIR)/config.ini"
  144. @echo "Edit config with: nano $(DATA_DIR)/config.ini"
  145. @echo "Installed dinit service to $(DINIT_DIR)/omnisearch"
  146. @echo "Run 'dinitctl enable omnisearch' to start"
  147. uninstall:
  148. rm -f $(INSTALL_BIN_DIR)/omnisearch
  149. rm -rf $(DATA_DIR)
  150. rm -f $(SYSTEMD_DIR)/omnisearch.service
  151. rm -f $(OPENRC_DIR)/omnisearch
  152. rm -f $(DINIT_DIR)/omnisearch
  153. rm -rf /etc/service/omnisearch
  154. rm -rf /var/service/omnisearch
  155. @id -u $(USER) >/dev/null 2>&1 && userdel $(USER) 2>/dev/null || true
  156. @grep -q '^$(GROUP):' /etc/group 2>/dev/null && groupdel $(GROUP) 2>/dev/null || true
  157. @echo "Uninstalled omnisearch"
  158. .PHONY: all run clean rebuild info install install-systemd install-openrc install-runit install-s6 install-dinit uninstall