2026-10-12 07:43:34 +03:00
|
|
|
# Makefile for hygate-c - POSIX-compatible (builds on Linux, FreeBSD, macOS)
|
|
|
|
|
# Third-party dependencies: libcurl and json-c (auto-detected via pkg-config).
|
|
|
|
|
|
|
|
|
|
CC ?= cc
|
2026-10-13 13:17:16 +03:00
|
|
|
CFLAGS ?= -O3 -flto -pipe -std=c11 -Wall -D_POSIX_C_SOURCE=200809L -pthread
|
2026-10-13 20:36:29 +03:00
|
|
|
SRCS = main.c server.c jsonapi.c util.c tokenizer.c tokenizer_data.c
|
2026-10-12 07:43:34 +03:00
|
|
|
HDRS = hygate.h
|
|
|
|
|
BINDIR = bin
|
|
|
|
|
BIN = $(BINDIR)/hygate
|
|
|
|
|
STATICBIN = $(BINDIR)/hygate.static
|
|
|
|
|
|
2026-10-13 13:17:16 +03:00
|
|
|
# Library flags resolved at recipe time via pkg-config (portable).
|
2026-10-12 07:43:34 +03:00
|
|
|
# Falls back to plain -lcurl -ljson-c when pkg-config is unavailable.
|
2026-10-13 13:17:16 +03:00
|
|
|
LIBS = $$(pkg-config --cflags --libs libcurl json-c 2>/dev/null || echo '-lcurl -ljson-c') -pthread
|
2026-10-12 07:43:34 +03:00
|
|
|
|
|
|
|
|
# For static builds we need the full transitive dependency list, which
|
|
|
|
|
# pkg-config --static provides (nghttp2, ssl, crypto, z, ...).
|
|
|
|
|
STATICLIBS = $$(pkg-config --static --cflags --libs libcurl json-c 2>/dev/null || echo '-lcurl -ljson-c')
|
|
|
|
|
|
2026-10-15 23:13:11 +03:00
|
|
|
.PHONY: all static clean install
|
2026-10-12 07:43:34 +03:00
|
|
|
|
|
|
|
|
all: $(BIN)
|
|
|
|
|
|
|
|
|
|
static: $(STATICBIN)
|
|
|
|
|
|
|
|
|
|
$(BIN): $(SRCS) $(HDRS)
|
|
|
|
|
@test -d $(BINDIR) || mkdir $(BINDIR)
|
|
|
|
|
$(CC) $(CFLAGS) $(SRCS) -o $@ $(LIBS)
|
|
|
|
|
|
|
|
|
|
$(STATICBIN): $(SRCS) $(HDRS)
|
|
|
|
|
@test -d $(BINDIR) || mkdir $(BINDIR)
|
|
|
|
|
$(CC) $(CFLAGS) -static $(SRCS) -o $@ $(STATICLIBS)
|
|
|
|
|
|
2026-10-15 23:13:11 +03:00
|
|
|
install: $(BIN)
|
|
|
|
|
install -m 0755 $(BIN) $(DESTDIR)/usr/local/bin/hygate
|
|
|
|
|
|
2026-10-12 07:43:34 +03:00
|
|
|
clean:
|
2026-10-13 13:17:16 +03:00
|
|
|
rm -rf $(BINDIR)
|