• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Default options
2USE_BSDIFF ?= y
3
4BINARIES-y = bspatch
5BINARIES-$(USE_BSDIFF) += bsdiff
6
7BINARIES += $(BINARIES-y)
8
9INSTALL = install
10CFLAGS += -O3 -Wall -Werror
11CXXFLAGS += -std=c++11
12
13DESTDIR ?=
14PREFIX = /usr
15BINDIR = $(PREFIX)/bin
16DATADIR = $(PREFIX)/share
17MANDIR = $(DATADIR)/man
18MAN1DIR = $(MANDIR)/man1
19INSTALL_PROGRAM ?= $(INSTALL) -c -m 755
20INSTALL_MAN ?= $(INSTALL) -c -m 444
21
22.PHONY: all test clean
23all: $(BINARIES)
24test: unittests
25clean:
26	rm -f *.o $(BINARIES) unittests
27
28BSDIFF_LIBS = -lbz2 -ldivsufsort -ldivsufsort64
29BSDIFF_OBJS = \
30  bsdiff.o
31
32BSPATCH_LIBS = -lbz2
33BSPATCH_OBJS = \
34  bspatch.o \
35  buffer_file.o \
36  extents.o \
37  extents_file.o \
38  file.o \
39  memory_file.o \
40  sink_file.o
41
42UNITTEST_LIBS = -lgmock -lgtest -lpthread
43UNITTEST_OBJS = \
44  bsdiff_unittest.o \
45  bspatch_unittest.o \
46  extents_file_unittest.o \
47  extents_unittest.o \
48  test_utils.o \
49  testrunner.o
50
51bsdiff: $(BSDIFF_OBJS) bsdiff_main.o
52bsdiff: LDLIBS += $(BSDIFF_LIBS)
53
54bspatch: $(BSPATCH_OBJS) bspatch_main.o
55bspatch: LDLIBS += $(BSPATCH_LIBS)
56
57unittests: LDLIBS += $(BSDIFF_LIBS) $(BSPATCH_LIBS) $(UNITTEST_LIBS)
58unittests: $(BSPATCH_OBJS) $(BSDIFF_OBJS) $(UNITTEST_OBJS)
59
60unittests bsdiff bspatch:
61	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $@ $^ $(LDLIBS)
62
63# Source file dependencies.
64bsdiff.o: bsdiff.cc
65bsdiff_main.o: bsdiff_main.cc bsdiff.h
66bsdiff_unittest.o: bsdiff_unittest.cc bsdiff.h test_utils.h
67bspatch.o: bspatch.cc bspatch.h extents.h extents_file.h file_interface.h \
68 file.h
69bspatch_main.o: bspatch_main.cc bspatch.h
70bspatch_unittest.o: bspatch_unittest.cc bspatch.h test_utils.h
71buffer_file.o: buffer_file.cc buffer_file.h file_interface.h bspatch.h
72extents.o: extents.cc extents.h extents_file.h file_interface.h
73extents_file.o: extents_file.cc extents_file.h file_interface.h
74extents_file_unittest.o: extents_file_unittest.cc extents_file.h \
75 file_interface.h
76extents_unittest.o: extents_unittest.cc extents.h extents_file.h \
77 file_interface.h
78file.o: file.cc file.h file_interface.h
79memory_file.o: memory_file.cc memory_file.h file_interface.h
80sink_file.o: sink_file.cc sink_file.h file_interface.h
81testrunner.o: testrunner.cc
82test_utils.o: test_utils.cc test_utils.h
83
84install:
85	mkdir -p $(DESTDIR)$(BINDIR) $(DESTDIR)$(MAN1DIR)
86	$(INSTALL_PROGRAM) $(BINARIES) $(DESTDIR)$(BINDIR)
87ifndef WITHOUT_MAN
88	$(INSTALL_MAN) $(BINARIES:=.1) $(DESTDIR)$(MAN1DIR)
89endif
90