blob: 05bdf4b0d874fef4dca1e5551f0d0eb877953403 [file] [log] [blame]
Alex Deymo43843702014-05-12 19:43:59 -07001# Default options
2USE_BSDIFF ?= y
3
Alex Deymoddf9db52017-03-02 16:10:41 -08004EXECUTABLES-y := bspatch
5LIBRARIES-y := libbspatch.so
6EXECUTABLES-$(USE_BSDIFF) += bsdiff
7LIBRARIES-$(USE_BSDIFF) += libbsdiff.so
Alex Deymo43843702014-05-12 19:43:59 -07008
Alex Deymoddf9db52017-03-02 16:10:41 -08009BINARIES := $(EXECUTABLES-y) $(LIBRARIES-y)
The Android Open Source Projectc285fea2009-03-03 19:29:20 -080010
Gilad Arnold99b53742013-04-30 09:24:14 -070011INSTALL = install
Alex Deymodcd423b2017-09-13 20:54:24 +020012CPPFLAGS += -Iinclude -I..
Alex Deymoddf9db52017-03-02 16:10:41 -080013CXXFLAGS += -std=c++11 -O3 -Wall -Werror -fPIC
The Android Open Source Projectc285fea2009-03-03 19:29:20 -080014
Gilad Arnold99b53742013-04-30 09:24:14 -070015DESTDIR ?=
16PREFIX = /usr
17BINDIR = $(PREFIX)/bin
18DATADIR = $(PREFIX)/share
19MANDIR = $(DATADIR)/man
20MAN1DIR = $(MANDIR)/man1
Alex Deymoddf9db52017-03-02 16:10:41 -080021INCLUDEDIR ?= $(PREFIX)/include
22GENTOO_LIBDIR ?= lib
23LIBDIR ?= $(PREFIX)/$(GENTOO_LIBDIR)
Gilad Arnold99b53742013-04-30 09:24:14 -070024INSTALL_PROGRAM ?= $(INSTALL) -c -m 755
25INSTALL_MAN ?= $(INSTALL) -c -m 444
26
Alex Deymoddf9db52017-03-02 16:10:41 -080027.PHONY: all test clean install
Gilad Arnold99b53742013-04-30 09:24:14 -070028all: $(BINARIES)
Alex Deymoddf9db52017-03-02 16:10:41 -080029test: bsdiff_unittest
Gilad Arnold99b53742013-04-30 09:24:14 -070030clean:
Alex Deymo19e74b22018-01-11 17:13:41 +010031 rm -f *.o $(BINARIES) bsdiff_unittest .deps
Gilad Arnold99b53742013-04-30 09:24:14 -070032
Alex Deymoddf9db52017-03-02 16:10:41 -080033### List of source files for each project. Keep in sync with the Android.mk.
34# "bsdiff" program.
35bsdiff_src_files := \
Tianjie Xu1c26e2e2017-10-26 17:19:41 -070036 brotli_compressor.cc \
Alex Deymoa28e0192017-09-08 14:21:05 +020037 bsdiff.cc \
38 bz2_compressor.cc \
Tianjie Xu1c26e2e2017-10-26 17:19:41 -070039 compressor_buffer.cc \
Alex Deymo68c0e7f2017-10-02 20:38:12 +020040 diff_encoder.cc \
Alex Deymo710b3da2017-10-26 13:13:28 +020041 endsley_patch_writer.cc \
Tianjie Xu18480eb2017-11-29 16:21:43 -080042 logging.cc \
Alex Deymoe1140a22017-10-02 21:01:15 +020043 patch_writer.cc \
Alex Deymo8a179e52017-10-26 17:10:20 +020044 patch_writer_factory.cc \
Alex Deymo48ad5ab2017-09-13 22:17:57 +020045 split_patch_writer.cc \
46 suffix_array_index.cc
Gilad Arnold99b53742013-04-30 09:24:14 -070047
Alex Deymoddf9db52017-03-02 16:10:41 -080048# "bspatch" program.
49bspatch_src_files := \
Tianjie Xu4d10c3e2017-10-26 14:02:06 -070050 brotli_decompressor.cc \
Alex Deymoddf9db52017-03-02 16:10:41 -080051 bspatch.cc \
Tianjie Xu65288122017-10-13 15:10:58 -070052 bz2_decompressor.cc \
Alex Deymoddf9db52017-03-02 16:10:41 -080053 buffer_file.cc \
Tianjie Xu4d10c3e2017-10-26 14:02:06 -070054 decompressor_interface.cc \
Alex Deymoddf9db52017-03-02 16:10:41 -080055 extents.cc \
56 extents_file.cc \
57 file.cc \
Tianjie Xu18480eb2017-11-29 16:21:43 -080058 logging.cc \
Alex Deymoddf9db52017-03-02 16:10:41 -080059 memory_file.cc \
Tianjie Xu65288122017-10-13 15:10:58 -070060 patch_reader.cc \
61 sink_file.cc \
62 utils.cc
Alex Deymoddf9db52017-03-02 16:10:41 -080063
64# Unit test files.
65bsdiff_common_unittests := \
Tianjie Xu1c26e2e2017-10-26 17:19:41 -070066 brotli_compressor_unittest.cc \
Alex Deymo338f3402018-03-23 13:40:17 +010067 brotli_decompressor_unittest.cc \
Tianjie Xu1f1cdb22017-11-20 11:05:55 -080068 bsdiff_arguments.cc \
69 bsdiff_arguments_unittest.cc \
Alex Deymoddf9db52017-03-02 16:10:41 -080070 bsdiff_unittest.cc \
71 bspatch_unittest.cc \
Alex Deymo64d5cd82018-03-12 20:00:04 +010072 bz2_decompressor_unittest.cc \
Alex Deymo68c0e7f2017-10-02 20:38:12 +020073 diff_encoder_unittest.cc \
Alex Deymo710b3da2017-10-26 13:13:28 +020074 endsley_patch_writer_unittest.cc \
Alex Deymoddf9db52017-03-02 16:10:41 -080075 extents_file_unittest.cc \
76 extents_unittest.cc \
Tianjie Xu65288122017-10-13 15:10:58 -070077 patch_reader_unittest.cc \
Alex Deymofb3b6322017-09-27 14:28:54 +020078 patch_writer_unittest.cc \
Alex Deymoe1140a22017-10-02 21:01:15 +020079 split_patch_writer_unittest.cc \
Alex Deymo48ad5ab2017-09-13 22:17:57 +020080 suffix_array_index_unittest.cc \
Alex Deymoddf9db52017-03-02 16:10:41 -080081 test_utils.cc \
82 testrunner.cc
83
84
Tianjie Xu1c26e2e2017-10-26 17:19:41 -070085BSDIFF_LIBS := -lbz2 -lbrotlienc -ldivsufsort -ldivsufsort64
Alex Deymoddf9db52017-03-02 16:10:41 -080086BSDIFF_OBJS := $(bsdiff_src_files:.cc=.o)
Tianjie Xu1c26e2e2017-10-26 17:19:41 -070087BSPATCH_LIBS := -lbz2 -lbrotlidec
Alex Deymoddf9db52017-03-02 16:10:41 -080088BSPATCH_OBJS := $(bspatch_src_files:.cc=.o)
Alex Deymoa5cff222015-04-08 14:10:30 -070089
Sen Jiang5b372b62016-03-28 16:14:35 -070090UNITTEST_LIBS = -lgmock -lgtest -lpthread
Alex Deymoddf9db52017-03-02 16:10:41 -080091UNITTEST_OBJS := $(bsdiff_common_unittests:.cc=.o)
Alex Deymoa5cff222015-04-08 14:10:30 -070092
Tianjie Xu1f1cdb22017-11-20 11:05:55 -080093bsdiff: $(BSDIFF_OBJS) bsdiff_arguments.o bsdiff_main.o
Alex Deymoa5cff222015-04-08 14:10:30 -070094bsdiff: LDLIBS += $(BSDIFF_LIBS)
Alex Deymoddf9db52017-03-02 16:10:41 -080095libbsdiff.so: $(BSDIFF_OBJS)
96libbsdiff.so: LDLIBS += $(BSDIFF_LIBS)
Alex Deymoa5cff222015-04-08 14:10:30 -070097
98bspatch: $(BSPATCH_OBJS) bspatch_main.o
99bspatch: LDLIBS += $(BSPATCH_LIBS)
Alex Deymoddf9db52017-03-02 16:10:41 -0800100libbspatch.so: $(BSPATCH_OBJS)
101libbspatch.so: LDLIBS += $(BSPATCH_LIBS)
Alex Deymoa5cff222015-04-08 14:10:30 -0700102
Alex Deymoddf9db52017-03-02 16:10:41 -0800103bsdiff_unittest: LDLIBS += $(BSDIFF_LIBS) $(BSPATCH_LIBS) $(UNITTEST_LIBS)
104bsdiff_unittest: $(BSPATCH_OBJS) $(BSDIFF_OBJS) $(UNITTEST_OBJS)
Alex Deymo03f1deb2015-10-13 02:15:31 -0700105
Alex Deymoddf9db52017-03-02 16:10:41 -0800106bsdiff_unittest bsdiff bspatch:
107 $(CXX) $(CXXFLAGS) -o $@ $^ $(LDLIBS)
108
109libbsdiff.so libbspatch.so:
110 $(CXX) $(CXXFLAGS) $(LDFLAGS) -Wl,-soname,$@ -shared -o $@ $^ $(LDLIBS)
Alex Deymoa5cff222015-04-08 14:10:30 -0700111
112# Source file dependencies.
Alex Deymo19e74b22018-01-11 17:13:41 +0100113.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 Projectc285fea2009-03-03 19:29:20 -0800117
118install:
Alex Deymoddf9db52017-03-02 16:10:41 -0800119 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 Arnold99b53742013-04-30 09:24:14 -0700124ifndef WITHOUT_MAN
Alex Deymoddf9db52017-03-02 16:10:41 -0800125 $(INSTALL_MAN) $(EXECUTABLES-y:=.1) $(DESTDIR)$(MAN1DIR)
Gilad Arnold99b53742013-04-30 09:24:14 -0700126endif