Files

38 lines
1.3 KiB
Makefile
Raw Permalink Normal View History

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)