xref: /aosp_15_r20/external/bsdiff/Makefile (revision a3a45f308bd90ef1a6e6a5e8fb92fe449b895909)
1*a3a45f30SXin Li# Default options
2*a3a45f30SXin LiUSE_BSDIFF ?= y
3*a3a45f30SXin Li
4*a3a45f30SXin LiEXECUTABLES-y := bspatch
5*a3a45f30SXin LiLIBRARIES-y := libbspatch.so
6*a3a45f30SXin LiEXECUTABLES-$(USE_BSDIFF) += bsdiff
7*a3a45f30SXin LiLIBRARIES-$(USE_BSDIFF) += libbsdiff.so
8*a3a45f30SXin Li
9*a3a45f30SXin LiBINARIES := $(EXECUTABLES-y) $(LIBRARIES-y)
10*a3a45f30SXin Li
11*a3a45f30SXin LiINSTALL = install
12*a3a45f30SXin LiCPPFLAGS += -Iinclude -I..
13*a3a45f30SXin LiCXXFLAGS += -std=c++11 -O3 -Wall -Werror -fPIC
14*a3a45f30SXin Li
15*a3a45f30SXin LiDESTDIR ?=
16*a3a45f30SXin LiPREFIX = /usr
17*a3a45f30SXin LiBINDIR = $(PREFIX)/bin
18*a3a45f30SXin LiDATADIR = $(PREFIX)/share
19*a3a45f30SXin LiMANDIR = $(DATADIR)/man
20*a3a45f30SXin LiMAN1DIR = $(MANDIR)/man1
21*a3a45f30SXin LiINCLUDEDIR ?= $(PREFIX)/include
22*a3a45f30SXin LiGENTOO_LIBDIR ?= lib
23*a3a45f30SXin LiLIBDIR ?= $(PREFIX)/$(GENTOO_LIBDIR)
24*a3a45f30SXin LiINSTALL_PROGRAM ?= $(INSTALL) -c -m 755
25*a3a45f30SXin LiINSTALL_MAN ?= $(INSTALL) -c -m 444
26*a3a45f30SXin Li
27*a3a45f30SXin Li.PHONY: all test clean install
28*a3a45f30SXin Liall: $(BINARIES)
29*a3a45f30SXin Litest: bsdiff_unittest
30*a3a45f30SXin Liclean:
31*a3a45f30SXin Li	rm -f *.o $(BINARIES) bsdiff_unittest .deps
32*a3a45f30SXin Li
33*a3a45f30SXin Li### List of source files for each project. Keep in sync with the Android.mk.
34*a3a45f30SXin Li# "bsdiff" program.
35*a3a45f30SXin Libsdiff_src_files := \
36*a3a45f30SXin Li    brotli_compressor.cc \
37*a3a45f30SXin Li    bsdiff.cc \
38*a3a45f30SXin Li    bz2_compressor.cc \
39*a3a45f30SXin Li    compressor_buffer.cc \
40*a3a45f30SXin Li    diff_encoder.cc \
41*a3a45f30SXin Li    endsley_patch_writer.cc \
42*a3a45f30SXin Li    logging.cc \
43*a3a45f30SXin Li    patch_writer.cc \
44*a3a45f30SXin Li    patch_writer_factory.cc \
45*a3a45f30SXin Li    split_patch_writer.cc \
46*a3a45f30SXin Li    suffix_array_index.cc
47*a3a45f30SXin Li
48*a3a45f30SXin Li# "bspatch" program.
49*a3a45f30SXin Libspatch_src_files := \
50*a3a45f30SXin Li    brotli_decompressor.cc \
51*a3a45f30SXin Li    bspatch.cc \
52*a3a45f30SXin Li    bz2_decompressor.cc \
53*a3a45f30SXin Li    buffer_file.cc \
54*a3a45f30SXin Li    decompressor_interface.cc \
55*a3a45f30SXin Li    extents.cc \
56*a3a45f30SXin Li    extents_file.cc \
57*a3a45f30SXin Li    file.cc \
58*a3a45f30SXin Li    logging.cc \
59*a3a45f30SXin Li    memory_file.cc \
60*a3a45f30SXin Li    patch_reader.cc \
61*a3a45f30SXin Li    sink_file.cc \
62*a3a45f30SXin Li    utils.cc
63*a3a45f30SXin Li
64*a3a45f30SXin Li# Unit test files.
65*a3a45f30SXin Libsdiff_common_unittests := \
66*a3a45f30SXin Li    brotli_compressor_unittest.cc \
67*a3a45f30SXin Li    brotli_decompressor_unittest.cc \
68*a3a45f30SXin Li    bsdiff_arguments.cc \
69*a3a45f30SXin Li    bsdiff_arguments_unittest.cc \
70*a3a45f30SXin Li    bsdiff_unittest.cc \
71*a3a45f30SXin Li    bspatch_unittest.cc \
72*a3a45f30SXin Li    bz2_decompressor_unittest.cc \
73*a3a45f30SXin Li    diff_encoder_unittest.cc \
74*a3a45f30SXin Li    endsley_patch_writer_unittest.cc \
75*a3a45f30SXin Li    extents_file_unittest.cc \
76*a3a45f30SXin Li    extents_unittest.cc \
77*a3a45f30SXin Li    patch_reader_unittest.cc \
78*a3a45f30SXin Li    patch_writer_unittest.cc \
79*a3a45f30SXin Li    split_patch_writer_unittest.cc \
80*a3a45f30SXin Li    suffix_array_index_unittest.cc \
81*a3a45f30SXin Li    test_utils.cc \
82*a3a45f30SXin Li    testrunner.cc
83*a3a45f30SXin Li
84*a3a45f30SXin Li
85*a3a45f30SXin LiBSDIFF_LIBS := -lbz2 -lbrotlienc -ldivsufsort -ldivsufsort64
86*a3a45f30SXin LiBSDIFF_OBJS := $(bsdiff_src_files:.cc=.o)
87*a3a45f30SXin LiBSPATCH_LIBS := -lbz2 -lbrotlidec
88*a3a45f30SXin LiBSPATCH_OBJS := $(bspatch_src_files:.cc=.o)
89*a3a45f30SXin Li
90*a3a45f30SXin LiUNITTEST_LIBS = -lgmock -lgtest -lpthread
91*a3a45f30SXin LiUNITTEST_OBJS := $(bsdiff_common_unittests:.cc=.o)
92*a3a45f30SXin Li
93*a3a45f30SXin Libsdiff: $(BSDIFF_OBJS) bsdiff_arguments.o bsdiff_main.o
94*a3a45f30SXin Libsdiff: LDLIBS += $(BSDIFF_LIBS)
95*a3a45f30SXin Lilibbsdiff.so: $(BSDIFF_OBJS)
96*a3a45f30SXin Lilibbsdiff.so: LDLIBS += $(BSDIFF_LIBS)
97*a3a45f30SXin Li
98*a3a45f30SXin Libspatch: $(BSPATCH_OBJS) bspatch_main.o
99*a3a45f30SXin Libspatch: LDLIBS += $(BSPATCH_LIBS)
100*a3a45f30SXin Lilibbspatch.so: $(BSPATCH_OBJS)
101*a3a45f30SXin Lilibbspatch.so: LDLIBS += $(BSPATCH_LIBS)
102*a3a45f30SXin Li
103*a3a45f30SXin Libsdiff_unittest: LDLIBS += $(BSDIFF_LIBS) $(BSPATCH_LIBS) $(UNITTEST_LIBS)
104*a3a45f30SXin Libsdiff_unittest: $(BSPATCH_OBJS) $(BSDIFF_OBJS) $(UNITTEST_OBJS)
105*a3a45f30SXin Li
106*a3a45f30SXin Libsdiff_unittest bsdiff bspatch:
107*a3a45f30SXin Li	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDLIBS)
108*a3a45f30SXin Li
109*a3a45f30SXin Lilibbsdiff.so libbspatch.so:
110*a3a45f30SXin Li	$(CXX) $(CXXFLAGS) $(LDFLAGS) -Wl,-soname,$@ -shared -o $@ $^ $(LDLIBS)
111*a3a45f30SXin Li
112*a3a45f30SXin Li# Source file dependencies.
113*a3a45f30SXin Li.deps: $(bsdiff_src_files) $(bspatch_src_files) $(bsdiff_common_unittests) \
114*a3a45f30SXin Li       bsdiff_main.cc bspatch_main.cc
115*a3a45f30SXin Li	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -MM $^ >$@ || (rm -f $@; false)
116*a3a45f30SXin Li-include .deps
117*a3a45f30SXin Li
118*a3a45f30SXin Liinstall:
119*a3a45f30SXin Li	mkdir -p $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(MAN1DIR) \
120*a3a45f30SXin Li	  $(DESTDIR)/$(INCLUDEDIR)/bsdiff
121*a3a45f30SXin Li	$(INSTALL_PROGRAM) $(EXECUTABLES-y) $(DESTDIR)$(BINDIR)
122*a3a45f30SXin Li	$(INSTALL_PROGRAM) $(LIBRARIES-y) $(DESTDIR)$(LIBDIR)
123*a3a45f30SXin Li	$(INSTALL) -c -m 644 include/bsdiff/*.h $(DESTDIR)/$(INCLUDEDIR)/bsdiff
124*a3a45f30SXin Liifndef WITHOUT_MAN
125*a3a45f30SXin Li	$(INSTALL_MAN) $(EXECUTABLES-y:=.1) $(DESTDIR)$(MAN1DIR)
126*a3a45f30SXin Liendif
127