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 | 19e74b2 | 2018-01-11 17:13:41 +0100 | [diff] [blame] | 31 | rm -f *.o $(BINARIES) bsdiff_unittest .deps |
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 \ |
Alex Deymo | 68c0e7f | 2017-10-02 20:38:12 +0200 | [diff] [blame] | 40 | diff_encoder.cc \ |
Alex Deymo | 710b3da | 2017-10-26 13:13:28 +0200 | [diff] [blame] | 41 | endsley_patch_writer.cc \ |
Tianjie Xu | 18480eb | 2017-11-29 16:21:43 -0800 | [diff] [blame] | 42 | logging.cc \ |
Alex Deymo | e1140a2 | 2017-10-02 21:01:15 +0200 | [diff] [blame] | 43 | patch_writer.cc \ |
Alex Deymo | 8a179e5 | 2017-10-26 17:10:20 +0200 | [diff] [blame] | 44 | patch_writer_factory.cc \ |
Alex Deymo | 48ad5ab | 2017-09-13 22:17:57 +0200 | [diff] [blame] | 45 | split_patch_writer.cc \ |
| 46 | suffix_array_index.cc |
Gilad Arnold | 99b5374 | 2013-04-30 09:24:14 -0700 | [diff] [blame] | 47 | |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 48 | # "bspatch" program. |
| 49 | bspatch_src_files := \ |
Tianjie Xu | 4d10c3e | 2017-10-26 14:02:06 -0700 | [diff] [blame] | 50 | brotli_decompressor.cc \ |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 51 | bspatch.cc \ |
Tianjie Xu | 6528812 | 2017-10-13 15:10:58 -0700 | [diff] [blame] | 52 | bz2_decompressor.cc \ |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 53 | buffer_file.cc \ |
Tianjie Xu | 4d10c3e | 2017-10-26 14:02:06 -0700 | [diff] [blame] | 54 | decompressor_interface.cc \ |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 55 | extents.cc \ |
| 56 | extents_file.cc \ |
| 57 | file.cc \ |
Tianjie Xu | 18480eb | 2017-11-29 16:21:43 -0800 | [diff] [blame] | 58 | logging.cc \ |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 59 | memory_file.cc \ |
Tianjie Xu | 6528812 | 2017-10-13 15:10:58 -0700 | [diff] [blame] | 60 | patch_reader.cc \ |
| 61 | sink_file.cc \ |
| 62 | utils.cc |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 63 | |
| 64 | # Unit test files. |
| 65 | bsdiff_common_unittests := \ |
Tianjie Xu | 1c26e2e | 2017-10-26 17:19:41 -0700 | [diff] [blame] | 66 | brotli_compressor_unittest.cc \ |
Alex Deymo | 338f340 | 2018-03-23 13:40:17 +0100 | [diff] [blame] | 67 | brotli_decompressor_unittest.cc \ |
Tianjie Xu | 1f1cdb2 | 2017-11-20 11:05:55 -0800 | [diff] [blame] | 68 | bsdiff_arguments.cc \ |
| 69 | bsdiff_arguments_unittest.cc \ |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 70 | bsdiff_unittest.cc \ |
| 71 | bspatch_unittest.cc \ |
Alex Deymo | 64d5cd8 | 2018-03-12 20:00:04 +0100 | [diff] [blame] | 72 | bz2_decompressor_unittest.cc \ |
Alex Deymo | 68c0e7f | 2017-10-02 20:38:12 +0200 | [diff] [blame] | 73 | diff_encoder_unittest.cc \ |
Alex Deymo | 710b3da | 2017-10-26 13:13:28 +0200 | [diff] [blame] | 74 | endsley_patch_writer_unittest.cc \ |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 75 | extents_file_unittest.cc \ |
| 76 | extents_unittest.cc \ |
Tianjie Xu | 6528812 | 2017-10-13 15:10:58 -0700 | [diff] [blame] | 77 | patch_reader_unittest.cc \ |
Alex Deymo | fb3b632 | 2017-09-27 14:28:54 +0200 | [diff] [blame] | 78 | patch_writer_unittest.cc \ |
Alex Deymo | e1140a2 | 2017-10-02 21:01:15 +0200 | [diff] [blame] | 79 | split_patch_writer_unittest.cc \ |
Alex Deymo | 48ad5ab | 2017-09-13 22:17:57 +0200 | [diff] [blame] | 80 | suffix_array_index_unittest.cc \ |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 81 | test_utils.cc \ |
| 82 | testrunner.cc |
| 83 | |
| 84 | |
Tianjie Xu | 1c26e2e | 2017-10-26 17:19:41 -0700 | [diff] [blame] | 85 | BSDIFF_LIBS := -lbz2 -lbrotlienc -ldivsufsort -ldivsufsort64 |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 86 | BSDIFF_OBJS := $(bsdiff_src_files:.cc=.o) |
Tianjie Xu | 1c26e2e | 2017-10-26 17:19:41 -0700 | [diff] [blame] | 87 | BSPATCH_LIBS := -lbz2 -lbrotlidec |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 88 | BSPATCH_OBJS := $(bspatch_src_files:.cc=.o) |
Alex Deymo | a5cff22 | 2015-04-08 14:10:30 -0700 | [diff] [blame] | 89 | |
Sen Jiang | 5b372b6 | 2016-03-28 16:14:35 -0700 | [diff] [blame] | 90 | UNITTEST_LIBS = -lgmock -lgtest -lpthread |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 91 | UNITTEST_OBJS := $(bsdiff_common_unittests:.cc=.o) |
Alex Deymo | a5cff22 | 2015-04-08 14:10:30 -0700 | [diff] [blame] | 92 | |
Tianjie Xu | 1f1cdb2 | 2017-11-20 11:05:55 -0800 | [diff] [blame] | 93 | bsdiff: $(BSDIFF_OBJS) bsdiff_arguments.o bsdiff_main.o |
Alex Deymo | a5cff22 | 2015-04-08 14:10:30 -0700 | [diff] [blame] | 94 | bsdiff: LDLIBS += $(BSDIFF_LIBS) |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 95 | libbsdiff.so: $(BSDIFF_OBJS) |
| 96 | libbsdiff.so: LDLIBS += $(BSDIFF_LIBS) |
Alex Deymo | a5cff22 | 2015-04-08 14:10:30 -0700 | [diff] [blame] | 97 | |
| 98 | bspatch: $(BSPATCH_OBJS) bspatch_main.o |
| 99 | bspatch: LDLIBS += $(BSPATCH_LIBS) |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 100 | libbspatch.so: $(BSPATCH_OBJS) |
| 101 | libbspatch.so: LDLIBS += $(BSPATCH_LIBS) |
Alex Deymo | a5cff22 | 2015-04-08 14:10:30 -0700 | [diff] [blame] | 102 | |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 103 | bsdiff_unittest: LDLIBS += $(BSDIFF_LIBS) $(BSPATCH_LIBS) $(UNITTEST_LIBS) |
| 104 | bsdiff_unittest: $(BSPATCH_OBJS) $(BSDIFF_OBJS) $(UNITTEST_OBJS) |
Alex Deymo | 03f1deb | 2015-10-13 02:15:31 -0700 | [diff] [blame] | 105 | |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 106 | bsdiff_unittest bsdiff bspatch: |
| 107 | $(CXX) $(CXXFLAGS) -o $@ $^ $(LDLIBS) |
| 108 | |
| 109 | libbsdiff.so libbspatch.so: |
| 110 | $(CXX) $(CXXFLAGS) $(LDFLAGS) -Wl,-soname,$@ -shared -o $@ $^ $(LDLIBS) |
Alex Deymo | a5cff22 | 2015-04-08 14:10:30 -0700 | [diff] [blame] | 111 | |
| 112 | # Source file dependencies. |
Alex Deymo | 19e74b2 | 2018-01-11 17:13:41 +0100 | [diff] [blame] | 113 | .deps: $(bsdiff_src_files) $(bspatch_src_files) $(bsdiff_common_unittests) \ |
| 114 | bsdiff_main.cc bspatch_main.cc |
| 115 | $(CXX) $(CPPFLAGS) $(CXXFLAGS) -MM $^ >$@ || (rm -f $@; false) |
| 116 | -include .deps |
The Android Open Source Project | c285fea | 2009-03-03 19:29:20 -0800 | [diff] [blame] | 117 | |
| 118 | install: |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 119 | mkdir -p $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(MAN1DIR) \ |
| 120 | $(DESTDIR)/$(INCLUDEDIR)/bsdiff |
| 121 | $(INSTALL_PROGRAM) $(EXECUTABLES-y) $(DESTDIR)$(BINDIR) |
| 122 | $(INSTALL_PROGRAM) $(LIBRARIES-y) $(DESTDIR)$(LIBDIR) |
| 123 | $(INSTALL) -c -m 644 include/bsdiff/*.h $(DESTDIR)/$(INCLUDEDIR)/bsdiff |
Gilad Arnold | 99b5374 | 2013-04-30 09:24:14 -0700 | [diff] [blame] | 124 | ifndef WITHOUT_MAN |
Alex Deymo | ddf9db5 | 2017-03-02 16:10:41 -0800 | [diff] [blame] | 125 | $(INSTALL_MAN) $(EXECUTABLES-y:=.1) $(DESTDIR)$(MAN1DIR) |
Gilad Arnold | 99b5374 | 2013-04-30 09:24:14 -0700 | [diff] [blame] | 126 | endif |