$NetBSD: patch-Makefile,v 1.10 2026/03/09 17:32:36 wiz Exp $

Libtoolize for portable shared libraries.

--- Makefile.orig	2026-03-07 20:47:42.000000000 +0000
+++ Makefile
@@ -1,5 +1,6 @@
 .PHONY: regress regen_regress valgrind
 .SUFFIXES: .xml .md .html .pdf .1 .1.html .3 .3.html .5 .5.html .thumb.jpg .png .in.pc .pc .old.md
+.SUFFIXES: .lo
 
 include Makefile.configure
 WWWDIR		 = /var/www/vhosts/kristaps.bsd.lv/htdocs/lowdown
@@ -200,7 +201,12 @@ REGRESS_ENV	 = LC_ALL=C.UTF-8
 
 REGRESS_ENV	 = LC_ALL=C.UTF-8
 
-all: bins lowdown.pc $(LIB_SO)
+LIBTOOL                 = libtool --tag=CC
+LT_OBJS                 = $(OBJS:C/\.o$/.lo/g)
+LT_COMPAT_OBJS  = $(COMPAT_OBJS:C/\.o$/.lo/g)
+
+all: bins lowdown.pc liblowdown.la
+
 bins: lowdown lowdown-diff
 
 www: all $(HTMLS) $(PDFS) $(THUMBS) $(TEXTS) lowdown.tar.gz lowdown.tar.gz.sha512
@@ -213,15 +219,20 @@ installwww: www
 	$(INSTALL) -m 0444 lowdown.tar.gz $(WWWDIR)/snapshots
 	$(INSTALL) -m 0444 lowdown.tar.gz.sha512 $(WWWDIR)/snapshots
 
-lowdown: $(LIB_LOWDOWN) $(MAIN_OBJS) main.o
-	$(CC) -o $@ main.o $(MAIN_OBJS) $(LIB_LOWDOWN) $(LDFLAGS) $(LDADD_MD5) -lm $(LDADD)
+lowdown: liblowdown.la $(LT_COMPAT_OBJS) main.o
+	$(LIBTOOL) --mode=link $(CC) -o $@ main.o $(LT_COMPAT_OBJS) liblowdown.la $(LDFLAGS) $(LDADD_MD5) -lm $(LDADD)
 
+# For regress, we build this (just like lowdown) so that its libtool wrapper works.
+# At install, we'll still just make a hard link to lowdown like upstream.
 lowdown-diff: lowdown
-	ln -f lowdown lowdown-diff
+	$(LIBTOOL) --mode=link $(CC) -o $@ main.o $(LT_COMPAT_OBJS) liblowdown.la $(LDFLAGS) $(LDADD_MD5) -lm $(LDADD)
 
 $(LIB_ST): $(OBJS) $(COMPAT_OBJS)
 	$(AR) rs $@ $(OBJS) $(COMPAT_OBJS)
 
+liblowdown.la: $(LT_OBJS) $(LT_COMPAT_OBJS)
+	$(LIBTOOL) --mode=link $(CC) -o $@ $(LT_OBJS) $(LT_COMPAT_OBJS) $(LDFLAGS) $(LDADD_MD5) -lm $(LDLIBS) -version-number $(LIBVER) -rpath $(LIBDIR)
+
 $(LIB_SO): $(OBJS) $(COMPAT_OBJS)
 	$(CC) $(LINKER_SOFLAG) -o $(LIB_SOVER) $(OBJS) $(COMPAT_OBJS) \
 		$(LDFLAGS) $(LDADD_MD5) -lm \
@@ -251,8 +262,8 @@ install: bins
 	$(INSTALL_DATA) share/man/* $(DESTDIR)$(SHAREDIR)/lowdown/man
 	$(INSTALL_DATA) share/ms/* $(DESTDIR)$(SHAREDIR)/lowdown/ms
 	$(INSTALL_DATA) share/odt/* $(DESTDIR)$(SHAREDIR)/lowdown/odt
-	$(INSTALL_PROGRAM) lowdown $(DESTDIR)$(BINDIR)
-	$(INSTALL_PROGRAM) lowdown-diff $(DESTDIR)$(BINDIR)
+	$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) lowdown $(DESTDIR)$(BINDIR)
+	ln $(DESTDIR)$(BINDIR)/lowdown $(DESTDIR)$(BINDIR)/lowdown-diff
 	for f in $(MAN1S) $(MAN5S) ; do \
 		name=`basename $$f .html` ; \
 		section=$${name##*.} ; \
@@ -283,6 +294,9 @@ uninstall_shared: uninstall_lib_common
 uninstall_shared: uninstall_lib_common
 	rm -f $(LIBDIR)/$(LIB_SOVER) $(LIBDIR)/$(LIB_SO)
 
+install_pkgsrc: liblowdown.la install_lib_common
+	$(LIBTOOL) --mode=install $(BSD_INSTALL_LIB) liblowdown.la $(DESTDIR)$(LIBDIR)
+
 install_shared: $(LIB_SO) install_lib_common
 	$(INSTALL_LIB) $(LIB_SOVER) $(DESTDIR)$(LIBDIR)
 	( cd $(DESTDIR)$(LIBDIR) && ln -sf $(LIB_SOVER) $(LIB_SO) )
@@ -370,6 +384,9 @@ $(HTMLS): versions.xml lowdown
 .xml.html:
 	sblg -t template.xml -s date -o $@ -C $< $< versions.xml
 
+.c.lo:
+	$(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c -o $@ $<
+
 .md.xml: lowdown
 	( echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" ; \
 	  echo "<article data-sblg-article=\"1\">" ; \
@@ -424,15 +441,15 @@ lowdown.tar.gz:
 	( cd .dist/ && tar zcf ../$@ lowdown-$(VERSION) )
 	rm -rf .dist/
 
-$(OBJS) $(COMPAT_OBJS) main.o: config.h
+$(LT_OBJS) $(COMPAT_OBJS) main.o: config.h
 
-$(OBJS): extern.h lowdown.h
+$(LT_OBJS): extern.h lowdown.h
 
-term.o: term.h
+term.lo: term.h
 
-roff.o roff_manpage.o: roff.h
+roff.lo roff_manpage.lo: roff.h
 
-main.o: lowdown.h
+main.lo: lowdown.h
 
 clean:
 	rm -f $(OBJS) $(COMPAT_OBJS) main.o
