| # Default options |
| USE_BSDIFF ?= y |
| |
| EXECUTABLES-y := bspatch |
| LIBRARIES-y := libbspatch.so |
| EXECUTABLES-$(USE_BSDIFF) += bsdiff |
| LIBRARIES-$(USE_BSDIFF) += libbsdiff.so |
| |
| BINARIES := $(EXECUTABLES-y) $(LIBRARIES-y) |
| |
| INSTALL = install |
| CPPFLAGS += -Iinclude -I.. |
| CXXFLAGS += -std=c++11 -O3 -Wall -Werror -fPIC |
| |
| DESTDIR ?= |
| PREFIX = /usr |
| BINDIR = $(PREFIX)/bin |
| DATADIR = $(PREFIX)/share |
| MANDIR = $(DATADIR)/man |
| MAN1DIR = $(MANDIR)/man1 |
| INCLUDEDIR ?= $(PREFIX)/include |
| GENTOO_LIBDIR ?= lib |
| LIBDIR ?= $(PREFIX)/$(GENTOO_LIBDIR) |
| INSTALL_PROGRAM ?= $(INSTALL) -c -m 755 |
| INSTALL_MAN ?= $(INSTALL) -c -m 444 |
| |
| .PHONY: all test clean install |
| all: $(BINARIES) |
| test: bsdiff_unittest |
| clean: |
| rm -f *.o $(BINARIES) bsdiff_unittest .deps |
| |
| ### List of source files for each project. Keep in sync with the Android.mk. |
| # "bsdiff" program. |
| bsdiff_src_files := \ |
| brotli_compressor.cc \ |
| bsdiff.cc \ |
| bz2_compressor.cc \ |
| compressor_buffer.cc \ |
| diff_encoder.cc \ |
| endsley_patch_writer.cc \ |
| logging.cc \ |
| patch_writer.cc \ |
| patch_writer_factory.cc \ |
| split_patch_writer.cc \ |
| suffix_array_index.cc |
| |
| # "bspatch" program. |
| bspatch_src_files := \ |
| brotli_decompressor.cc \ |
| bspatch.cc \ |
| bz2_decompressor.cc \ |
| buffer_file.cc \ |
| decompressor_interface.cc \ |
| extents.cc \ |
| extents_file.cc \ |
| file.cc \ |
| logging.cc \ |
| memory_file.cc \ |
| patch_reader.cc \ |
| sink_file.cc \ |
| utils.cc |
| |
| # Unit test files. |
| bsdiff_common_unittests := \ |
| brotli_compressor_unittest.cc \ |
| brotli_decompressor_unittest.cc \ |
| bsdiff_arguments.cc \ |
| bsdiff_arguments_unittest.cc \ |
| bsdiff_unittest.cc \ |
| bspatch_unittest.cc \ |
| bz2_decompressor_unittest.cc \ |
| diff_encoder_unittest.cc \ |
| endsley_patch_writer_unittest.cc \ |
| extents_file_unittest.cc \ |
| extents_unittest.cc \ |
| patch_reader_unittest.cc \ |
| patch_writer_unittest.cc \ |
| split_patch_writer_unittest.cc \ |
| suffix_array_index_unittest.cc \ |
| test_utils.cc \ |
| testrunner.cc |
| |
| |
| BSDIFF_LIBS := -lbz2 -lbrotlienc -ldivsufsort -ldivsufsort64 |
| BSDIFF_OBJS := $(bsdiff_src_files:.cc=.o) |
| BSPATCH_LIBS := -lbz2 -lbrotlidec |
| BSPATCH_OBJS := $(bspatch_src_files:.cc=.o) |
| |
| UNITTEST_LIBS = -lgmock -lgtest -lpthread |
| UNITTEST_OBJS := $(bsdiff_common_unittests:.cc=.o) |
| |
| bsdiff: $(BSDIFF_OBJS) bsdiff_arguments.o bsdiff_main.o |
| bsdiff: LDLIBS += $(BSDIFF_LIBS) |
| libbsdiff.so: $(BSDIFF_OBJS) |
| libbsdiff.so: LDLIBS += $(BSDIFF_LIBS) |
| |
| bspatch: $(BSPATCH_OBJS) bspatch_main.o |
| bspatch: LDLIBS += $(BSPATCH_LIBS) |
| libbspatch.so: $(BSPATCH_OBJS) |
| libbspatch.so: LDLIBS += $(BSPATCH_LIBS) |
| |
| bsdiff_unittest: LDLIBS += $(BSDIFF_LIBS) $(BSPATCH_LIBS) $(UNITTEST_LIBS) |
| bsdiff_unittest: $(BSPATCH_OBJS) $(BSDIFF_OBJS) $(UNITTEST_OBJS) |
| |
| bsdiff_unittest bsdiff bspatch: |
| $(CXX) $(CXXFLAGS) -o $@ $^ $(LDLIBS) |
| |
| libbsdiff.so libbspatch.so: |
| $(CXX) $(CXXFLAGS) $(LDFLAGS) -Wl,-soname,$@ -shared -o $@ $^ $(LDLIBS) |
| |
| # Source file dependencies. |
| .deps: $(bsdiff_src_files) $(bspatch_src_files) $(bsdiff_common_unittests) \ |
| bsdiff_main.cc bspatch_main.cc |
| $(CXX) $(CPPFLAGS) $(CXXFLAGS) -MM $^ >$@ || (rm -f $@; false) |
| -include .deps |
| |
| install: |
| mkdir -p $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(MAN1DIR) \ |
| $(DESTDIR)/$(INCLUDEDIR)/bsdiff |
| $(INSTALL_PROGRAM) $(EXECUTABLES-y) $(DESTDIR)$(BINDIR) |
| $(INSTALL_PROGRAM) $(LIBRARIES-y) $(DESTDIR)$(LIBDIR) |
| $(INSTALL) -c -m 644 include/bsdiff/*.h $(DESTDIR)/$(INCLUDEDIR)/bsdiff |
| ifndef WITHOUT_MAN |
| $(INSTALL_MAN) $(EXECUTABLES-y:=.1) $(DESTDIR)$(MAN1DIR) |
| endif |