$NetBSD: patch-Makefile,v 1.7 2023/12/21 10:46:15 nros Exp $ - Inherit the PREFIX rather than hard-coding it. - Allow override of MANDIR to install manpages correctly - Apply to fix Darwin build - Move quantize.c back into libgif.so to fix various library users. --- Makefile.orig 2019-06-24 16:08:57.000000000 +0000 +++ Makefile @@ -8,17 +8,17 @@ # OFLAGS = -O0 -g OFLAGS = -O2 -CFLAGS = -std=gnu99 -fPIC -Wall -Wno-format-truncation $(OFLAGS) +CFLAGS += -std=gnu99 -fPIC SHELL = /bin/sh TAR = tar INSTALL = install -PREFIX = /usr/local +PREFIX?= /usr/local BINDIR = $(PREFIX)/bin INCDIR = $(PREFIX)/include LIBDIR = $(PREFIX)/lib -MANDIR = $(PREFIX)/share/man +MANDIR?= $(PREFIX)/share/man # No user-serviceable parts below this line @@ -29,14 +29,16 @@ LIBPOINT=0 LIBVER=$(LIBMAJOR).$(LIBMINOR).$(LIBPOINT) SOURCES = dgif_lib.c egif_lib.c gifalloc.c gif_err.c gif_font.c \ - gif_hash.c openbsd-reallocarray.c + gif_hash.c openbsd-reallocarray.c quantize.c HEADERS = gif_hash.h gif_lib.h gif_lib_private.h OBJECTS = $(SOURCES:.c=.o) -USOURCES = qprintf.c quantize.c getarg.c +USOURCES = qprintf.c getarg.c UHEADERS = getarg.h UOBJECTS = $(USOURCES:.c=.o) +UNAME:=$(shell uname) + # Some utilities are installed INSTALLABLE = \ gif2rgb \ @@ -61,27 +63,38 @@ UTILS = $(INSTALLABLE) \ LDLIBS=libgif.a -lm -all: libgif.so libgif.a libutil.so libutil.a $(UTILS) - $(MAKE) -C doc +ifeq ($(UNAME), Darwin) +SOEXTENSION = dylib +LIBGIFSOMAJOR = libgif.$(LIBMAJOR).$(SOEXTENSION) +LIBGIFSOVER = libgif.$(LIBVER).$(SOEXTENSION) +else +SOEXTENSION = so +LIBGIFSOMAJOR = libgif.$(SOEXTENSION).$(LIBMAJOR) +LIBGIFSOVER = libgif.$(SOEXTENSION).$(LIBVER) +endif +LIBGIFSO = libgif.$(SOEXTENSION) + +all: $(LIBGIFSO) libgif.a libutil.a $(UTILS) $(UTILS):: libgif.a libutil.a -libgif.so: $(OBJECTS) $(HEADERS) - $(CC) $(CFLAGS) -shared $(LDFLAGS) -Wl,-soname -Wl,libgif.so.$(LIBMAJOR) -o libgif.so $(OBJECTS) +$(LIBGIFSO): $(OBJECTS) $(HEADERS) +ifeq ($(UNAME), Darwin) + $(CC) $(CFLAGS) -dynamiclib -current_version $(LIBVER) $(OBJECTS) -o $(LIBGIFSO) +else + $(CC) $(CFLAGS) -shared $(LDFLAGS) -Wl,-soname -Wl,$(LIBGIFSOMAJOR) -o $(LIBGIFSO) $(OBJECTS) +endif libgif.a: $(OBJECTS) $(HEADERS) $(AR) rcs libgif.a $(OBJECTS) -libutil.so: $(UOBJECTS) $(UHEADERS) - $(CC) $(CFLAGS) -shared $(LDFLAGS) -Wl,-soname -Wl,libutil.so.$(LIBMAJOR) -o libutil.so $(UOBJECTS) - libutil.a: $(UOBJECTS) $(UHEADERS) $(AR) rcs libutil.a $(UOBJECTS) clean: - rm -f $(UTILS) $(TARGET) libgetarg.a libgif.a libgif.so libutil.a libutil.so *.o - rm -f libgif.so.$(LIBMAJOR).$(LIBMINOR).$(LIBPOINT) - rm -f libgif.so.$(LIBMAJOR) + rm -f $(UTILS) $(TARGET) libgetarg.a libgif.a $(LIBGIFSO) libutil.a *.o + rm -f $(LIBGIFSOVER) + rm -f $(LIBGIFSOMAJOR) rm -fr doc/*.1 *.html doc/staging check: all @@ -89,7 +102,8 @@ check: all # Installation/uninstallation -install: all install-bin install-include install-lib install-man +install: all install-bin install-include install-lib + install-bin: $(INSTALLABLE) $(INSTALL) -d "$(DESTDIR)$(BINDIR)" $(INSTALL) $^ "$(DESTDIR)$(BINDIR)" @@ -99,9 +113,10 @@ install-include: install-lib: $(INSTALL) -d "$(DESTDIR)$(LIBDIR)" $(INSTALL) -m 644 libgif.a "$(DESTDIR)$(LIBDIR)/libgif.a" - $(INSTALL) -m 755 libgif.so "$(DESTDIR)$(LIBDIR)/libgif.so.$(LIBVER)" - ln -sf libgif.so.$(LIBVER) "$(DESTDIR)$(LIBDIR)/libgif.so.$(LIBMAJOR)" - ln -sf libgif.so.$(LIBMAJOR) "$(DESTDIR)$(LIBDIR)/libgif.so" + $(INSTALL) -m 755 $(LIBGIFSO) "$(DESTDIR)$(LIBDIR)/$(LIBGIFSOVER)" + ln -sf $(LIBGIFSOVER) "$(DESTDIR)$(LIBDIR)/$(LIBGIFSOMAJOR)" + ln -sf $(LIBGIFSOMAJOR) "$(DESTDIR)$(LIBDIR)/$(LIBGIFSO)" + install-man: $(INSTALL) -d "$(DESTDIR)$(MANDIR)/man1" $(INSTALL) -m 644 doc/*.1 "$(DESTDIR)$(MANDIR)/man1" @@ -112,7 +127,7 @@ uninstall-include: rm -f "$(DESTDIR)$(INCDIR)/gif_lib.h" uninstall-lib: cd "$(DESTDIR)$(LIBDIR)" && \ - rm -f libgif.a libgif.so libgif.so.$(LIBMAJOR) libgif.so.$(LIBVER) + rm -f libgif.a $(LIBGIFSO) $(LIBGIFSOMAJOR) $(LIBGIFSOVER) uninstall-man: cd "$(DESTDIR)$(MANDIR)/man1" && rm -f $(shell cd doc >/dev/null && echo *.1)