blob: b76e3cb8e3e069104da4a4753f26f166e4a94f24 [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 Deymoddf9db52017-03-02 16:10:41 -080031rm -f *.o $(BINARIES) bsdiff_unittest
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 \
40 compressor_interface.cc \
Alex Deymo68c0e7f2017-10-02 20:38:12 +020041 diff_encoder.cc \
Alex Deymoe1140a22017-10-02 21:01:15 +020042 patch_writer.cc \
Alex Deymo8a179e52017-10-26 17:10:20 +020043 patch_writer_factory.cc \
Alex Deymo48ad5ab2017-09-13 22:17:57 +020044 split_patch_writer.cc \
45 suffix_array_index.cc
Gilad Arnold99b53742013-04-30 09:24:14 -070046
Alex Deymoddf9db52017-03-02 16:10:41 -080047# "bspatch" program.
48bspatch_src_files := \
49 bspatch.cc \
Tianjie Xu65288122017-10-13 15:10:58 -070050 bz2_decompressor.cc \
Alex Deymoddf9db52017-03-02 16:10:41 -080051 buffer_file.cc \
52 extents.cc \
53 extents_file.cc \
54 file.cc \
55 memory_file.cc \
Tianjie Xu65288122017-10-13 15:10:58 -070056 patch_reader.cc \
57 sink_file.cc \
58 utils.cc
Alex Deymoddf9db52017-03-02 16:10:41 -080059
60# Unit test files.
61bsdiff_common_unittests := \
Tianjie Xu1c26e2e2017-10-26 17:19:41 -070062 brotli_compressor_unittest.cc \
Alex Deymoddf9db52017-03-02 16:10:41 -080063 bsdiff_unittest.cc \
64 bspatch_unittest.cc \
Alex Deymo68c0e7f2017-10-02 20:38:12 +020065 diff_encoder_unittest.cc \
Alex Deymoddf9db52017-03-02 16:10:41 -080066 extents_file_unittest.cc \
67 extents_unittest.cc \
Tianjie Xu65288122017-10-13 15:10:58 -070068 patch_reader_unittest.cc \
Alex Deymofb3b6322017-09-27 14:28:54 +020069 patch_writer_unittest.cc \
Alex Deymoe1140a22017-10-02 21:01:15 +020070 split_patch_writer_unittest.cc \
Alex Deymo48ad5ab2017-09-13 22:17:57 +020071 suffix_array_index_unittest.cc \
Alex Deymoddf9db52017-03-02 16:10:41 -080072 test_utils.cc \
73 testrunner.cc
74
75
Tianjie Xu1c26e2e2017-10-26 17:19:41 -070076BSDIFF_LIBS := -lbz2 -lbrotlienc -ldivsufsort -ldivsufsort64
Alex Deymoddf9db52017-03-02 16:10:41 -080077BSDIFF_OBJS := $(bsdiff_src_files:.cc=.o)
78
Tianjie Xu1c26e2e2017-10-26 17:19:41 -070079BSPATCH_LIBS := -lbz2 -lbrotlidec
Alex Deymoddf9db52017-03-02 16:10:41 -080080BSPATCH_OBJS := $(bspatch_src_files:.cc=.o)
Alex Deymoa5cff222015-04-08 14:10:30 -070081
Sen Jiang5b372b62016-03-28 16:14:35 -070082UNITTEST_LIBS = -lgmock -lgtest -lpthread
Alex Deymoddf9db52017-03-02 16:10:41 -080083UNITTEST_OBJS := $(bsdiff_common_unittests:.cc=.o)
Alex Deymoa5cff222015-04-08 14:10:30 -070084
85bsdiff: $(BSDIFF_OBJS) bsdiff_main.o
86bsdiff: LDLIBS += $(BSDIFF_LIBS)
Alex Deymoddf9db52017-03-02 16:10:41 -080087libbsdiff.so: $(BSDIFF_OBJS)
88libbsdiff.so: LDLIBS += $(BSDIFF_LIBS)
Alex Deymoa5cff222015-04-08 14:10:30 -070089
90bspatch: $(BSPATCH_OBJS) bspatch_main.o
91bspatch: LDLIBS += $(BSPATCH_LIBS)
Alex Deymoddf9db52017-03-02 16:10:41 -080092libbspatch.so: $(BSPATCH_OBJS)
93libbspatch.so: LDLIBS += $(BSPATCH_LIBS)
Alex Deymoa5cff222015-04-08 14:10:30 -070094
Alex Deymoddf9db52017-03-02 16:10:41 -080095bsdiff_unittest: LDLIBS += $(BSDIFF_LIBS) $(BSPATCH_LIBS) $(UNITTEST_LIBS)
96bsdiff_unittest: $(BSPATCH_OBJS) $(BSDIFF_OBJS) $(UNITTEST_OBJS)
Alex Deymo03f1deb2015-10-13 02:15:31 -070097
Alex Deymoddf9db52017-03-02 16:10:41 -080098bsdiff_unittest bsdiff bspatch:
99$(CXX) $(CXXFLAGS) -o $@ $^ $(LDLIBS)
100
101libbsdiff.so libbspatch.so:
102$(CXX) $(CXXFLAGS) $(LDFLAGS) -Wl,-soname,$@ -shared -o $@ $^ $(LDLIBS)
Alex Deymoa5cff222015-04-08 14:10:30 -0700103
104# Source file dependencies.
Alex Deymoddf9db52017-03-02 16:10:41 -0800105bspatch.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
108bspatch_main.o: bspatch_main.cc include/bsdiff/bspatch.h \
109 include/bsdiff/extents_file.h include/bsdiff/file_interface.h
110bspatch_unittest.o: bspatch_unittest.cc include/bsdiff/bspatch.h \
111 include/bsdiff/extents_file.h include/bsdiff/file_interface.h \
112 test_utils.h
113buffer_file.o: buffer_file.cc buffer_file.h \
114 include/bsdiff/file_interface.h include/bsdiff/bspatch.h \
115 include/bsdiff/extents_file.h
116extents.o: extents.cc extents.h include/bsdiff/extents_file.h \
117 include/bsdiff/file_interface.h
118extents_file.o: extents_file.cc include/bsdiff/extents_file.h \
119 include/bsdiff/file_interface.h
120extents_file_unittest.o: extents_file_unittest.cc \
121 include/bsdiff/extents_file.h include/bsdiff/file_interface.h
122extents_unittest.o: extents_unittest.cc extents.h \
123 include/bsdiff/extents_file.h include/bsdiff/file_interface.h
124file.o: file.cc file.h include/bsdiff/file_interface.h
125memory_file.o: memory_file.cc memory_file.h \
126 include/bsdiff/file_interface.h
127sink_file.o: sink_file.cc sink_file.h include/bsdiff/file_interface.h
128testrunner.o: testrunner.cc test_utils.h
Alex Deymoa5cff222015-04-08 14:10:30 -0700129test_utils.o: test_utils.cc test_utils.h
The Android Open Source Projectc285fea2009-03-03 19:29:20 -0800130
131install:
Alex Deymoddf9db52017-03-02 16:10:41 -0800132mkdir -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 Arnold99b53742013-04-30 09:24:14 -0700137ifndef WITHOUT_MAN
Alex Deymoddf9db52017-03-02 16:10:41 -0800138$(INSTALL_MAN) $(EXECUTABLES-y:=.1) $(DESTDIR)$(MAN1DIR)
Gilad Arnold99b53742013-04-30 09:24:14 -0700139endif