CC ?= cc PKG_CONFIG ?= pkg-config PREFIX ?= /usr/local BINDIR ?= $(PREFIX)/bin DESTDIR ?= GIT_HASH := $(shell git rev-parse --short HEAD) GIT_DATE := $(shell git log -1 --format='%ad' --date='format:%y.%m.%d') GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD) GIT_REMOTE := $(shell git remote get-url origin) GIT_TAG := $(shell git describe --tags --exact-match HEAD 2>/dev/null) VERSION := $(if $(GIT_TAG),$(GIT_TAG),$(GIT_DATE)+$(GIT_HASH)_$(GIT_BRANCH)) TARGET := bin/yapssg SOURCES := src/Main.c $(wildcard src/*/*.c) OBJECTS := $(patsubst src/%.c,obj/%.o,$(SOURCES)) CPPFLAGS += -Isrc $(shell $(PKG_CONFIG) --cflags libxml-2.0 luajit) CFLAGS ?= -O2 -Wall -Wextra -Werror -std=c99 LDLIBS += $(shell $(PKG_CONFIG) --libs libxml-2.0 luajit) .PHONY: all clean install FORCE all: $(TARGET) $(TARGET): $(OBJECTS) | bin $(CC) $(LDFLAGS) $(OBJECTS) $(LDLIBS) -o $@ obj/%.o: src/%.c mkdir -p $(@D) $(CC) $(CPPFLAGS) $(CFLAGS) -MMD -MP -c $< -o $@ obj/Version/Version.o: CPPFLAGS += -DYAPSSG_VERSION=\"$(VERSION)\" obj/Version/Version.o: FORCE FORCE: bin: mkdir -p $@ clean: rm -rf obj bin install: $(TARGET) install -Dm755 $(TARGET) $(DESTDIR)$(BINDIR)/yapssg -include $(OBJECTS:.o=.d)