build: clean up Makefile; enforce C99 with GNU extensions
Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I023a29897332377c4e8c116ab4d0a67b6a6a6964
This commit is contained in:
parent
087f28d726
commit
e9546bf4a8
1 changed files with 24 additions and 7 deletions
31
Makefile
31
Makefile
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue