diff --git a/Makefile b/Makefile index 9311ece..946268d 100644 --- a/Makefile +++ b/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