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