Nimbin[12]?Sway / SWOv / Makefile

SWOv git · main

SWOv - window overview for sway

sway wayland c overview · first commit 2026-08-21 · last commit 2026-09-20 (19 days ago) · synced 3 days ago · upstream: github.com/nimbin2/SWOv

C 91.5% Markdown 7.6%
git clone https://git.christianimmanuel.de/sway/SWOv.gitwget https://git.christianimmanuel.de/sway/SWOv/archive/SWOv.tar.gz
Makefile 2.8 KB · 85 lines raw
# swov — Makefile
#
#   make            build                                   -> ./swov
#   make debug      build with the address and UB sanitizers -> ./swov-debug
#   make strict     build with -Wall -Wextra
#   make run        build and run
#   make install    install to $(PREFIX)/bin           (default: /usr)
#                   examples go to $(PREFIX)/share/swov
#   make config     copy config.example to ~/.config/swov/config
#   make link       symlink ~/.config/swov/config at the installed example
#   make uninstall
#   make clean
#
# Requires: a C compiler, pkg-config, and the SDL3, SDL3_image and SDL3_ttf
# dev files. On Debian trixie and newer:
#   sudo apt install build-essential pkg-config \
#        libsdl3-dev libsdl3-image-dev libsdl3-ttf-dev

CC          ?= cc
PKG_CONFIG  ?= pkg-config
CFLAGS      ?= -std=c11 -O2
PREFIX      ?= /usr
bindir      ?= $(PREFIX)/bin
datadir     ?= $(PREFIX)/share/swov
shdatadir   ?= $(PREFIX)/share/sw

BUILD       := $(shell md5sum swov.c 2>/dev/null | cut -c1-8)
SRC         := swov.c
HDR         := sw_theme.h
BIN         := swov
PKGS        := sdl3 sdl3-image sdl3-ttf

SDL_CFLAGS  := $(shell $(PKG_CONFIG) --cflags $(PKGS))
SDL_LIBS    := $(shell $(PKG_CONFIG) --libs $(PKGS))

.PHONY: all debug strict run install config link uninstall clean

all: $(BIN)

$(BIN): $(SRC) $(HDR)
	$(CC) $(CFLAGS) -DSWOV_BUILD='"$(BUILD)"' $(SDL_CFLAGS) $(SRC) -o $(BIN) $(SDL_LIBS) -lm
	@./$(BIN) --version

debug: $(SRC) $(HDR)
	$(CC) -std=c11 -O1 -g -Wall -Wextra -fsanitize=address,undefined \
	  -DSWOV_BUILD='"$(BUILD)-dbg"' $(SDL_CFLAGS) $(SRC) -o $(BIN)-debug $(SDL_LIBS) -lm

strict: $(SRC) $(HDR)
	$(CC) -std=c11 -O2 -Wall -Wextra -DSWOV_BUILD='"$(BUILD)"' \
	  $(SDL_CFLAGS) $(SRC) -o $(BIN) $(SDL_LIBS) -lm

run: all
	./$(BIN)

install: all
	install -Dm755 $(BIN) $(DESTDIR)$(bindir)/$(BIN)
	install -Dm644 config.example $(DESTDIR)$(datadir)/config.example
	install -Dm644 sw_config.example $(DESTDIR)$(shdatadir)/config.example
	@echo "installed to $(DESTDIR)$(bindir)/$(BIN)"
	@echo "examples     $(DESTDIR)$(datadir)/"
	@./$(BIN) --version

config:
	@mkdir -p $(HOME)/.config/swov
	@if [ -e $(HOME)/.config/swov/config ]; then \
	  echo "$(HOME)/.config/swov/config exists, leaving it alone"; \
	else \
	  cp config.example $(HOME)/.config/swov/config; \
	  echo "wrote $(HOME)/.config/swov/config"; \
	fi

# The shipped example, live: every install updates what you are running.
link:
	@mkdir -p $(HOME)/.config/swov
	ln -sfn $(datadir)/config.example $(HOME)/.config/swov/config
	@echo "$(HOME)/.config/swov/config -> $(datadir)/config.example"

uninstall:
	rm -f $(DESTDIR)$(bindir)/$(BIN)
	rm -f $(DESTDIR)$(datadir)/config.example
	rm -f $(DESTDIR)$(shdatadir)/config.example
	-rmdir $(DESTDIR)$(datadir) $(DESTDIR)$(shdatadir) 2>/dev/null || true

clean:
	rm -f $(BIN) $(BIN)-debug