build: clean up Makefile; enforce C99 with GNU extensions

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I023a29897332377c4e8c116ab4d0a67b6a6a6964
This commit is contained in:
raf 2026-04-13 11:24:10 +03:00
commit e9546bf4a8
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF

View file

@ -2,23 +2,40 @@ PREFIX ?= /usr
BINDIR ?= $(PREFIX)/bin
CC ?= gcc
CFLAGS ?= -O2 -Wall -Wextra -Wpedantic
CFLAGS ?= -O2 -Wall -Wextra -Wpedantic -std=gnu99 -I./include
LDFLAGS ?= -Wl,-z,relro,-z,now -Wl,-z,noexecstack -Wl,-z,separate-code -pie
LDLIBS ?= -lsystemd
SRC = main.c
SRCDIR = src
OBJDIR = obj
SRCS = $(wildcard $(SRCDIR)/*.c)
OBJS = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SRCS))
BIN = sin
.PHONY: all clean install test
.PHONY: all clean install test dirs
all: $(BIN)
all: dirs $(BIN)
$(BIN): $(SRC)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(SRC) $(LDLIBS)
dirs:
@mkdir -p $(OBJDIR)
fmt:
clang-format -i src/*.c
$(BIN): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
$(OBJDIR)/%.o: $(SRCDIR)/%.c
$(CC) $(CFLAGS) -c -o $@ $<
install: $(BIN)
install -d $(DESTDIR)$(BINDIR)
install -m 0755 $(BIN) $(DESTDIR)$(BINDIR)/$(BIN)
clean:
-rm -f $(BIN) test_sin
-rm -rf $(OBJDIR) $(BIN)
test: $(BIN)
./$(BIN) --version