Home | History | Annotate | Download | only in bsdiff
      1 # Default options
      2 USE_BSDIFF ?= y
      3 
      4 EXECUTABLES-y := bspatch
      5 LIBRARIES-y := libbspatch.so
      6 EXECUTABLES-$(USE_BSDIFF) += bsdiff
      7 LIBRARIES-$(USE_BSDIFF) += libbsdiff.so
      8 
      9 BINARIES := $(EXECUTABLES-y) $(LIBRARIES-y)
     10 
     11 INSTALL = install
     12 CPPFLAGS += -Iinclude
     13 CXXFLAGS += -std=c++11 -O3 -Wall -Werror -fPIC
     14 
     15 DESTDIR ?=
     16 PREFIX = /usr
     17 BINDIR = $(PREFIX)/bin
     18 DATADIR = $(PREFIX)/share
     19 MANDIR = $(DATADIR)/man
     20 MAN1DIR = $(MANDIR)/man1
     21 INCLUDEDIR ?= $(PREFIX)/include
     22 GENTOO_LIBDIR ?= lib
     23 LIBDIR ?= $(PREFIX)/$(GENTOO_LIBDIR)
     24 INSTALL_PROGRAM ?= $(INSTALL) -c -m 755
     25 INSTALL_MAN ?= $(INSTALL) -c -m 444
     26 
     27 .PHONY: all test clean install
     28 all: $(BINARIES)
     29 test: bsdiff_unittest
     30 clean:
     31 	rm -f *.o $(BINARIES) bsdiff_unittest
     32 
     33 ### List of source files for each project. Keep in sync with the Android.mk.
     34 # "bsdiff" program.
     35 bsdiff_src_files := \
     36     bsdiff.cc
     37 
     38 # "bspatch" program.
     39 bspatch_src_files := \
     40     bspatch.cc \
     41     buffer_file.cc \
     42     extents.cc \
     43     extents_file.cc \
     44     file.cc \
     45     memory_file.cc \
     46     sink_file.cc
     47 
     48 # Unit test files.
     49 bsdiff_common_unittests := \
     50     bsdiff_unittest.cc \
     51     bspatch_unittest.cc \
     52     extents_file_unittest.cc \
     53     extents_unittest.cc \
     54     test_utils.cc \
     55     testrunner.cc
     56 
     57 
     58 BSDIFF_LIBS := -lbz2 -ldivsufsort -ldivsufsort64
     59 BSDIFF_OBJS := $(bsdiff_src_files:.cc=.o)
     60 
     61 BSPATCH_LIBS := -lbz2
     62 BSPATCH_OBJS := $(bspatch_src_files:.cc=.o)
     63 
     64 UNITTEST_LIBS = -lgmock -lgtest -lpthread
     65 UNITTEST_OBJS := $(bsdiff_common_unittests:.cc=.o)
     66 
     67 bsdiff: $(BSDIFF_OBJS) bsdiff_main.o
     68 bsdiff: LDLIBS += $(BSDIFF_LIBS)
     69 libbsdiff.so: $(BSDIFF_OBJS)
     70 libbsdiff.so: LDLIBS += $(BSDIFF_LIBS)
     71 
     72 bspatch: $(BSPATCH_OBJS) bspatch_main.o
     73 bspatch: LDLIBS += $(BSPATCH_LIBS)
     74 libbspatch.so: $(BSPATCH_OBJS)
     75 libbspatch.so: LDLIBS += $(BSPATCH_LIBS)
     76 
     77 bsdiff_unittest: LDLIBS += $(BSDIFF_LIBS) $(BSPATCH_LIBS) $(UNITTEST_LIBS)
     78 bsdiff_unittest: $(BSPATCH_OBJS) $(BSDIFF_OBJS) $(UNITTEST_OBJS)
     79 
     80 bsdiff_unittest bsdiff bspatch:
     81 	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDLIBS)
     82 
     83 libbsdiff.so libbspatch.so:
     84 	$(CXX) $(CXXFLAGS) $(LDFLAGS) -Wl,-soname,$@ -shared -o $@ $^ $(LDLIBS)
     85 
     86 # Source file dependencies.
     87 bspatch.o: bspatch.cc include/bsdiff/bspatch.h \
     88  include/bsdiff/extents_file.h include/bsdiff/file_interface.h \
     89  buffer_file.h extents.h file.h memory_file.h sink_file.h
     90 bspatch_main.o: bspatch_main.cc include/bsdiff/bspatch.h \
     91  include/bsdiff/extents_file.h include/bsdiff/file_interface.h
     92 bspatch_unittest.o: bspatch_unittest.cc include/bsdiff/bspatch.h \
     93  include/bsdiff/extents_file.h include/bsdiff/file_interface.h \
     94  test_utils.h
     95 buffer_file.o: buffer_file.cc buffer_file.h \
     96  include/bsdiff/file_interface.h include/bsdiff/bspatch.h \
     97  include/bsdiff/extents_file.h
     98 extents.o: extents.cc extents.h include/bsdiff/extents_file.h \
     99  include/bsdiff/file_interface.h
    100 extents_file.o: extents_file.cc include/bsdiff/extents_file.h \
    101  include/bsdiff/file_interface.h
    102 extents_file_unittest.o: extents_file_unittest.cc \
    103  include/bsdiff/extents_file.h include/bsdiff/file_interface.h
    104 extents_unittest.o: extents_unittest.cc extents.h \
    105  include/bsdiff/extents_file.h include/bsdiff/file_interface.h
    106 file.o: file.cc file.h include/bsdiff/file_interface.h
    107 memory_file.o: memory_file.cc memory_file.h \
    108  include/bsdiff/file_interface.h
    109 sink_file.o: sink_file.cc sink_file.h include/bsdiff/file_interface.h
    110 testrunner.o: testrunner.cc test_utils.h
    111 test_utils.o: test_utils.cc test_utils.h
    112 
    113 install:
    114 	mkdir -p $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(MAN1DIR) \
    115 	  $(DESTDIR)/$(INCLUDEDIR)/bsdiff
    116 	$(INSTALL_PROGRAM) $(EXECUTABLES-y) $(DESTDIR)$(BINDIR)
    117 	$(INSTALL_PROGRAM) $(LIBRARIES-y) $(DESTDIR)$(LIBDIR)
    118 	$(INSTALL) -c -m 644 include/bsdiff/*.h $(DESTDIR)/$(INCLUDEDIR)/bsdiff
    119 ifndef WITHOUT_MAN
    120 	$(INSTALL_MAN) $(EXECUTABLES-y:=.1) $(DESTDIR)$(MAN1DIR)
    121 endif
    122