blob: d3abcb3eb9f38cedbc90d4efca7844dd307a3ca5 [file] [log] [blame]
Makefile runs properly on GNU systems and complies with Portage EAPI 4.
--- Makefile
+++ Makefile
@@ -1,15 +1,34 @@
-CFLAGS += -O3 -lbz2
+BINARIES = bsdiff bspatch
-PREFIX ?= /usr/local
-INSTALL_PROGRAM ?= ${INSTALL} -c -s -m 555
-INSTALL_MAN ?= ${INSTALL} -c -m 444
+INSTALL = install
+CFLAGS += -O3 -Wall -Werror
-all: bsdiff bspatch
-bsdiff: bsdiff.c
-bspatch: bspatch.c
+DESTDIR ?=
+PREFIX = /usr
+BINDIR = $(PREFIX)/bin
+DATADIR = $(PREFIX)/share
+MANDIR = $(DATADIR)/man
+MAN1DIR = $(MANDIR)/man1
+INSTALL_PROGRAM ?= $(INSTALL) -c -m 755
+INSTALL_MAN ?= $(INSTALL) -c -m 444
+
+.PHONY: all clean
+all: $(BINARIES)
+clean:
+ rm -f *.o $(BINARIES)
+
+bsdiff: bsdiff.o
+bsdiff: LDLIBS += -lbz2 -ldivsufsort -ldivsufsort64
+bspatch: bspatch.o extents.o exfile.o
+bspatch: LDLIBS += -lbz2
+
+bspatch.o: extents.h exfile.h
+extents.o: extents.h exfile.h
+exfile.o: exfile.h
install:
- ${INSTALL_PROGRAM} bsdiff bspatch ${PREFIX}/bin
-.ifndef WITHOUT_MAN
- ${INSTALL_MAN} bsdiff.1 bspatch.1 ${PREFIX}/man/man1
-.endif
+ mkdir -p $(DESTDIR)$(BINDIR) $(DESTDIR)$(MAN1DIR)
+ $(INSTALL_PROGRAM) $(BINARIES) $(DESTDIR)$(BINDIR)
+ifndef WITHOUT_MAN
+ $(INSTALL_MAN) $(BINARIES:=.1) $(DESTDIR)$(MAN1DIR)
+endif