Alex Deymo | 4384370 | 2014-05-12 19:43:59 -0700 | [diff] [blame] | 1 | # Default options |
| 2 | USE_BSDIFF ?= y |
| 3 | |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 4 | EXECUTABLES-y := bspatch |
| 5 | LIBRARIES-y := libbspatch.so |
| 6 | EXECUTABLES-$(USE_BSDIFF) += bsdiff |
| 7 | LIBRARIES-$(USE_BSDIFF) += libbsdiff.so |
Alex Deymo | 4384370 | 2014-05-12 19:43:59 -0700 | [diff] [blame] | 8 | |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 9 | BINARIES := $(EXECUTABLES-y) $(LIBRARIES-y) |
The Android Open Source Project | c285fea | 2009-03-03 19:29:20 -0800 | [diff] [blame] | 10 | |
Gilad Arnold | 99b5374 | 2013-04-30 09:24:14 -0700 | [diff] [blame] | 11 | INSTALL = install |
Alex Deymo | dcd423b | 2017-09-13 20:54:24 +0200 | [diff] [blame] | 12 | CPPFLAGS += -Iinclude -I.. |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 13 | CXXFLAGS += -std=c++11 -O3 -Wall -Werror -fPIC |
The Android Open Source Project | c285fea | 2009-03-03 19:29:20 -0800 | [diff] [blame] | 14 | |
Gilad Arnold | 99b5374 | 2013-04-30 09:24:14 -0700 | [diff] [blame] | 15 | DESTDIR ?= |
| 16 | PREFIX = /usr |
| 17 | BINDIR = $(PREFIX)/bin |
| 18 | DATADIR = $(PREFIX)/share |
| 19 | MANDIR = $(DATADIR)/man |
| 20 | MAN1DIR = $(MANDIR)/man1 |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 21 | INCLUDEDIR ?= $(PREFIX)/include |
| 22 | GENTOO_LIBDIR ?= lib |
| 23 | LIBDIR ?= $(PREFIX)/$(GENTOO_LIBDIR) |
Gilad Arnold | 99b5374 | 2013-04-30 09:24:14 -0700 | [diff] [blame] | 24 | INSTALL_PROGRAM ?= $(INSTALL) -c -m 755 |
| 25 | INSTALL_MAN ?= $(INSTALL) -c -m 444 |
| 26 | |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 27 | .PHONY: all test clean install |
Gilad Arnold | 99b5374 | 2013-04-30 09:24:14 -0700 | [diff] [blame] | 28 | all: $(BINARIES) |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 29 | test: bsdiff_unittest |
Gilad Arnold | 99b5374 | 2013-04-30 09:24:14 -0700 | [diff] [blame] | 30 | clean: |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 31 | rm -f *.o $(BINARIES) bsdiff_unittest |
Gilad Arnold | 99b5374 | 2013-04-30 09:24:14 -0700 | [diff] [blame] | 32 | |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 33 | ### List of source files for each project. Keep in sync with the Android.mk. |
| 34 | # "bsdiff" program. |
| 35 | bsdiff_src_files := \ |
Tianjie Xu | 1c26e2e | 2017-10-26 17:19:41 -0700 | [diff] [blame^] | 36 | brotli_compressor.cc \ |
Alex Deymo | a28e019 | 2017-09-08 14:21:05 +0200 | [diff] [blame] | 37 | bsdiff.cc \ |
| 38 | bz2_compressor.cc \ |
Tianjie Xu | 1c26e2e | 2017-10-26 17:19:41 -0700 | [diff] [blame^] | 39 | compressor_buffer.cc \ |
| 40 | compressor_interface.cc \ |
Alex Deymo | 68c0e7f | 2017-10-02 20:38:12 +0200 | [diff] [blame] | 41 | diff_encoder.cc \ |
Alex Deymo | e1140a2 | 2017-10-02 21:01:15 +0200 | [diff] [blame] | 42 | patch_writer.cc \ |
Alex Deymo | 8a179e5 | 2017-10-26 17:10:20 +0200 | [diff] [blame] | 43 | patch_writer_factory.cc \ |
Alex Deymo | 48ad5ab | 2017-09-13 22:17:57 +0200 | [diff] [blame] | 44 | split_patch_writer.cc \ |
| 45 | suffix_array_index.cc |
Gilad Arnold | 99b5374 | 2013-04-30 09:24:14 -0700 | [diff] [blame] | 46 | |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 47 | # "bspatch" program. |
| 48 | bspatch_src_files := \ |
| 49 | bspatch.cc \ |
Tianjie Xu | 6528812 | 2017-10-13 15:10:58 -0700 | [diff] [blame] | 50 | bz2_decompressor.cc \ |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 51 | buffer_file.cc \ |
| 52 | extents.cc \ |
| 53 | extents_file.cc \ |
| 54 | file.cc \ |
| 55 | memory_file.cc \ |
Tianjie Xu | 6528812 | 2017-10-13 15:10:58 -0700 | [diff] [blame] | 56 | patch_reader.cc \ |
| 57 | sink_file.cc \ |
| 58 | utils.cc |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 59 | |
| 60 | # Unit test files. |
| 61 | bsdiff_common_unittests := \ |
Tianjie Xu | 1c26e2e | 2017-10-26 17:19:41 -0700 | [diff] [blame^] | 62 | brotli_compressor_unittest.cc \ |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 63 | bsdiff_unittest.cc \ |
| 64 | bspatch_unittest.cc \ |
Alex Deymo | 68c0e7f | 2017-10-02 20:38:12 +0200 | [diff] [blame] | 65 | diff_encoder_unittest.cc \ |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 66 | extents_file_unittest.cc \ |
| 67 | extents_unittest.cc \ |
Tianjie Xu | 6528812 | 2017-10-13 15:10:58 -0700 | [diff] [blame] | 68 | patch_reader_unittest.cc \ |
Alex Deymo | fb3b632 | 2017-09-27 14:28:54 +0200 | [diff] [blame] | 69 | patch_writer_unittest.cc \ |
Alex Deymo | e1140a2 | 2017-10-02 21:01:15 +0200 | [diff] [blame] | 70 | split_patch_writer_unittest.cc \ |
Alex Deymo | 48ad5ab | 2017-09-13 22:17:57 +0200 | [diff] [blame] | 71 | suffix_array_index_unittest.cc \ |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 72 | test_utils.cc \ |
| 73 | testrunner.cc |
| 74 | |
| 75 | |
Tianjie Xu | 1c26e2e | 2017-10-26 17:19:41 -0700 | [diff] [blame^] | 76 | BSDIFF_LIBS := -lbz2 -lbrotlienc -ldivsufsort -ldivsufsort64 |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 77 | BSDIFF_OBJS := $(bsdiff_src_files:.cc=.o) |
| 78 | |
Tianjie Xu | 1c26e2e | 2017-10-26 17:19:41 -0700 | [diff] [blame^] | 79 | BSPATCH_LIBS := -lbz2 -lbrotlidec |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 80 | BSPATCH_OBJS := $(bspatch_src_files:.cc=.o) |
Alex Deymo | a5cff22 | 2015-04-08 14:10:30 -0700 | [diff] [blame] | 81 | |
Sen Jiang | 5b372b6 | 2016-03-28 16:14:35 -0700 | [diff] [blame] | 82 | UNITTEST_LIBS = -lgmock -lgtest -lpthread |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 83 | UNITTEST_OBJS := $(bsdiff_common_unittests:.cc=.o) |
Alex Deymo | a5cff22 | 2015-04-08 14:10:30 -0700 | [diff] [blame] | 84 | |
| 85 | bsdiff: $(BSDIFF_OBJS) bsdiff_main.o |
| 86 | bsdiff: LDLIBS += $(BSDIFF_LIBS) |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 87 | libbsdiff.so: $(BSDIFF_OBJS) |
| 88 | libbsdiff.so: LDLIBS += $(BSDIFF_LIBS) |
Alex Deymo | a5cff22 | 2015-04-08 14:10:30 -0700 | [diff] [blame] | 89 | |
| 90 | bspatch: $(BSPATCH_OBJS) bspatch_main.o |
| 91 | bspatch: LDLIBS += $(BSPATCH_LIBS) |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 92 | libbspatch.so: $(BSPATCH_OBJS) |
| 93 | libbspatch.so: LDLIBS += $(BSPATCH_LIBS) |
Alex Deymo | a5cff22 | 2015-04-08 14:10:30 -0700 | [diff] [blame] | 94 | |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 95 | bsdiff_unittest: LDLIBS += $(BSDIFF_LIBS) $(BSPATCH_LIBS) $(UNITTEST_LIBS) |
| 96 | bsdiff_unittest: $(BSPATCH_OBJS) $(BSDIFF_OBJS) $(UNITTEST_OBJS) |
Alex Deymo | 03f1deb | 2015-10-13 02:15:31 -0700 | [diff] [blame] | 97 | |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 98 | bsdiff_unittest bsdiff bspatch: |
| 99 | $(CXX) $(CXXFLAGS) -o $@ $^ $(LDLIBS) |
| 100 | |
| 101 | libbsdiff.so libbspatch.so: |
| 102 | $(CXX) $(CXXFLAGS) $(LDFLAGS) -Wl,-soname,$@ -shared -o $@ $^ $(LDLIBS) |
Alex Deymo | a5cff22 | 2015-04-08 14:10:30 -0700 | [diff] [blame] | 103 | |
| 104 | # Source file dependencies. |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 105 | bspatch.o: bspatch.cc include/bsdiff/bspatch.h \ |
| 106 | include/bsdiff/extents_file.h include/bsdiff/file_interface.h \ |
| 107 | buffer_file.h extents.h file.h memory_file.h sink_file.h |
| 108 | bspatch_main.o: bspatch_main.cc include/bsdiff/bspatch.h \ |
| 109 | include/bsdiff/extents_file.h include/bsdiff/file_interface.h |
| 110 | bspatch_unittest.o: bspatch_unittest.cc include/bsdiff/bspatch.h \ |
| 111 | include/bsdiff/extents_file.h include/bsdiff/file_interface.h \ |
| 112 | test_utils.h |
| 113 | buffer_file.o: buffer_file.cc buffer_file.h \ |
| 114 | include/bsdiff/file_interface.h include/bsdiff/bspatch.h \ |
| 115 | include/bsdiff/extents_file.h |
| 116 | extents.o: extents.cc extents.h include/bsdiff/extents_file.h \ |
| 117 | include/bsdiff/file_interface.h |
| 118 | extents_file.o: extents_file.cc include/bsdiff/extents_file.h \ |
| 119 | include/bsdiff/file_interface.h |
| 120 | extents_file_unittest.o: extents_file_unittest.cc \ |
| 121 | include/bsdiff/extents_file.h include/bsdiff/file_interface.h |
| 122 | extents_unittest.o: extents_unittest.cc extents.h \ |
| 123 | include/bsdiff/extents_file.h include/bsdiff/file_interface.h |
| 124 | file.o: file.cc file.h include/bsdiff/file_interface.h |
| 125 | memory_file.o: memory_file.cc memory_file.h \ |
| 126 | include/bsdiff/file_interface.h |
| 127 | sink_file.o: sink_file.cc sink_file.h include/bsdiff/file_interface.h |
| 128 | testrunner.o: testrunner.cc test_utils.h |
Alex Deymo | a5cff22 | 2015-04-08 14:10:30 -0700 | [diff] [blame] | 129 | test_utils.o: test_utils.cc test_utils.h |
The Android Open Source Project | c285fea | 2009-03-03 19:29:20 -0800 | [diff] [blame] | 130 | |
| 131 | install: |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 132 | mkdir -p $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(MAN1DIR) \ |
| 133 | $(DESTDIR)/$(INCLUDEDIR)/bsdiff |
| 134 | $(INSTALL_PROGRAM) $(EXECUTABLES-y) $(DESTDIR)$(BINDIR) |
| 135 | $(INSTALL_PROGRAM) $(LIBRARIES-y) $(DESTDIR)$(LIBDIR) |
| 136 | $(INSTALL) -c -m 644 include/bsdiff/*.h $(DESTDIR)/$(INCLUDEDIR)/bsdiff |
Gilad Arnold | 99b5374 | 2013-04-30 09:24:14 -0700 | [diff] [blame] | 137 | ifndef WITHOUT_MAN |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 138 | $(INSTALL_MAN) $(EXECUTABLES-y:=.1) $(DESTDIR)$(MAN1DIR) |
Gilad Arnold | 99b5374 | 2013-04-30 09:24:14 -0700 | [diff] [blame] | 139 | endif |