blob: 4bfc1d86d17ab5bc0f3a913d55e7de5d694c17c6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
CC ?= cc
PKG_CONFIG ?= pkg-config
PREFIX ?= /usr/local
BINDIR ?= $(PREFIX)/bin
DESTDIR ?=
TARGET := bin/yapssg
SOURCES := src/Main.c $(wildcard src/*/*.c)
OBJECTS := $(patsubst src/%.c,obj/%.o,$(SOURCES))
VERSION_O := obj/Version/Version.o
VERSION_H := obj/Version/version.h
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 $@
$(VERSION_O): CPPFLAGS += -Iobj
$(VERSION_O): $(VERSION_H)
$(VERSION_H): FORCE
@mkdir -p $(@D)
@if v="$$(git describe --tags --exact-match HEAD 2>/dev/null)" && [ -n "$$v" ]; then \
:; \
elif h="$$(git rev-parse --short HEAD 2>/dev/null)" && [ -n "$$h" ]; then \
d="$$(git log -1 --format='%ad' --date='format:%y.%m.%d' 2>/dev/null)"; \
b="$$(git rev-parse --abbrev-ref HEAD 2>/dev/null)"; \
v="$${d}+$${h}_$${b}"; \
else \
if [ -f $@ ]; then exit 0; fi; \
v="$$(date +%y.%m.%d)+unknown"; \
fi; \
printf '#define YAPSSG_VERSION "%s"\n' "$$v" > $@.tmp; \
cmp -s $@ $@.tmp || mv -f $@.tmp $@; \
rm -f $@.tmp
obj/%.o: src/%.c
mkdir -p $(@D)
$(CC) $(CPPFLAGS) $(CFLAGS) -MMD -MP -c $< -o $@
bin:
mkdir -p $@
clean:
rm -rf obj bin
install: $(TARGET)
install -Dm755 $(TARGET) $(DESTDIR)$(BINDIR)/yapssg
-include $(OBJECTS:.o=.d)
|