diff options
author | Alex Deymo <deymo@google.com> | 2017-03-02 16:10:41 -0800 |
---|---|---|
committer | Alex Deymo <deymo@google.com> | 2017-05-03 18:29:10 -0700 |
commit | ddf9db52938e67d4dcbf7c4f159b094eaddbabeb (patch) | |
tree | 07a1e5f4ca7d47b4412bac6c443ea756276caf7d | |
parent | b9fa8599064d10afd8c231155500f0b8e934d71f (diff) | |
download | bsdiff-ddf9db52938e67d4dcbf7c4f159b094eaddbabeb.tar.gz |
Update Makefile to build shared libraries.
The Makefile didn't build libbspatch and libbsdiff. This patch includes
those libraries in the Makefile and moves the header files exposed by
those to an include/bsdiff subdirectory following the Android
convention so calling program can include "bsdiff/bspatch.h" avoiding
any collision with other libraries.
The Android.mk is updated to export the new include path while keeping
the old style until calling programs are updated.
The new Makefile allows Chromium OS to build the new libraries.
Bug: None
Test: FEATURES=test emerge-link bsdiff; sudo emerge bsdiff
Test: mmma external/bsdiff
Change-Id: I2ea9251eb224e9418fe236e4c4c9c5621853f590
-rw-r--r-- | Android.mk | 18 | ||||
-rw-r--r-- | Makefile | 140 | ||||
-rw-r--r-- | bsdiff.cc | 2 | ||||
-rw-r--r-- | bsdiff_main.cc | 2 | ||||
-rw-r--r-- | bsdiff_unittest.cc | 2 | ||||
-rw-r--r-- | bspatch.cc | 6 | ||||
-rw-r--r-- | bspatch_main.cc | 2 | ||||
-rw-r--r-- | bspatch_unittest.cc | 2 | ||||
-rw-r--r-- | buffer_file.cc | 2 | ||||
-rw-r--r-- | buffer_file.h | 2 | ||||
-rw-r--r-- | extents.h | 2 | ||||
-rw-r--r-- | extents_file.cc | 2 | ||||
-rw-r--r-- | extents_file_unittest.cc | 4 | ||||
-rw-r--r-- | file.h | 2 | ||||
-rw-r--r-- | include/bsdiff/bsdiff.h (renamed from bsdiff.h) | 0 | ||||
-rw-r--r-- | include/bsdiff/bspatch.h (renamed from bspatch.h) | 2 | ||||
-rw-r--r-- | include/bsdiff/extents_file.h (renamed from extents_file.h) | 2 | ||||
-rw-r--r-- | include/bsdiff/file_interface.h (renamed from file_interface.h) | 0 | ||||
-rw-r--r-- | memory_file.h | 2 | ||||
-rw-r--r-- | sink_file.h | 2 |
20 files changed, 119 insertions, 77 deletions
@@ -52,6 +52,12 @@ bsdiff_common_unittests := \ extents_unittest.cc \ test_utils.cc +# TODO(deymo): Remove include/bsdiff when all callers use the "bsdiff/" prefix +# when including code. +lib_export_includes := \ + $(LOCAL_PATH)/include \ + $(LOCAL_PATH)/include/bsdiff + # Target static libraries. include $(CLEAR_VARS) @@ -59,7 +65,8 @@ LOCAL_MODULE := libbspatch LOCAL_CPP_EXTENSION := .cc LOCAL_SRC_FILES := $(bspatch_src_files) LOCAL_CFLAGS := $(bsdiff_common_cflags) -LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) +LOCAL_C_INCLUDES := $(LOCAL_PATH)/include +LOCAL_EXPORT_C_INCLUDE_DIRS := $(lib_export_includes) LOCAL_STATIC_LIBRARIES := $(bsdiff_common_static_libs) include $(BUILD_STATIC_LIBRARY) @@ -68,7 +75,8 @@ LOCAL_MODULE := libbsdiff LOCAL_CPP_EXTENSION := .cc LOCAL_SRC_FILES := $(bsdiff_src_files) LOCAL_CFLAGS := $(bsdiff_common_cflags) -LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) +LOCAL_C_INCLUDES := $(LOCAL_PATH)/include +LOCAL_EXPORT_C_INCLUDE_DIRS := $(lib_export_includes) LOCAL_STATIC_LIBRARIES := $(bsdiff_static_libs) include $(BUILD_STATIC_LIBRARY) @@ -79,7 +87,8 @@ LOCAL_MODULE := libbspatch LOCAL_CPP_EXTENSION := .cc LOCAL_SRC_FILES := $(bspatch_src_files) LOCAL_CFLAGS := $(bsdiff_common_cflags) -LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) +LOCAL_C_INCLUDES := $(LOCAL_PATH)/include +LOCAL_EXPORT_C_INCLUDE_DIRS := $(lib_export_includes) LOCAL_STATIC_LIBRARIES := $(bsdiff_common_static_libs) include $(BUILD_HOST_STATIC_LIBRARY) @@ -88,7 +97,8 @@ LOCAL_MODULE := libbsdiff LOCAL_CPP_EXTENSION := .cc LOCAL_SRC_FILES := $(bsdiff_src_files) LOCAL_CFLAGS := $(bsdiff_common_cflags) -LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) +LOCAL_C_INCLUDES := $(LOCAL_PATH)/include +LOCAL_EXPORT_C_INCLUDE_DIRS := $(lib_export_includes) LOCAL_STATIC_LIBRARIES := $(bsdiff_static_libs) include $(BUILD_HOST_STATIC_LIBRARY) @@ -1,14 +1,16 @@ # Default options USE_BSDIFF ?= y -BINARIES-y = bspatch -BINARIES-$(USE_BSDIFF) += bsdiff +EXECUTABLES-y := bspatch +LIBRARIES-y := libbspatch.so +EXECUTABLES-$(USE_BSDIFF) += bsdiff +LIBRARIES-$(USE_BSDIFF) += libbsdiff.so -BINARIES += $(BINARIES-y) +BINARIES := $(EXECUTABLES-y) $(LIBRARIES-y) INSTALL = install -CFLAGS += -O3 -Wall -Werror -CXXFLAGS += -std=c++11 +CPPFLAGS += -Iinclude +CXXFLAGS += -std=c++11 -O3 -Wall -Werror -fPIC DESTDIR ?= PREFIX = /usr @@ -16,74 +18,104 @@ BINDIR = $(PREFIX)/bin DATADIR = $(PREFIX)/share MANDIR = $(DATADIR)/man MAN1DIR = $(MANDIR)/man1 +INCLUDEDIR ?= $(PREFIX)/include +GENTOO_LIBDIR ?= lib +LIBDIR ?= $(PREFIX)/$(GENTOO_LIBDIR) INSTALL_PROGRAM ?= $(INSTALL) -c -m 755 INSTALL_MAN ?= $(INSTALL) -c -m 444 -.PHONY: all test clean +.PHONY: all test clean install all: $(BINARIES) -test: unittests +test: bsdiff_unittest clean: - rm -f *.o $(BINARIES) unittests - -BSDIFF_LIBS = -lbz2 -ldivsufsort -ldivsufsort64 -BSDIFF_OBJS = \ - bsdiff.o - -BSPATCH_LIBS = -lbz2 -BSPATCH_OBJS = \ - bspatch.o \ - buffer_file.o \ - extents.o \ - extents_file.o \ - file.o \ - memory_file.o \ - sink_file.o + rm -f *.o $(BINARIES) bsdiff_unittest + +### List of source files for each project. Keep in sync with the Android.mk. +# "bsdiff" program. +bsdiff_src_files := \ + bsdiff.cc + +# "bspatch" program. +bspatch_src_files := \ + bspatch.cc \ + buffer_file.cc \ + extents.cc \ + extents_file.cc \ + file.cc \ + memory_file.cc \ + sink_file.cc + +# Unit test files. +bsdiff_common_unittests := \ + bsdiff_unittest.cc \ + bspatch_unittest.cc \ + extents_file_unittest.cc \ + extents_unittest.cc \ + test_utils.cc \ + testrunner.cc + + +BSDIFF_LIBS := -lbz2 -ldivsufsort -ldivsufsort64 +BSDIFF_OBJS := $(bsdiff_src_files:.cc=.o) + +BSPATCH_LIBS := -lbz2 +BSPATCH_OBJS := $(bspatch_src_files:.cc=.o) UNITTEST_LIBS = -lgmock -lgtest -lpthread -UNITTEST_OBJS = \ - bsdiff_unittest.o \ - bspatch_unittest.o \ - extents_file_unittest.o \ - extents_unittest.o \ - test_utils.o \ - testrunner.o +UNITTEST_OBJS := $(bsdiff_common_unittests:.cc=.o) bsdiff: $(BSDIFF_OBJS) bsdiff_main.o bsdiff: LDLIBS += $(BSDIFF_LIBS) +libbsdiff.so: $(BSDIFF_OBJS) +libbsdiff.so: LDLIBS += $(BSDIFF_LIBS) bspatch: $(BSPATCH_OBJS) bspatch_main.o bspatch: LDLIBS += $(BSPATCH_LIBS) +libbspatch.so: $(BSPATCH_OBJS) +libbspatch.so: LDLIBS += $(BSPATCH_LIBS) + +bsdiff_unittest: LDLIBS += $(BSDIFF_LIBS) $(BSPATCH_LIBS) $(UNITTEST_LIBS) +bsdiff_unittest: $(BSPATCH_OBJS) $(BSDIFF_OBJS) $(UNITTEST_OBJS) -unittests: LDLIBS += $(BSDIFF_LIBS) $(BSPATCH_LIBS) $(UNITTEST_LIBS) -unittests: $(BSPATCH_OBJS) $(BSDIFF_OBJS) $(UNITTEST_OBJS) +bsdiff_unittest bsdiff bspatch: + $(CXX) $(CXXFLAGS) -o $@ $^ $(LDLIBS) -unittests bsdiff bspatch: - $(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $@ $^ $(LDLIBS) +libbsdiff.so libbspatch.so: + $(CXX) $(CXXFLAGS) $(LDFLAGS) -Wl,-soname,$@ -shared -o $@ $^ $(LDLIBS) # Source file dependencies. -bsdiff.o: bsdiff.cc -bsdiff_main.o: bsdiff_main.cc bsdiff.h -bsdiff_unittest.o: bsdiff_unittest.cc bsdiff.h test_utils.h -bspatch.o: bspatch.cc bspatch.h extents.h extents_file.h file_interface.h \ - file.h -bspatch_main.o: bspatch_main.cc bspatch.h -bspatch_unittest.o: bspatch_unittest.cc bspatch.h test_utils.h -buffer_file.o: buffer_file.cc buffer_file.h file_interface.h bspatch.h -extents.o: extents.cc extents.h extents_file.h file_interface.h -extents_file.o: extents_file.cc extents_file.h file_interface.h -extents_file_unittest.o: extents_file_unittest.cc extents_file.h \ - file_interface.h -extents_unittest.o: extents_unittest.cc extents.h extents_file.h \ - file_interface.h -file.o: file.cc file.h file_interface.h -memory_file.o: memory_file.cc memory_file.h file_interface.h -sink_file.o: sink_file.cc sink_file.h file_interface.h -testrunner.o: testrunner.cc +bspatch.o: bspatch.cc include/bsdiff/bspatch.h \ + include/bsdiff/extents_file.h include/bsdiff/file_interface.h \ + buffer_file.h extents.h file.h memory_file.h sink_file.h +bspatch_main.o: bspatch_main.cc include/bsdiff/bspatch.h \ + include/bsdiff/extents_file.h include/bsdiff/file_interface.h +bspatch_unittest.o: bspatch_unittest.cc include/bsdiff/bspatch.h \ + include/bsdiff/extents_file.h include/bsdiff/file_interface.h \ + test_utils.h +buffer_file.o: buffer_file.cc buffer_file.h \ + include/bsdiff/file_interface.h include/bsdiff/bspatch.h \ + include/bsdiff/extents_file.h +extents.o: extents.cc extents.h include/bsdiff/extents_file.h \ + include/bsdiff/file_interface.h +extents_file.o: extents_file.cc include/bsdiff/extents_file.h \ + include/bsdiff/file_interface.h +extents_file_unittest.o: extents_file_unittest.cc \ + include/bsdiff/extents_file.h include/bsdiff/file_interface.h +extents_unittest.o: extents_unittest.cc extents.h \ + include/bsdiff/extents_file.h include/bsdiff/file_interface.h +file.o: file.cc file.h include/bsdiff/file_interface.h +memory_file.o: memory_file.cc memory_file.h \ + include/bsdiff/file_interface.h +sink_file.o: sink_file.cc sink_file.h include/bsdiff/file_interface.h +testrunner.o: testrunner.cc test_utils.h test_utils.o: test_utils.cc test_utils.h install: - mkdir -p $(DESTDIR)$(BINDIR) $(DESTDIR)$(MAN1DIR) - $(INSTALL_PROGRAM) $(BINARIES) $(DESTDIR)$(BINDIR) + mkdir -p $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(MAN1DIR) \ + $(DESTDIR)/$(INCLUDEDIR)/bsdiff + $(INSTALL_PROGRAM) $(EXECUTABLES-y) $(DESTDIR)$(BINDIR) + $(INSTALL_PROGRAM) $(LIBRARIES-y) $(DESTDIR)$(LIBDIR) + $(INSTALL) -c -m 644 include/bsdiff/*.h $(DESTDIR)/$(INCLUDEDIR)/bsdiff ifndef WITHOUT_MAN - $(INSTALL_MAN) $(BINARIES:=.1) $(DESTDIR)$(MAN1DIR) + $(INSTALL_MAN) $(EXECUTABLES-y:=.1) $(DESTDIR)$(MAN1DIR) endif @@ -28,7 +28,7 @@ __FBSDID("$FreeBSD: src/usr.bin/bsdiff/bsdiff/bsdiff.c,v 1.1 2005/08/06 01:59:05 cperciva Exp $"); #endif -#include "bsdiff.h" +#include "bsdiff/bsdiff.h" #include <sys/types.h> diff --git a/bsdiff_main.cc b/bsdiff_main.cc index db3026c..678da35 100644 --- a/bsdiff_main.cc +++ b/bsdiff_main.cc @@ -4,7 +4,7 @@ #include <err.h> -#include "bsdiff.h" +#include "bsdiff/bsdiff.h" int main(int argc, char* argv[]) { if (argc != 4) diff --git a/bsdiff_unittest.cc b/bsdiff_unittest.cc index b3aae3e..7b5657d 100644 --- a/bsdiff_unittest.cc +++ b/bsdiff_unittest.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "bsdiff.h" +#include "bsdiff/bsdiff.h" #include <gtest/gtest.h> #include <string> @@ -28,7 +28,7 @@ __FBSDID("$FreeBSD: src/usr.bin/bsdiff/bspatch/bspatch.c,v 1.1 2005/08/06 01:59:06 cperciva Exp $"); #endif -#include "bspatch.h" +#include "bsdiff/bspatch.h" #include <bzlib.h> #include <errno.h> @@ -45,11 +45,11 @@ __FBSDID("$FreeBSD: src/usr.bin/bsdiff/bspatch/bspatch.c,v 1.1 2005/08/06 01:59: #include <limits> #include <vector> +#include "bsdiff/extents_file.h" +#include "bsdiff/file_interface.h" #include "buffer_file.h" #include "extents.h" -#include "extents_file.h" #include "file.h" -#include "file_interface.h" #include "memory_file.h" #include "sink_file.h" diff --git a/bspatch_main.cc b/bspatch_main.cc index 51ceebd..2a71a1c 100644 --- a/bspatch_main.cc +++ b/bspatch_main.cc @@ -5,7 +5,7 @@ #include <err.h> #include <stdlib.h> -#include "bspatch.h" +#include "bsdiff/bspatch.h" #define USAGE_TEMPLATE_STR \ "usage: %s oldfile newfile patchfile [old-extents new-extents]\n" \ diff --git a/bspatch_unittest.cc b/bspatch_unittest.cc index 04ec666..2a4589d 100644 --- a/bspatch_unittest.cc +++ b/bspatch_unittest.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "bspatch.h" +#include "bsdiff/bspatch.h" #include <unistd.h> diff --git a/buffer_file.cc b/buffer_file.cc index 1e1c213..01dd6d2 100644 --- a/buffer_file.cc +++ b/buffer_file.cc @@ -4,7 +4,7 @@ #include "buffer_file.h" -#include "bspatch.h" +#include "bsdiff/bspatch.h" namespace bsdiff { diff --git a/buffer_file.h b/buffer_file.h index 514225b..0b9261c 100644 --- a/buffer_file.h +++ b/buffer_file.h @@ -8,7 +8,7 @@ #include <memory> #include <vector> -#include "file_interface.h" +#include "bsdiff/file_interface.h" namespace bsdiff { @@ -7,7 +7,7 @@ #include <vector> -#include "extents_file.h" +#include "bsdiff/extents_file.h" namespace bsdiff { diff --git a/extents_file.cc b/extents_file.cc index 01d31a6..7e2242f 100644 --- a/extents_file.cc +++ b/extents_file.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "extents_file.h" +#include "bsdiff/extents_file.h" #include <string.h> diff --git a/extents_file_unittest.cc b/extents_file_unittest.cc index 73cedb2..0bac750 100644 --- a/extents_file_unittest.cc +++ b/extents_file_unittest.cc @@ -2,14 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "extents_file.h" +#include "bsdiff/extents_file.h" #include <gtest/gtest.h> #include <gmock/gmock.h> #include <string> #include <vector> -#include "file_interface.h" +#include "bsdiff/file_interface.h" using std::string; using std::vector; @@ -7,7 +7,7 @@ #include <memory> -#include "file_interface.h" +#include "bsdiff/file_interface.h" namespace bsdiff { diff --git a/bsdiff.h b/include/bsdiff/bsdiff.h index 7791777..7791777 100644 --- a/bsdiff.h +++ b/include/bsdiff/bsdiff.h diff --git a/bspatch.h b/include/bsdiff/bspatch.h index 834715b..63efea8 100644 --- a/bspatch.h +++ b/include/bsdiff/bspatch.h @@ -9,7 +9,7 @@ #include <memory> #include <vector> -#include "extents_file.h" +#include "bsdiff/extents_file.h" namespace bsdiff { diff --git a/extents_file.h b/include/bsdiff/extents_file.h index 865e2a2..0745ed5 100644 --- a/extents_file.h +++ b/include/bsdiff/extents_file.h @@ -10,7 +10,7 @@ #include <memory> #include <vector> -#include "file_interface.h" +#include "bsdiff/file_interface.h" /* * Extent files. diff --git a/file_interface.h b/include/bsdiff/file_interface.h index a643f45..a643f45 100644 --- a/file_interface.h +++ b/include/bsdiff/file_interface.h diff --git a/memory_file.h b/memory_file.h index 2833649..4100fd6 100644 --- a/memory_file.h +++ b/memory_file.h @@ -7,7 +7,7 @@ #include <memory> -#include "file_interface.h" +#include "bsdiff/file_interface.h" namespace bsdiff { diff --git a/sink_file.h b/sink_file.h index b2ce33f..e2c69d8 100644 --- a/sink_file.h +++ b/sink_file.h @@ -9,7 +9,7 @@ #include <functional> -#include "file_interface.h" +#include "bsdiff/file_interface.h" using sink_func = std::function<size_t(const uint8_t*, size_t)>; |