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

PREFIX   = /usr/local

CC       = cc
CFLAGS   = -O2 -Wall -Wextra -Wpedantic
LDLIBS   = -lncurses -lm
PROGNAME = tapview
OBJS     = tapview.o tape.o ui.o screen.o
SRCS     = tapview.c tape.c ui.c screen.c
HDRS     = tape.h ui.h screen.h version.h
DOCS     = LICENSE.md USAGE.md $(PROGNAME).1
VERSION  = $(shell sed -n 's/.*VERSION[ \t]*"\(.*\)".*/\1/p' version.h)
DISTDIR  = $(PROGNAME)-$(VERSION)

.PHONY: all clean install dist

all: $(PROGNAME)

$(PROGNAME): $(OBJS)
	$(CC) $(CFLAGS) -o $@ $(OBJS) $(LDLIBS)

tapview.o: tapview.c $(HDRS)
	$(CC) $(CFLAGS) -c tapview.c

tape.o: tape.c tape.h
	$(CC) $(CFLAGS) -c tape.c

ui.o: ui.c tape.h ui.h
	$(CC) $(CFLAGS) -c ui.c

screen.o: screen.c tape.h ui.h screen.h
	$(CC) $(CFLAGS) -c screen.c

install: $(PROGNAME)
	install -m 755 $(PROGNAME) $(PREFIX)/bin
	install -d $(PREFIX)/share/man/man1
	install -m 644 $(PROGNAME).1 $(PREFIX)/share/man/man1

clangd:
	bear -- make

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

clean:
	@echo Cleaning
	rm -f $(PROGNAME) $(OBJS) *~ $(DISTDIR).tar.bz2
