1 # Default options 2 USE_BSDIFF ?= y 3 4 EXECUTABLES-y := bspatch 5 LIBRARIES-y := libbspatch.so 6 EXECUTABLES-$(USE_BSDIFF) += bsdiff 7 LIBRARIES-$(USE_BSDIFF) += libbsdiff.so 8 9 BINARIES := $(EXECUTABLES-y) $(LIBRARIES-y) 10 11 INSTALL = install 12 CPPFLAGS += -Iinclude 13 CXXFLAGS += -std=c++11 -O3 -Wall -Werror -fPIC 14 15 DESTDIR ?= 16 PREFIX = /usr 17 BINDIR = $(PREFIX)/bin 18 DATADIR = $(PREFIX)/share 19 MANDIR = $(DATADIR)/man 20 MAN1DIR = $(MANDIR)/man1 21 INCLUDEDIR ?= $(PREFIX)/include 22 GENTOO_LIBDIR ?= lib 23 LIBDIR ?= $(PREFIX)/$(GENTOO_LIBDIR) 24 INSTALL_PROGRAM ?= $(INSTALL) -c -m 755 25 INSTALL_MAN ?= $(INSTALL) -c -m 444 26 27 .PHONY: all test clean install 28 all: $(BINARIES) 29 test: bsdiff_unittest 30 clean: 31 rm -f *.o $(BINARIES) bsdiff_unittest 32 33 ### List of source files for each project. Keep in sync with the Android.mk. 34 # "bsdiff" program. 35 bsdiff_src_files := \ 36 bsdiff.cc 37 38 # "bspatch" program. 39 bspatch_src_files := \ 40 bspatch.cc \ 41 buffer_file.cc \ 42 extents.cc \ 43 extents_file.cc \ 44 file.cc \ 45 memory_file.cc \ 46 sink_file.cc 47 48 # Unit test files. 49 bsdiff_common_unittests := \ 50 bsdiff_unittest.cc \ 51 bspatch_unittest.cc \ 52 extents_file_unittest.cc \ 53 extents_unittest.cc \ 54 test_utils.cc \ 55 testrunner.cc 56 57 58 BSDIFF_LIBS := -lbz2 -ldivsufsort -ldivsufsort64 59 BSDIFF_OBJS := $(bsdiff_src_files:.cc=.o) 60 61 BSPATCH_LIBS := -lbz2 62 BSPATCH_OBJS := $(bspatch_src_files:.cc=.o) 63 64 UNITTEST_LIBS = -lgmock -lgtest -lpthread 65 UNITTEST_OBJS := $(bsdiff_common_unittests:.cc=.o) 66 67 bsdiff: $(BSDIFF_OBJS) bsdiff_main.o 68 bsdiff: LDLIBS += $(BSDIFF_LIBS) 69 libbsdiff.so: $(BSDIFF_OBJS) 70 libbsdiff.so: LDLIBS += $(BSDIFF_LIBS) 71 72 bspatch: $(BSPATCH_OBJS) bspatch_main.o 73 bspatch: LDLIBS += $(BSPATCH_LIBS) 74 libbspatch.so: $(BSPATCH_OBJS) 75 libbspatch.so: LDLIBS += $(BSPATCH_LIBS) 76 77 bsdiff_unittest: LDLIBS += $(BSDIFF_LIBS) $(BSPATCH_LIBS) $(UNITTEST_LIBS) 78 bsdiff_unittest: $(BSPATCH_OBJS) $(BSDIFF_OBJS) $(UNITTEST_OBJS) 79 80 bsdiff_unittest bsdiff bspatch: 81 $(CXX) $(CXXFLAGS) -o $@ $^ $(LDLIBS) 82 83 libbsdiff.so libbspatch.so: 84 $(CXX) $(CXXFLAGS) $(LDFLAGS) -Wl,-soname,$@ -shared -o $@ $^ $(LDLIBS) 85 86 # Source file dependencies. 87 bspatch.o: bspatch.cc include/bsdiff/bspatch.h \ 88 include/bsdiff/extents_file.h include/bsdiff/file_interface.h \ 89 buffer_file.h extents.h file.h memory_file.h sink_file.h 90 bspatch_main.o: bspatch_main.cc include/bsdiff/bspatch.h \ 91 include/bsdiff/extents_file.h include/bsdiff/file_interface.h 92 bspatch_unittest.o: bspatch_unittest.cc include/bsdiff/bspatch.h \ 93 include/bsdiff/extents_file.h include/bsdiff/file_interface.h \ 94 test_utils.h 95 buffer_file.o: buffer_file.cc buffer_file.h \ 96 include/bsdiff/file_interface.h include/bsdiff/bspatch.h \ 97 include/bsdiff/extents_file.h 98 extents.o: extents.cc extents.h include/bsdiff/extents_file.h \ 99 include/bsdiff/file_interface.h 100 extents_file.o: extents_file.cc include/bsdiff/extents_file.h \ 101 include/bsdiff/file_interface.h 102 extents_file_unittest.o: extents_file_unittest.cc \ 103 include/bsdiff/extents_file.h include/bsdiff/file_interface.h 104 extents_unittest.o: extents_unittest.cc extents.h \ 105 include/bsdiff/extents_file.h include/bsdiff/file_interface.h 106 file.o: file.cc file.h include/bsdiff/file_interface.h 107 memory_file.o: memory_file.cc memory_file.h \ 108 include/bsdiff/file_interface.h 109 sink_file.o: sink_file.cc sink_file.h include/bsdiff/file_interface.h 110 testrunner.o: testrunner.cc test_utils.h 111 test_utils.o: test_utils.cc test_utils.h 112 113 install: 114 mkdir -p $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(MAN1DIR) \ 115 $(DESTDIR)/$(INCLUDEDIR)/bsdiff 116 $(INSTALL_PROGRAM) $(EXECUTABLES-y) $(DESTDIR)$(BINDIR) 117 $(INSTALL_PROGRAM) $(LIBRARIES-y) $(DESTDIR)$(LIBDIR) 118 $(INSTALL) -c -m 644 include/bsdiff/*.h $(DESTDIR)/$(INCLUDEDIR)/bsdiff 119 ifndef WITHOUT_MAN 120 $(INSTALL_MAN) $(EXECUTABLES-y:=.1) $(DESTDIR)$(MAN1DIR) 121 endif 122