mirror of
https://git.bwaaa.monster/omnisearch
synced 2026-03-25 17:19:02 +02:00
226 lines
8.9 KiB
Makefile
226 lines
8.9 KiB
Makefile
CC := cc
|
|
UNAME_S := $(shell uname -s)
|
|
PKG_CONFIG ?= pkg-config
|
|
PKG_DEPS := libxml-2.0 libcurl openssl
|
|
|
|
ifeq ($(UNAME_S),Darwin)
|
|
DEP_CFLAGS := $(shell $(PKG_CONFIG) --cflags $(PKG_DEPS) 2>/dev/null)
|
|
DEP_LIBS := $(shell $(PKG_CONFIG) --libs $(PKG_DEPS) 2>/dev/null)
|
|
CFLAGS := -Wall -Wextra -O2 -Isrc $(DEP_CFLAGS)
|
|
LIBS := -lbeaker $(DEP_LIBS) -lpthread -lm
|
|
else
|
|
CFLAGS := -Wall -Wextra -O2 -Isrc -I/usr/include/libxml2
|
|
LIBS := -lbeaker -lcurl -lxml2 -lpthread -lm -lssl -lcrypto
|
|
endif
|
|
|
|
LDFLAGS :=
|
|
|
|
SRC_DIR := src
|
|
BIN_DIR := bin
|
|
OBJ_DIR := obj
|
|
|
|
SRCS := $(shell find $(SRC_DIR) -name '*.c')
|
|
OBJS := $(SRCS:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o)
|
|
|
|
TARGET := $(BIN_DIR)/omnisearch
|
|
|
|
all: $(TARGET)
|
|
|
|
$(TARGET): $(OBJS)
|
|
@mkdir -p $(BIN_DIR)
|
|
$(CC) $(OBJS) -o $@ $(LDFLAGS) $(LIBS)
|
|
@echo "Build complete: $(TARGET)"
|
|
|
|
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
|
|
@mkdir -p $(dir $@)
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
@echo "Compiled: $<"
|
|
|
|
run: $(TARGET)
|
|
./$(TARGET)
|
|
|
|
clean:
|
|
rm -rf $(OBJ_DIR) $(BIN_DIR)
|
|
@echo "Cleaned build artifacts"
|
|
|
|
rebuild: clean all
|
|
|
|
info:
|
|
@echo "Compiler: $(CC)"
|
|
@echo "CFlags: $(CFLAGS)"
|
|
@echo ""
|
|
@echo "Sources to compile:"
|
|
@echo "$(SRCS)" | tr ' ' '\n'
|
|
@echo ""
|
|
@echo "Object files to generate:"
|
|
@echo "$(OBJS)" | tr ' ' '\n'
|
|
|
|
ifeq ($(UNAME_S),Darwin)
|
|
PREFIX ?= /usr/local
|
|
DATA_DIR ?= $(PREFIX)/etc/omnisearch
|
|
CONF_DIR ?= $(DATA_DIR)
|
|
VAR_DIR ?= $(PREFIX)/var/lib/omnisearch
|
|
LOG_DIR ?= $(PREFIX)/var/log/omnisearch
|
|
CACHE_DIR ?= $(PREFIX)/var/cache/omnisearch
|
|
else
|
|
PREFIX ?= /usr
|
|
DATA_DIR ?= /etc/omnisearch
|
|
CONF_DIR ?= /etc/omnisearch
|
|
VAR_DIR ?= /var/lib/omnisearch
|
|
LOG_DIR ?= /var/log/omnisearch
|
|
CACHE_DIR ?= /var/cache/omnisearch
|
|
endif
|
|
|
|
INSTALL_BIN_DIR := $(PREFIX)/bin
|
|
USER := omnisearch
|
|
GROUP := omnisearch
|
|
|
|
SYSTEMD_DIR := /etc/systemd/system
|
|
OPENRC_DIR := /etc/init.d
|
|
DINIT_DIR := /etc/dinit.d
|
|
LAUNCHD_DIR ?= /Library/LaunchDaemons
|
|
LAUNCHD_LABEL ?= monster.bwaaa.omnisearch
|
|
LAUNCHD_PLIST := $(LAUNCHD_DIR)/$(LAUNCHD_LABEL).plist
|
|
|
|
install:
|
|
@echo "Available install targets:"
|
|
@echo " make install-systemd"
|
|
@echo " make install-openrc"
|
|
@echo " make install-runit"
|
|
@echo " make install-s6"
|
|
@echo " make install-dinit"
|
|
@if [ "$(UNAME_S)" = "Darwin" ]; then echo " make install-launchd"; fi
|
|
@echo ""
|
|
@echo "Example: doas/sudo make install-openrc"
|
|
|
|
install-launchd: $(TARGET)
|
|
@mkdir -p $(DATA_DIR)/templates $(DATA_DIR)/static $(INSTALL_BIN_DIR) $(LOG_DIR)
|
|
@cp -rf templates/* $(DATA_DIR)/templates/
|
|
@cp -rf static/* $(DATA_DIR)/static/
|
|
@cp -n example-config.ini $(DATA_DIR)/config.ini || true
|
|
install -m 755 $(TARGET) $(INSTALL_BIN_DIR)/omnisearch
|
|
@mkdir -p $(LAUNCHD_DIR)
|
|
@sed \
|
|
-e 's|@INSTALL_BIN_DIR@|$(INSTALL_BIN_DIR)|g' \
|
|
-e 's|@DATA_DIR@|$(DATA_DIR)|g' \
|
|
-e 's|@LOG_DIR@|$(LOG_DIR)|g' \
|
|
-e 's|@LAUNCHD_LABEL@|$(LAUNCHD_LABEL)|g' \
|
|
init/launchd/omnisearch.plist.in > $(LAUNCHD_PLIST)
|
|
@chmod 644 $(LAUNCHD_PLIST)
|
|
@echo ""
|
|
@echo "Config: $(DATA_DIR)/config.ini"
|
|
@echo "Installed launchd plist to $(LAUNCHD_PLIST)"
|
|
@echo "Load with: sudo launchctl bootstrap system $(LAUNCHD_PLIST)"
|
|
@echo "Enable with: sudo launchctl enable system/$(LAUNCHD_LABEL)"
|
|
@echo "Start with: sudo launchctl kickstart -k system/$(LAUNCHD_LABEL)"
|
|
|
|
install-systemd: $(TARGET)
|
|
@mkdir -p $(DATA_DIR)/templates $(DATA_DIR)/static $(LOG_DIR) $(CACHE_DIR)
|
|
@cp -rf templates/* $(DATA_DIR)/templates/
|
|
@cp -rf static/* $(DATA_DIR)/static/
|
|
@cp -n example-config.ini $(DATA_DIR)/config.ini || true
|
|
install -m 755 $(TARGET) $(INSTALL_BIN_DIR)/omnisearch
|
|
@echo "Setting up user '$(USER)'..."
|
|
@(grep -q '^$(GROUP):' /etc/group || groupadd $(GROUP)) 2>/dev/null || true
|
|
@id -u $(USER) >/dev/null 2>&1 || useradd --system --home $(DATA_DIR) --shell /usr/sbin/nologin -g $(GROUP) $(USER)
|
|
@chown -R $(USER):$(GROUP) $(LOG_DIR) $(CACHE_DIR) $(VAR_DIR) $(DATA_DIR) 2>/dev/null || true
|
|
@chown $(USER):$(GROUP) $(DATA_DIR)/config.ini 2>/dev/null || true
|
|
install -m 644 init/systemd/omnisearch.service $(SYSTEMD_DIR)/omnisearch.service
|
|
@echo ""
|
|
@echo "Config: $(DATA_DIR)/config.ini"
|
|
@echo "Edit config with: nano $(DATA_DIR)/config.ini"
|
|
@echo "Installed systemd service to $(SYSTEMD_DIR)/omnisearch.service"
|
|
@echo "Run 'systemctl enable --now omnisearch' to start"
|
|
|
|
install-openrc: $(TARGET)
|
|
@mkdir -p $(DATA_DIR)/templates $(DATA_DIR)/static $(LOG_DIR) $(CACHE_DIR)
|
|
@cp -rf templates/* $(DATA_DIR)/templates/
|
|
@cp -rf static/* $(DATA_DIR)/static/
|
|
@cp -n example-config.ini $(DATA_DIR)/config.ini || true
|
|
install -m 755 $(TARGET) $(INSTALL_BIN_DIR)/omnisearch
|
|
@echo "Setting up user '$(USER)'..."
|
|
@(grep -q '^$(GROUP):' /etc/group || groupadd $(GROUP)) 2>/dev/null || true
|
|
@id -u $(USER) >/dev/null 2>&1 || useradd --system --home $(DATA_DIR) --shell /usr/sbin/nologin -g $(GROUP) $(USER)
|
|
@chown -R $(USER):$(GROUP) $(LOG_DIR) $(CACHE_DIR) $(VAR_DIR) $(DATA_DIR) 2>/dev/null || true
|
|
@chown $(USER):$(GROUP) $(DATA_DIR)/config.ini 2>/dev/null || true
|
|
install -m 755 init/openrc/omnisearch $(OPENRC_DIR)/omnisearch
|
|
@echo ""
|
|
@echo "Config: $(DATA_DIR)/config.ini"
|
|
@echo "Edit config with: nano $(DATA_DIR)/config.ini"
|
|
@echo "Installed openrc service to $(OPENRC_DIR)/omnisearch"
|
|
@echo "Run 'rc-update add omnisearch default' to enable"
|
|
|
|
install-runit: $(TARGET)
|
|
@mkdir -p $(DATA_DIR)/templates $(DATA_DIR)/static $(LOG_DIR) $(CACHE_DIR) /etc/service/omnisearch/log/
|
|
@cp -rf templates/* $(DATA_DIR)/templates/
|
|
@cp -rf static/* $(DATA_DIR)/static/
|
|
@cp -n example-config.ini $(DATA_DIR)/config.ini || true
|
|
install -m 755 $(TARGET) $(INSTALL_BIN_DIR)/omnisearch
|
|
@echo "Setting up user '$(USER)'..."
|
|
@(grep -q '^$(GROUP):' /etc/group || groupadd $(GROUP)) 2>/dev/null || true
|
|
@id -u $(USER) >/dev/null 2>&1 || useradd --system --home $(DATA_DIR) --shell /usr/sbin/nologin -g $(GROUP) $(USER)
|
|
@chown -R $(USER):$(GROUP) $(LOG_DIR) $(CACHE_DIR) $(VAR_DIR) $(DATA_DIR) 2>/dev/null || true
|
|
@chown $(USER):$(GROUP) $(DATA_DIR)/config.ini 2>/dev/null || true
|
|
install -m 755 init/runit/run /etc/service/omnisearch/run
|
|
install -m 755 init/runit/log/run /etc/service/omnisearch/log/run
|
|
@echo ""
|
|
@echo "Config: $(DATA_DIR)/config.ini"
|
|
@echo "Edit config with: nano $(DATA_DIR)/config.ini"
|
|
@echo "Installed runit service to /etc/service/omnisearch"
|
|
@echo "You need to start the service manually"
|
|
@echo "Void: ln -s /etc/service/omnisearch/ /var/service"
|
|
@echo "Artix: ln -s /etc/service/omnisearch/ /run/runit/"
|
|
|
|
install-s6: $(TARGET)
|
|
@mkdir -p $(DATA_DIR)/templates $(DATA_DIR)/static $(LOG_DIR) $(CACHE_DIR)
|
|
@cp -rf templates/* $(DATA_DIR)/templates/
|
|
@cp -rf static/* $(DATA_DIR)/static/
|
|
@cp -n example-config.ini $(DATA_DIR)/config.ini || true
|
|
install -m 755 $(TARGET) $(INSTALL_BIN_DIR)/omnisearch
|
|
@echo "Setting up user '$(USER)'..."
|
|
@(grep -q '^$(GROUP):' /etc/group || groupadd $(GROUP)) 2>/dev/null || true
|
|
@id -u $(USER) >/dev/null 2>&1 || useradd --system --home $(DATA_DIR) --shell /usr/sbin/nologin -g $(GROUP) $(USER)
|
|
@chown -R $(USER):$(GROUP) $(LOG_DIR) $(CACHE_DIR) $(VAR_DIR) $(DATA_DIR) 2>/dev/null || true
|
|
@chown $(USER):$(GROUP) $(DATA_DIR)/config.ini 2>/dev/null || true
|
|
@mkdir -p /var/service/omnisearch/log/supervise/control
|
|
install -m 755 init/s6/run /var/service/omnisearch/run
|
|
install -m 755 init/s6/log/run /var/service/omnisearch/log/run
|
|
install -m 755 init/s6/log/run /var/service/omnisearch/log/supervise/control
|
|
@echo ""
|
|
@echo "Config: $(DATA_DIR)/config.ini"
|
|
@echo "Edit config with: nano $(DATA_DIR)/config.ini"
|
|
@echo "Installed s6 service to /var/service/omnisearch"
|
|
@echo "Service will start automatically"
|
|
|
|
install-dinit: $(TARGET)
|
|
@mkdir -p $(DATA_DIR)/templates $(DATA_DIR)/static $(LOG_DIR) $(CACHE_DIR)
|
|
@cp -rf templates/* $(DATA_DIR)/templates/
|
|
@cp -rf static/* $(DATA_DIR)/static/
|
|
@cp -n example-config.ini $(DATA_DIR)/config.ini || true
|
|
install -m 755 $(TARGET) $(INSTALL_BIN_DIR)/omnisearch
|
|
@echo "Setting up user '$(USER)'..."
|
|
@(grep -q '^$(GROUP):' /etc/group || groupadd $(GROUP)) 2>/dev/null || true
|
|
@id -u $(USER) >/dev/null 2>&1 || useradd --system --home $(DATA_DIR) --shell /usr/sbin/nologin -g $(GROUP) $(USER)
|
|
@chown -R $(USER):$(GROUP) $(LOG_DIR) $(CACHE_DIR) $(VAR_DIR) $(DATA_DIR) 2>/dev/null || true
|
|
@chown $(USER):$(GROUP) $(DATA_DIR)/config.ini 2>/dev/null || true
|
|
install -m 644 init/dinit/omnisearch $(DINIT_DIR)/omnisearch
|
|
@echo ""
|
|
@echo "Config: $(DATA_DIR)/config.ini"
|
|
@echo "Edit config with: nano $(DATA_DIR)/config.ini"
|
|
@echo "Installed dinit service to $(DINIT_DIR)/omnisearch"
|
|
@echo "Run 'dinitctl enable omnisearch' to start"
|
|
|
|
uninstall:
|
|
rm -f $(INSTALL_BIN_DIR)/omnisearch
|
|
rm -rf $(DATA_DIR)
|
|
rm -f $(SYSTEMD_DIR)/omnisearch.service
|
|
rm -f $(OPENRC_DIR)/omnisearch
|
|
rm -f $(DINIT_DIR)/omnisearch
|
|
rm -rf /etc/service/omnisearch
|
|
rm -rf /var/service/omnisearch
|
|
@id -u $(USER) >/dev/null 2>&1 && userdel $(USER) 2>/dev/null || true
|
|
@grep -q '^$(GROUP):' /etc/group 2>/dev/null && groupdel $(GROUP) 2>/dev/null || true
|
|
@echo "Uninstalled omnisearch"
|
|
|
|
.PHONY: all run clean rebuild info install install-launchd install-systemd install-openrc install-runit install-s6 install-dinit uninstall
|