git-trace

romele / git-trace public

61 commits · 1 branch · 1 tag · last push 7m ago

Makefile

CC      ?= cc
CFLAGS  ?= -O2 -Wall -Wextra -Werror -std=c11 -D_GNU_SOURCE
GT_SHA  := $(shell git rev-parse --short HEAD 2>/dev/null || echo unknown)
CFLAGS  += -DGT_VERSION=\"v1.0\" -DGT_SHA=\"$(GT_SHA)\"
LDLIBS  := -lsqlite3 -lpthread

SRC := src/main.c src/httpd.c src/cgi.c src/gitx.c src/repo.c \
       src/web.c src/db.c src/util.c src/auth.c src/crypto.c \
       src/ssh.c src/collab.c src/patchset.c src/mirror.c src/ratelimit.c \
       src/highlight.c src/markdown.c src/export.c src/webhook.c \
       src/ci.c src/wcommit.c \
       src/ops.c
OBJ := $(SRC:.c=.o)

git-trace: src/schema.h src/hooks.h $(OBJ)
	$(CC) $(CFLAGS) -o $@ $(OBJ) $(LDLIBS)

src/schema.h: sql/schema.sql
	@printf 'static const char SCHEMA_SQL[] =\n' > $@
	@sed 's/\\/\\\\/g; s/"/\\"/g; s/^/"/; s/$$/\\n"/' $< >> $@
	@printf ';\n' >> $@

src/hooks.h: hooks/update hooks/post-receive
	@printf 'static const char UPDATE_HOOK[] =\n' > $@
	@sed 's/\\/\\\\/g; s/"/\\"/g; s/^/"/; s/$$/\\n"/' hooks/update >> $@
	@printf ';\n' >> $@
	@printf 'static const char POSTRECV_HOOK[] =\n' >> $@
	@sed 's/\\/\\\\/g; s/"/\\"/g; s/^/"/; s/$$/\\n"/' hooks/post-receive >> $@
	@printf ';\n' >> $@

src/db.o: src/schema.h
src/main.o: src/hooks.h

%.o: %.c
	$(CC) $(CFLAGS) -MMD -MP -c -o $@ $<

-include $(OBJ:.o=.d)

clean:
	rm -f git-trace $(OBJ) $(OBJ:.o=.d) src/schema.h src/hooks.h

docker-image:
	docker build -f Dockerfile.dev -t git-trace-dev .

docker-build:
	docker run --rm -v "$$(pwd -W 2>/dev/null || pwd):/src" git-trace-dev make

fuzz:
	bash tests/fuzz.sh

.PHONY: clean docker-image docker-build fuzz