$NetBSD: patch-Makefile,v 1.7 2023/12/07 09:21:34 nia Exp $ - Build shared objects at build-time rather than install-time. - Honour CFLAGS and LDFLAGS. - Libtoolize. --- Makefile.orig 2023-11-21 15:27:50.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 @@ -95,18 +85,24 @@ 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 @mkdir -p $(@D) - $(CC) $(CFLAGS) $(OPTIM) -fPIC -shared -o $@ one.c -lm -build/release/libmujs.o: 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 $(READLINE_CFLAGS) $(READLINE_LIBS) -build/release/mujs-pp: pp.c build/release/libmujs.o - $(CC) $(CFLAGS) $(OPTIM) -o $@ $^ -lm + $(LIBTOOL) --mode=link --tag=CC --quiet $(CC) $(LDFLAGS) -rpath $(PREFIX)/lib -o $@ $^ -lm + +build/release/mujs: build/release/main.lo build/release/one.lo + $(LIBTOOL) --mode=link --tag=CC --quiet $(CC) $(LDFLAGS) -o $@ $^ -lm $(READLINE_CFLAGS) $(READLINE_LIBS) + +build/release/mujs-pp: build/release/pp.lo build/release/one.lo + $(LIBTOOL) --mode=link --tag=CC --quiet $(CC) $(LDFLAGS) -o $@ $^ -lm + +build/release/main.lo: main.c $(SRCS) $(HDRS) + $(LIBTOOL) --mode=compile --tag=CC --quiet $(CC) $(CFLAGS) -c -o $@ $< + +build/release/pp.lo: pp.c $(SRCS) $(HDRS) + $(LIBTOOL) --mode=compile --tag=CC --quiet $(CC) $(CFLAGS) -c -o $@ $< + +build/release/one.lo: one.c $(SRCS) $(HDRS) + $(LIBTOOL) --mode=compile --tag=CC --quiet $(CC) $(CFLAGS) -c -o $@ $< build/release/mujs.pc: @mkdir -p $(@D) @@ -124,14 +120,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