#
#  Makefile for gopher-ng
#
# Copyright (c) 2026 Large Scale Systems Museum
# By Dave McGuire <mcguire@lssmuseum.org>
#

TARGET   = gopher-ng
PROGNAME = gopher-ng
SRCDIR   = src
OBJDIR   = build

SRCS    = $(wildcard $(SRCDIR)/*.c)
HDRS    = $(wildcard $(SRCDIR)/*.h)
DOCS    = LICENSE.md USAGE.md
OBJS    = $(patsubst $(SRCDIR)/%.c, $(OBJDIR)/%.o, $(SRCS))
CC      = cc
CFLAGS  = -Wall -Wextra -std=c11 -O2 $(shell pkg-config --cflags gtk4)
LDFLAGS = $(shell pkg-config --libs gtk4)

VERSION = $(shell sed -n 's/.*VERSION[ \t]*"\(.*\)".*/\1/p' $(SRCDIR)/version.h)
DISTDIR = $(PROGNAME)-$(VERSION)


all: $(OBJDIR)/$(TARGET)

$(OBJDIR)/$(TARGET): $(OBJS)
	$(CC) $^ -o $@ $(LDFLAGS)
	@echo "Built $(OBJDIR)/$(TARGET)"

$(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR)
	$(CC) $(CFLAGS) -c $< -o $@

$(OBJDIR):
	mkdir -p $(OBJDIR)

clean:
	@echo Cleaning
	rm -rf $(OBJDIR)
	rm -f $(DISTDIR).tar.bz2

install: $(OBJDIR)/$(TARGET)
	install -Dm755 $(OBJDIR)/$(TARGET) $(DESTDIR)/usr/local/bin/$(TARGET)

dist:
	@rm -rf $(DISTDIR)
	@mkdir $(DISTDIR)
	@mkdir $(DISTDIR)/$(SRCDIR)
	@cp $(SRCS) $(HDRS) $(DISTDIR)/$(SRCDIR)
	@cp Makefile $(DOCS) $(DISTDIR)
	@tar -cjf $(DISTDIR).tar.bz2 $(DISTDIR)
	@rm -rf $(DISTDIR)
	@echo Distribution file $(DISTDIR).tar.bz2 created.

.PHONY: all clean install dist
