blob: e721e7dab77e10d5f8db4ef66ed5c94fc095d69d [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 +010031rm -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 \
Tianjie Xu1f1cdb22017-11-20 11:05:55 -080067 bsdiff_arguments.cc \
68 bsdiff_arguments_unittest.cc \
Alex Deymoddf9db52017-03-02 16:10:41 -080069 bsdiff_unittest.cc \
70 bspatch_unittest.cc \
Alex Deymo68c0e7f2017-10-02 20:38:12 +020071 diff_encoder_unittest.cc \
Alex Deymo710b3da2017-10-26 13:13:28 +020072 endsley_patch_writer_unittest.cc \
Alex Deymoddf9db52017-03-02 16:10:41 -080073 extents_file_unittest.cc \
74 extents_unittest.cc \
Tianjie Xu65288122017-10-13 15:10:58 -070075 patch_reader_unittest.cc \
Alex Deymofb3b6322017-09-27 14:28:54 +020076 patch_writer_unittest.cc \
Alex Deymoe1140a22017-10-02 21:01:15 +020077 split_patch_writer_unittest.cc \
Alex Deymo48ad5ab2017-09-13 22:17:57 +020078 suffix_array_index_unittest.cc \
Alex Deymoddf9db52017-03-02 16:10:41 -080079 test_utils.cc \
80 testrunner.cc
81
82
Tianjie Xu1c26e2e2017-10-26 17:19:41 -070083BSDIFF_LIBS := -lbz2 -lbrotlienc -ldivsufsort -ldivsufsort64
Alex Deymoddf9db52017-03-02 16:10:41 -080084BSDIFF_OBJS := $(bsdiff_src_files:.cc=.o)
Tianjie Xu1c26e2e2017-10-26 17:19:41 -070085BSPATCH_LIBS := -lbz2 -lbrotlidec
Alex Deymoddf9db52017-03-02 16:10:41 -080086BSPATCH_OBJS := $(bspatch_src_files:.cc=.o)
Alex Deymoa5cff222015-04-08 14:10:30 -070087
Sen Jiang5b372b62016-03-28 16:14:35 -070088UNITTEST_LIBS = -lgmock -lgtest -lpthread
Alex Deymoddf9db52017-03-02 16:10:41 -080089UNITTEST_OBJS := $(bsdiff_common_unittests:.cc=.o)
Alex Deymoa5cff222015-04-08 14:10:30 -070090
Tianjie Xu1f1cdb22017-11-20 11:05:55 -080091bsdiff: $(BSDIFF_OBJS) bsdiff_arguments.o bsdiff_main.o
Alex Deymoa5cff222015-04-08 14:10:30 -070092bsdiff: LDLIBS += $(BSDIFF_LIBS)
Alex Deymoddf9db52017-03-02 16:10:41 -080093libbsdiff.so: $(BSDIFF_OBJS)
94libbsdiff.so: LDLIBS += $(BSDIFF_LIBS)
Alex Deymoa5cff222015-04-08 14:10:30 -070095
96bspatch: $(BSPATCH_OBJS) bspatch_main.o
97bspatch: LDLIBS += $(BSPATCH_LIBS)
Alex Deymoddf9db52017-03-02 16:10:41 -080098libbspatch.so: $(BSPATCH_OBJS)
99libbspatch.so: LDLIBS += $(BSPATCH_LIBS)
Alex Deymoa5cff222015-04-08 14:10:30 -0700100
Alex Deymoddf9db52017-03-02 16:10:41 -0800101bsdiff_unittest: LDLIBS += $(BSDIFF_LIBS) $(BSPATCH_LIBS) $(UNITTEST_LIBS)
102bsdiff_unittest: $(BSPATCH_OBJS) $(BSDIFF_OBJS) $(UNITTEST_OBJS)
Alex Deymo03f1deb2015-10-13 02:15:31 -0700103
Alex Deymoddf9db52017-03-02 16:10:41 -0800104bsdiff_unittest bsdiff bspatch:
105$(CXX) $(CXXFLAGS) -o $@ $^ $(LDLIBS)
106
107libbsdiff.so libbspatch.so:
108$(CXX) $(CXXFLAGS) $(LDFLAGS) -Wl,-soname,$@ -shared -o $@ $^ $(LDLIBS)
Alex Deymoa5cff222015-04-08 14:10:30 -0700109
110# Source file dependencies.
Alex Deymo19e74b22018-01-11 17:13:41 +0100111.deps: $(bsdiff_src_files) $(bspatch_src_files) $(bsdiff_common_unittests) \
112 bsdiff_main.cc bspatch_main.cc
113$(CXX) $(CPPFLAGS) $(CXXFLAGS) -MM $^ >$@ || (rm -f $@; false)
114-include .deps
The Android Open Source Projectc285fea2009-03-03 19:29:20 -0800115
116install:
Alex Deymoddf9db52017-03-02 16:10:41 -0800117mkdir -p $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(MAN1DIR) \
118 $(DESTDIR)/$(INCLUDEDIR)/bsdiff
119$(INSTALL_PROGRAM) $(EXECUTABLES-y) $(DESTDIR)$(BINDIR)
120$(INSTALL_PROGRAM) $(LIBRARIES-y) $(DESTDIR)$(LIBDIR)
121$(INSTALL) -c -m 644 include/bsdiff/*.h $(DESTDIR)/$(INCLUDEDIR)/bsdiff
Gilad Arnold99b53742013-04-30 09:24:14 -0700122ifndef WITHOUT_MAN
Alex Deymoddf9db52017-03-02 16:10:41 -0800123$(INSTALL_MAN) $(EXECUTABLES-y:=.1) $(DESTDIR)$(MAN1DIR)
Gilad Arnold99b53742013-04-30 09:24:14 -0700124endif