| # Default options |
| USE_BSDIFF ?= y |
| |
| BINARIES-y = bspatch |
| BINARIES-$(USE_BSDIFF) += bsdiff |
| |
| BINARIES += $(BINARIES-y) |
| |
| INSTALL = install |
| CFLAGS += -O3 -Wall -Werror |
| CXXFLAGS += -std=c++11 |
| |
| 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 test clean |
| all: $(BINARIES) |
| test: unittests |
| clean: |
| rm -f *.o $(BINARIES) unittests |
| |
| BSDIFF_LIBS = -lbz2 -ldivsufsort -ldivsufsort64 |
| BSDIFF_OBJS = \ |
| bsdiff.o |
| |
| BSPATCH_LIBS = -lbz2 |
| BSPATCH_OBJS = \ |
| bspatch.o \ |
| buffer_file.o \ |
| extents.o \ |
| extents_file.o \ |
| file.o \ |
| memory_file.o \ |
| sink_file.o |
| |
| UNITTEST_LIBS = -lgmock -lgtest -lpthread |
| UNITTEST_OBJS = \ |
| bsdiff_unittest.o \ |
| bspatch_unittest.o \ |
| extents_file_unittest.o \ |
| extents_unittest.o \ |
| test_utils.o \ |
| testrunner.o |
| |
| bsdiff: $(BSDIFF_OBJS) bsdiff_main.o |
| bsdiff: LDLIBS += $(BSDIFF_LIBS) |
| |
| bspatch: $(BSPATCH_OBJS) bspatch_main.o |
| bspatch: LDLIBS += $(BSPATCH_LIBS) |
| |
| unittests: LDLIBS += $(BSDIFF_LIBS) $(BSPATCH_LIBS) $(UNITTEST_LIBS) |
| unittests: $(BSPATCH_OBJS) $(BSDIFF_OBJS) $(UNITTEST_OBJS) |
| |
| unittests bsdiff bspatch: |
| $(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $@ $^ $(LDLIBS) |
| |
| # Source file dependencies. |
| bsdiff.o: bsdiff.cc |
| bsdiff_main.o: bsdiff_main.cc bsdiff.h |
| bsdiff_unittest.o: bsdiff_unittest.cc bsdiff.h test_utils.h |
| bspatch.o: bspatch.cc bspatch.h extents.h extents_file.h file_interface.h \ |
| file.h |
| bspatch_main.o: bspatch_main.cc bspatch.h |
| bspatch_unittest.o: bspatch_unittest.cc bspatch.h test_utils.h |
| buffer_file.o: buffer_file.cc buffer_file.h file_interface.h bspatch.h |
| extents.o: extents.cc extents.h extents_file.h file_interface.h |
| extents_file.o: extents_file.cc extents_file.h file_interface.h |
| extents_file_unittest.o: extents_file_unittest.cc extents_file.h \ |
| file_interface.h |
| extents_unittest.o: extents_unittest.cc extents.h extents_file.h \ |
| file_interface.h |
| file.o: file.cc file.h file_interface.h |
| memory_file.o: memory_file.cc memory_file.h file_interface.h |
| sink_file.o: sink_file.cc sink_file.h file_interface.h |
| testrunner.o: testrunner.cc |
| test_utils.o: test_utils.cc test_utils.h |
| |
| install: |
| mkdir -p $(DESTDIR)$(BINDIR) $(DESTDIR)$(MAN1DIR) |
| $(INSTALL_PROGRAM) $(BINARIES) $(DESTDIR)$(BINDIR) |
| ifndef WITHOUT_MAN |
| $(INSTALL_MAN) $(BINARIES:=.1) $(DESTDIR)$(MAN1DIR) |
| endif |