104 lines
3.1 KiB
Makefile
Raw Normal View History

2025-12-05 17:08:50 +01:00
.PHONY: all clean test install help dev tikker plot process merge index popular
2024-12-08 16:19:17 +01:00
2025-11-29 00:50:53 +01:00
CC := gcc
2025-12-05 17:08:50 +01:00
CFLAGS := -Ofast -Wall -Wextra
2025-11-29 00:50:53 +01:00
DEBUG_FLAGS := -g -O0 -DDEBUG
2025-12-05 17:08:50 +01:00
LDFLAGS := -lsqlite3 -lpthread
2024-12-08 16:19:17 +01:00
2025-11-29 00:50:53 +01:00
INSTALL_PREFIX ?= /usr/local
BUILD_DIR := ./build
BIN_DIR := $(BUILD_DIR)/bin
2024-12-15 16:05:21 +01:00
2025-12-05 17:08:50 +01:00
PYTHON := python3
VENV := .venv
VENV_PYTHON := $(VENV)/bin/python
all: tikker
@echo "Build complete"
2024-12-15 16:05:21 +01:00
2025-11-29 00:50:53 +01:00
help:
2025-12-05 17:08:50 +01:00
@echo "Tikker Build System"
@echo ""
@echo "Build Targets:"
@echo " make tikker - Build tikker binary (default)"
@echo " make all - Same as tikker"
@echo " make dev - Build with debug symbols"
@echo " make clean - Remove build artifacts"
@echo " make install - Install binary to $(INSTALL_PREFIX)/bin"
2025-11-29 00:50:53 +01:00
@echo ""
2025-12-05 17:08:50 +01:00
@echo "Python Targets:"
@echo " make ensure_env - Create Python virtual environment"
@echo " make plot - Generate graphs and reports"
@echo " make process - Run processing pipeline"
@echo " make merge - Merge visualization outputs"
@echo " make index - Index words in database"
@echo " make popular - Show popular typed words"
2025-11-29 00:50:53 +01:00
@echo ""
2025-12-05 17:08:50 +01:00
@echo "Tikker Commands:"
@echo " ./tikker - Start keyboard monitoring"
@echo " ./tikker presses_today - Show today's keystrokes"
@echo " ./tikker stats daily - Daily statistics"
@echo " ./tikker stats hourly - Hourly breakdown"
@echo " ./tikker stats weekly - Weekly statistics"
@echo " ./tikker stats weekday - Weekday comparison"
@echo " ./tikker stats top-keys N - Top N keys"
@echo " ./tikker stats top-words N - Top N words"
@echo " ./tikker stats summary - Overall summary"
@echo " ./tikker decode FILE - Decode keystroke log"
@echo " ./tikker help - Show usage"
2024-12-15 16:05:21 +01:00
2025-11-29 00:50:53 +01:00
$(BIN_DIR):
@mkdir -p $(BIN_DIR)
2025-01-07 23:45:49 +01:00
2025-12-05 17:08:50 +01:00
tikker: $(BIN_DIR)
@echo "Building tikker..."
@$(CC) $(CFLAGS) tikker.c -o $(BIN_DIR)/tikker $(LDFLAGS)
@cp $(BIN_DIR)/tikker ./tikker
@echo "Built: ./tikker"
dev: CFLAGS := $(DEBUG_FLAGS)
dev: clean tikker
@echo "Debug build complete"
ensure_env:
@if [ ! -d "$(VENV)" ]; then \
$(PYTHON) -m venv $(VENV); \
$(VENV_PYTHON) -m pip install --upgrade pip; \
$(VENV_PYTHON) -m pip install matplotlib requests fastapi uvicorn openai dataset; \
echo "Virtual environment created at $(VENV)"; \
2025-11-29 00:50:53 +01:00
else \
2025-12-05 17:08:50 +01:00
echo "Virtual environment already exists"; \
2025-11-29 00:50:53 +01:00
fi
2025-01-07 00:53:41 +01:00
2025-12-05 17:08:50 +01:00
plot: ensure_env
@PYTHONPATH=/home/retoor/bin $(VENV_PYTHON) plot.py
@$(VENV_PYTHON) merge.py
process: ensure_env
@PYTHONPATH=/home/retoor/bin $(VENV_PYTHON) process.py
merge: ensure_env
@$(VENV_PYTHON) merge.py
index: ensure_env
@$(VENV_PYTHON) tags.py --index
popular: ensure_env
@$(VENV_PYTHON) tags.py --popular
install: tikker
@echo "Installing to $(INSTALL_PREFIX)/bin..."
2025-11-29 00:50:53 +01:00
@mkdir -p $(INSTALL_PREFIX)/bin
2025-12-05 17:08:50 +01:00
@install -m 755 $(BIN_DIR)/tikker $(INSTALL_PREFIX)/bin/
@echo "Installed: $(INSTALL_PREFIX)/bin/tikker"
2025-11-29 00:50:53 +01:00
clean:
@echo "Cleaning build artifacts..."
@rm -rf $(BUILD_DIR)
2025-12-05 17:08:50 +01:00
@rm -f tikker
2025-11-29 00:50:53 +01:00
@find . -name "*.o" -delete
@find . -name "*.gcov" -delete
@find . -name "*.gcda" -delete
@find . -name "*.gcno" -delete
2025-12-05 17:08:50 +01:00
@echo "Clean complete"