summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Deymo <deymo@google.com>2017-03-02 16:10:41 -0800
committerAlex Deymo <deymo@google.com>2017-05-03 18:29:10 -0700
commitddf9db52938e67d4dcbf7c4f159b094eaddbabeb (patch)
tree07a1e5f4ca7d47b4412bac6c443ea756276caf7d
parentb9fa8599064d10afd8c231155500f0b8e934d71f (diff)
downloadbsdiff-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.mk18
-rw-r--r--Makefile140
-rw-r--r--bsdiff.cc2
-rw-r--r--bsdiff_main.cc2
-rw-r--r--bsdiff_unittest.cc2
-rw-r--r--bspatch.cc6
-rw-r--r--bspatch_main.cc2
-rw-r--r--bspatch_unittest.cc2
-rw-r--r--buffer_file.cc2
-rw-r--r--buffer_file.h2
-rw-r--r--extents.h2
-rw-r--r--extents_file.cc2
-rw-r--r--extents_file_unittest.cc4
-rw-r--r--file.h2
-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.h2
-rw-r--r--sink_file.h2
20 files changed, 119 insertions, 77 deletions
diff --git a/Android.mk b/Android.mk
index 9116f83..ffbe164 100644
--- a/Android.mk
+++ b/Android.mk
@@ -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)
diff --git a/Makefile b/Makefile
index 4214637..3db8c60 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/bsdiff.cc b/bsdiff.cc
index cb2ca7c..854c882 100644
--- a/bsdiff.cc
+++ b/bsdiff.cc
@@ -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>
diff --git a/bspatch.cc b/bspatch.cc
index 058f9d0..c5f670a 100644
--- a/bspatch.cc
+++ b/bspatch.cc
@@ -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 {
diff --git a/extents.h b/extents.h
index de3eb27..efc6716 100644
--- a/extents.h
+++ b/extents.h
@@ -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;
diff --git a/file.h b/file.h
index ad1fd2f..959c53e 100644
--- a/file.h
+++ b/file.h
@@ -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)>;