CC = LC_ALL=C gcc
CFLAGS += -std=c99
CFLAGS += -Wall -Wextra -Werror -Wconversion -Wsign-conversion -Wformat-security -pedantic
CFLAGS += -march=native -DNDEBUG -O3 -flto
LFLAGS += -lm -lasound -flto
NAME ?= avelmap
PREFIX ?= /usr/local
$(NAME): $(NAME).o alsa.o
$(CC) -o $(@) $(^) $(LFLAGS)
%.o: %.c $(wildcard *.h)
$(CC) $(CFLAGS) -o $(@) -c $(<)
.PHONY: lint
lint: $(wildcard *.c) $(wildcard *.h)
clang-format --dry-run -Werror -style='{BasedOnStyle: Google, IndentWidth: 4, TabWidth: 4, ColumnLimit: 120, MaxEmptyLinesToKeep: 2, SpacesBeforeTrailingComments: 1}' -- $(^)
.PHONY: check
check: $(wildcard *.c) $(wildcard *.h)
clang-tidy --quiet --warnings-as-errors='*' --checks='cert-*,bugprone-*,clang-analyzer-*,misc-*,-cert-err34-c' $(^) -- $(CFLAGS)
.PHONY: install
install: $(NAME)
@install -v -t "$(DESTDIR)$(PREFIX)/bin" $(^)
.PHONY: uninstall
uninstall:
@rm -v -f "$(DESTDIR)$(PREFIX)/bin/$(NAME)"
.PHONY: clean
clean:
@rm -vf -- avelmap actlmap $(wildcard *.o)