1*a3a45f30SXin Li# Default options 2*a3a45f30SXin LiUSE_BSDIFF ?= y 3*a3a45f30SXin Li 4*a3a45f30SXin LiEXECUTABLES-y := bspatch 5*a3a45f30SXin LiLIBRARIES-y := libbspatch.so 6*a3a45f30SXin LiEXECUTABLES-$(USE_BSDIFF) += bsdiff 7*a3a45f30SXin LiLIBRARIES-$(USE_BSDIFF) += libbsdiff.so 8*a3a45f30SXin Li 9*a3a45f30SXin LiBINARIES := $(EXECUTABLES-y) $(LIBRARIES-y) 10*a3a45f30SXin Li 11*a3a45f30SXin LiINSTALL = install 12*a3a45f30SXin LiCPPFLAGS += -Iinclude -I.. 13*a3a45f30SXin LiCXXFLAGS += -std=c++11 -O3 -Wall -Werror -fPIC 14*a3a45f30SXin Li 15*a3a45f30SXin LiDESTDIR ?= 16*a3a45f30SXin LiPREFIX = /usr 17*a3a45f30SXin LiBINDIR = $(PREFIX)/bin 18*a3a45f30SXin LiDATADIR = $(PREFIX)/share 19*a3a45f30SXin LiMANDIR = $(DATADIR)/man 20*a3a45f30SXin LiMAN1DIR = $(MANDIR)/man1 21*a3a45f30SXin LiINCLUDEDIR ?= $(PREFIX)/include 22*a3a45f30SXin LiGENTOO_LIBDIR ?= lib 23*a3a45f30SXin LiLIBDIR ?= $(PREFIX)/$(GENTOO_LIBDIR) 24*a3a45f30SXin LiINSTALL_PROGRAM ?= $(INSTALL) -c -m 755 25*a3a45f30SXin LiINSTALL_MAN ?= $(INSTALL) -c -m 444 26*a3a45f30SXin Li 27*a3a45f30SXin Li.PHONY: all test clean install 28*a3a45f30SXin Liall: $(BINARIES) 29*a3a45f30SXin Litest: bsdiff_unittest 30*a3a45f30SXin Liclean: 31*a3a45f30SXin Li rm -f *.o $(BINARIES) bsdiff_unittest .deps 32*a3a45f30SXin Li 33*a3a45f30SXin Li### List of source files for each project. Keep in sync with the Android.mk. 34*a3a45f30SXin Li# "bsdiff" program. 35*a3a45f30SXin Libsdiff_src_files := \ 36*a3a45f30SXin Li brotli_compressor.cc \ 37*a3a45f30SXin Li bsdiff.cc \ 38*a3a45f30SXin Li bz2_compressor.cc \ 39*a3a45f30SXin Li compressor_buffer.cc \ 40*a3a45f30SXin Li diff_encoder.cc \ 41*a3a45f30SXin Li endsley_patch_writer.cc \ 42*a3a45f30SXin Li logging.cc \ 43*a3a45f30SXin Li patch_writer.cc \ 44*a3a45f30SXin Li patch_writer_factory.cc \ 45*a3a45f30SXin Li split_patch_writer.cc \ 46*a3a45f30SXin Li suffix_array_index.cc 47*a3a45f30SXin Li 48*a3a45f30SXin Li# "bspatch" program. 49*a3a45f30SXin Libspatch_src_files := \ 50*a3a45f30SXin Li brotli_decompressor.cc \ 51*a3a45f30SXin Li bspatch.cc \ 52*a3a45f30SXin Li bz2_decompressor.cc \ 53*a3a45f30SXin Li buffer_file.cc \ 54*a3a45f30SXin Li decompressor_interface.cc \ 55*a3a45f30SXin Li extents.cc \ 56*a3a45f30SXin Li extents_file.cc \ 57*a3a45f30SXin Li file.cc \ 58*a3a45f30SXin Li logging.cc \ 59*a3a45f30SXin Li memory_file.cc \ 60*a3a45f30SXin Li patch_reader.cc \ 61*a3a45f30SXin Li sink_file.cc \ 62*a3a45f30SXin Li utils.cc 63*a3a45f30SXin Li 64*a3a45f30SXin Li# Unit test files. 65*a3a45f30SXin Libsdiff_common_unittests := \ 66*a3a45f30SXin Li brotli_compressor_unittest.cc \ 67*a3a45f30SXin Li brotli_decompressor_unittest.cc \ 68*a3a45f30SXin Li bsdiff_arguments.cc \ 69*a3a45f30SXin Li bsdiff_arguments_unittest.cc \ 70*a3a45f30SXin Li bsdiff_unittest.cc \ 71*a3a45f30SXin Li bspatch_unittest.cc \ 72*a3a45f30SXin Li bz2_decompressor_unittest.cc \ 73*a3a45f30SXin Li diff_encoder_unittest.cc \ 74*a3a45f30SXin Li endsley_patch_writer_unittest.cc \ 75*a3a45f30SXin Li extents_file_unittest.cc \ 76*a3a45f30SXin Li extents_unittest.cc \ 77*a3a45f30SXin Li patch_reader_unittest.cc \ 78*a3a45f30SXin Li patch_writer_unittest.cc \ 79*a3a45f30SXin Li split_patch_writer_unittest.cc \ 80*a3a45f30SXin Li suffix_array_index_unittest.cc \ 81*a3a45f30SXin Li test_utils.cc \ 82*a3a45f30SXin Li testrunner.cc 83*a3a45f30SXin Li 84*a3a45f30SXin Li 85*a3a45f30SXin LiBSDIFF_LIBS := -lbz2 -lbrotlienc -ldivsufsort -ldivsufsort64 86*a3a45f30SXin LiBSDIFF_OBJS := $(bsdiff_src_files:.cc=.o) 87*a3a45f30SXin LiBSPATCH_LIBS := -lbz2 -lbrotlidec 88*a3a45f30SXin LiBSPATCH_OBJS := $(bspatch_src_files:.cc=.o) 89*a3a45f30SXin Li 90*a3a45f30SXin LiUNITTEST_LIBS = -lgmock -lgtest -lpthread 91*a3a45f30SXin LiUNITTEST_OBJS := $(bsdiff_common_unittests:.cc=.o) 92*a3a45f30SXin Li 93*a3a45f30SXin Libsdiff: $(BSDIFF_OBJS) bsdiff_arguments.o bsdiff_main.o 94*a3a45f30SXin Libsdiff: LDLIBS += $(BSDIFF_LIBS) 95*a3a45f30SXin Lilibbsdiff.so: $(BSDIFF_OBJS) 96*a3a45f30SXin Lilibbsdiff.so: LDLIBS += $(BSDIFF_LIBS) 97*a3a45f30SXin Li 98*a3a45f30SXin Libspatch: $(BSPATCH_OBJS) bspatch_main.o 99*a3a45f30SXin Libspatch: LDLIBS += $(BSPATCH_LIBS) 100*a3a45f30SXin Lilibbspatch.so: $(BSPATCH_OBJS) 101*a3a45f30SXin Lilibbspatch.so: LDLIBS += $(BSPATCH_LIBS) 102*a3a45f30SXin Li 103*a3a45f30SXin Libsdiff_unittest: LDLIBS += $(BSDIFF_LIBS) $(BSPATCH_LIBS) $(UNITTEST_LIBS) 104*a3a45f30SXin Libsdiff_unittest: $(BSPATCH_OBJS) $(BSDIFF_OBJS) $(UNITTEST_OBJS) 105*a3a45f30SXin Li 106*a3a45f30SXin Libsdiff_unittest bsdiff bspatch: 107*a3a45f30SXin Li $(CXX) $(CXXFLAGS) -o $@ $^ $(LDLIBS) 108*a3a45f30SXin Li 109*a3a45f30SXin Lilibbsdiff.so libbspatch.so: 110*a3a45f30SXin Li $(CXX) $(CXXFLAGS) $(LDFLAGS) -Wl,-soname,$@ -shared -o $@ $^ $(LDLIBS) 111*a3a45f30SXin Li 112*a3a45f30SXin Li# Source file dependencies. 113*a3a45f30SXin Li.deps: $(bsdiff_src_files) $(bspatch_src_files) $(bsdiff_common_unittests) \ 114*a3a45f30SXin Li bsdiff_main.cc bspatch_main.cc 115*a3a45f30SXin Li $(CXX) $(CPPFLAGS) $(CXXFLAGS) -MM $^ >$@ || (rm -f $@; false) 116*a3a45f30SXin Li-include .deps 117*a3a45f30SXin Li 118*a3a45f30SXin Liinstall: 119*a3a45f30SXin Li mkdir -p $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(MAN1DIR) \ 120*a3a45f30SXin Li $(DESTDIR)/$(INCLUDEDIR)/bsdiff 121*a3a45f30SXin Li $(INSTALL_PROGRAM) $(EXECUTABLES-y) $(DESTDIR)$(BINDIR) 122*a3a45f30SXin Li $(INSTALL_PROGRAM) $(LIBRARIES-y) $(DESTDIR)$(LIBDIR) 123*a3a45f30SXin Li $(INSTALL) -c -m 644 include/bsdiff/*.h $(DESTDIR)/$(INCLUDEDIR)/bsdiff 124*a3a45f30SXin Liifndef WITHOUT_MAN 125*a3a45f30SXin Li $(INSTALL_MAN) $(EXECUTABLES-y:=.1) $(DESTDIR)$(MAN1DIR) 126*a3a45f30SXin Liendif 127