#
# rsp-browser - ncurses block browser for RSP (TU58) devices
#
# Copyright (c) 2026 Large Scale Systems Museum
# By Dave McGuire <mcguire@lssmuseum.org>
#

PREFIX   = /usr/local

PROGNAME = rsp-browser
CC       = cc
CFLAGS   = -Wall -Wextra -Wpedantic -O2 -std=c11 -D_DEFAULT_SOURCE
LDLIBS   = -lncurses
BINDIR   = $(PREFIX)/bin
MANDIR   = $(PREFIX)/share/man/man1
INSTALL  = install
SRCS     = main.c serial.c rsp_proto.c filepicker.c
HDRS     = filepicker.h rsp_proto.h serial.h version.h
OBJS     = $(SRCS:.c=.o)
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) $(OBJS) -o $@ $(LDLIBS)

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

main.o: main.c filepicker.h rsp_proto.h serial.h version.h
serial.o: serial.c serial.h
rsp_proto.o: rsp_proto.c rsp_proto.h serial.h
filepicker.o: filepicker.c filepicker.h

install: $(PROGNAME)
	$(INSTALL) -d $(BINDIR)
	$(INSTALL) -d $(MANDIR)
	$(INSTALL) -m 755 $(PROGNAME) $(BINDIR)/$(PROGNAME)
	$(INSTALL) -m 644 rsp-browser.1 $(MANDIR)/rsp-browser.1

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:
	rm -f $(OBJS) $(PROGNAME) rsp-browser-*.tar.bz2 *~
