# st - simple terminal
# See LICENSE file for copyright and license details.
.PHONY: all clean install uninstall

.POSIX:

include config.mk

SRC = st.c x.c $(LIGATURES_C) $(SIXEL_C)
OBJ = $(SRC:.c=.o)

all: st terminfo

.c.o:
	$(CC) $(STCFLAGS) -c $<

st.o: config.h st.h win.h
x.o: arg.h config.h st.h win.h $(LIGATURES_H)
config.mk:
	cp config/config.mk config.mk
config.h:
	cp config/config.h config.h

$(SRC): buildroot

$(OBJ): config.h config.mk

st: buildroot $(OBJ)
	$(CC) -o $@ $(OBJ) $(STLDFLAGS)

terminfo: buildroot
	tic -sx -o terminfo st.info

clean:
	find . -maxdepth 1 -type f  | grep -Pv "^\./\.|Makefile$$" | xargs -r rm
	rm -r tmp patch terminfo 2>/dev/null || true
	git -C st-flexipatch reset --hard HEAD
	git -C st-flexipatch clean -fdx

buildroot:
	cp config/patches.h st-flexipatch/patches.h
	flexipatch-finalizer/flexipatch-finalizer.sh -r -d st-flexipatch -o tmp
	rm -r tmp/Makefile tmp/config.mk patch 2>/dev/null || true
	mv tmp/* ./
	for patch in config/patches/*.diff; do patch <"$$patch"; done

install: st terminfo
	mkdir -p $(DESTDIR)$(PREFIX)/bin
	cp -f st $(DESTDIR)$(PREFIX)/bin
	chmod 755 $(DESTDIR)$(PREFIX)/bin/st
	mkdir -p $(DESTDIR)$(MANPREFIX)/man1
	sed "s/VERSION/$(VERSION)/g" < st.1 > $(DESTDIR)$(MANPREFIX)/man1/st.1
	chmod 644 $(DESTDIR)$(MANPREFIX)/man1/st.1
	mkdir -p $(DESTDIR)$(PREFIX)/share
	cp -a terminfo $(DESTDIR)$(PREFIX)/share/terminfo
	chmod 755 $(DESTDIR)$(PREFIX)/share/terminfo/s
	chmod 644 $(DESTDIR)$(PREFIX)/share/terminfo/s/st-*
	# mkdir -p $(DESTDIR)$(PREFIX)/share/applications # desktop-entry patch
	# test -f ${DESTDIR}${PREFIX}/share/applications/st.desktop || cp -n st.desktop $(DESTDIR)$(PREFIX)/share/applications # desktop-entry patch
	
uninstall:
	rm -f $(DESTDIR)$(PREFIX)/bin/st
	rm -f $(DESTDIR)$(MANPREFIX)/man1/st.1
	rm -f $(DESTDIR)$(PREFIX)/share/applications/st.desktop # desktop-entry patch
	rm -f $(DESTDIR)$(PREFIX)/share/terminfo/s/st
	rm -f $(DESTDIR)$(PREFIX)/share/terminfo/s/st-256color
	rm -f $(DESTDIR)$(PREFIX)/share/terminfo/s/st-bs
	rm -f $(DESTDIR)$(PREFIX)/share/terminfo/s/st-bs-256color
	rm -f $(DESTDIR)$(PREFIX)/share/terminfo/s/st-meta
	rm -f $(DESTDIR)$(PREFIX)/share/terminfo/s/st-meta-256color
	rm -f $(DESTDIR)$(PREFIX)/share/terminfo/s/st-mono