$NetBSD: patch-Makefile,v 1.6 2023/09/10 09:57:36 nia Exp $

- Build shared objects at build-time rather than install-time.
- Honour CFLAGS and LDFLAGS.
- Libtoolize.

--- Makefile.orig	2023-01-10 11:11:11.000000000 +0000
+++ Makefile
@@ -2,28 +2,18 @@
 #
 # Useful targets are: release, install, uninstall.
 
-default: build/debug/mujs build/debug/mujs-pp
+default: build/release/mujs build/release/mujs-pp build/release/libmujs.la build/release/mujs.pc
 
-CFLAGS = -std=c99 -pedantic -Wall -Wextra -Wno-unused-parameter
-
-OPTIM = -O3
+CFLAGS += -std=c99 -pedantic -Wall -Wextra -Wno-unused-parameter
 
 prefix = /usr/local
 bindir = $(prefix)/bin
 incdir = $(prefix)/include
 libdir = $(prefix)/lib
 
-ifeq ($(wildcard .git),.git)
-  VERSION = $(shell git describe --tags --always)
-else
-  VERSION = $(patsubst mujs-%,%,$(notdir $(CURDIR)))
-endif
+VERSION = $(patsubst mujs-%,%,$(notdir $(CURDIR)))
 
-ifeq ($(shell uname),Darwin)
-  SO = dylib
-else
-  SO = so
-endif
+SO = la
 
 ifeq ($(shell uname),FreeBSD)
   CFLAGS += -I/usr/local/include -L/usr/local/lib
@@ -90,18 +80,22 @@ build/debug/mujs: main.c build/debug/lib
 build/debug/mujs-pp: pp.c build/debug/libmujs.o
 	$(CC) $(CFLAGS) -g -o $@ $^ -lm
 
-build/release/libmujs.$(SO): one.c $(SRCS) $(HDRS)
+build/release/libmujs.$(SO): build/release/one.lo $(SRCS) $(HDRS)
 	@mkdir -p $(@D)
-	$(CC) $(CFLAGS) $(OPTIM) -fPIC -shared -o $@ one.c -lm
-build/release/libmujs.o: one.c $(SRCS) $(HDRS)
+	$(LIBTOOL) --mode=link --tag=CC --quiet $(CC) $(LDFLAGS) -rpath $(PREFIX)/lib -o $@ build/release/one.lo -lm
+build/release/one.lo: one.c $(SRCS) $(HDRS)
 	@mkdir -p $(@D)
-	$(CC) $(CFLAGS) $(OPTIM) -c -o $@ one.c
-build/release/libmujs.a: build/release/libmujs.o
-	$(AR) cr $@ $^
-build/release/mujs: main.c build/release/libmujs.o
-	$(CC) $(CFLAGS) $(OPTIM) -o $@ $^ -lm -DHAVE_READLINE -lreadline
-build/release/mujs-pp: pp.c build/release/libmujs.o
-	$(CC) $(CFLAGS) $(OPTIM) -o $@ $^ -lm
+	$(LIBTOOL) --mode=compile --tag=CC --quiet $(CC) $(CFLAGS) -c -o $@ one.c
+build/release/main.lo: main.c $(SRCS) $(HDRS)
+	@mkdir -p $(@D)
+	$(LIBTOOL) --mode=compile --tag=CC --quiet $(CC) $(CFLAGS) -c -o $@ main.c
+build/release/pp.lo: pp.c $(SRCS) $(HDRS)
+	@mkdir -p $(@D)
+	$(LIBTOOL) --mode=compile --tag=CC --quiet $(CC) $(CFLAGS) -c -o $@ pp.c
+build/release/mujs: build/release/main.lo build/release/one.lo
+	$(LIBTOOL) --mode=link --tag=CC --quiet $(CC) $(LDFLAGS) -o $@ $^ -lm -DHAVE_READLINE -lreadline
+build/release/mujs-pp: build/release/pp.lo build/release/one.lo
+	$(LIBTOOL) --mode=link --tag=CC --quiet $(CC) $(LDFLAGS) -o $@ $^ -lm
 
 build/release/mujs.pc:
 	@mkdir -p $(@D)
@@ -119,14 +113,14 @@ install-common: build/release/mujs build
 	install -d $(DESTDIR)$(bindir)
 	install -m 644 mujs.h $(DESTDIR)$(incdir)
 	install -m 644 build/release/mujs.pc $(DESTDIR)$(libdir)/pkgconfig
-	install -m 755 build/release/mujs $(DESTDIR)$(bindir)
-	install -m 755 build/release/mujs-pp $(DESTDIR)$(bindir)
+	$(LIBTOOL) --mode=install --tag=CC --quiet install -m 755 build/release/mujs $(DESTDIR)$(bindir)
+	$(LIBTOOL) --mode=install --tag=CC --quiet install -m 755 build/release/mujs-pp $(DESTDIR)$(bindir)
 
 install-static: install-common build/release/libmujs.a
 	install -m 644 build/release/libmujs.a $(DESTDIR)$(libdir)
 
 install-shared: install-common build/release/libmujs.$(SO)
-	install -m 755 build/release/libmujs.$(SO) $(DESTDIR)$(libdir)
+	$(LIBTOOL) --mode=install --tag=CC --quiet install -m 755 build/release/libmujs.$(SO) $(DESTDIR)$(libdir)
 
 install: install-static
 
