From 074562226f6f25ea3fa3acadf4cd02161cc1c875 Mon Sep 17 00:00:00 2001 From: Andreas Hindborg Date: Tue, 30 Nov 2021 15:11:29 -0800 Subject: [PATCH] Allow plugins to add pkg-config dependencies to rocksdb.pc (#9198) Summary: This patch fixes an issue that occur when dependencies of plugins are not installed to the same prefix as librocksdb. Because plugin dependencies are declared in the `Libs` field of rocksdb.pc, programs that link against librocksdb with `pkg-config --libs rocksdb` will link with `-L` flag for the path of librocksdb only. This patch allows plugin dependencies to be declared in the `Requires` field of rocksdb.pc, so that pkg-config will correctly provide `-L` flags for dependencies of plugins that are installed in other locations. Pull Request resolved: https://github.com/facebook/rocksdb/pull/9198 Reviewed By: akankshamahajan15 Differential Revision: D32596620 Pulled By: ajkr fbshipit-source-id: e17b2b6452b5f2e955b430140197c57e26a4a518 --- Makefile | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Makefile b/Makefile index ab5abc2aa..ac4f4f343 100644 --- a/Makefile +++ b/Makefile @@ -249,8 +249,20 @@ ROCKSDB_PLUGIN_MKS = $(foreach plugin, $(ROCKSDB_PLUGINS), plugin/$(plugin)/*.mk include $(ROCKSDB_PLUGIN_MKS) ROCKSDB_PLUGIN_SOURCES = $(foreach plugin, $(ROCKSDB_PLUGINS), $(foreach source, $($(plugin)_SOURCES), plugin/$(plugin)/$(source))) ROCKSDB_PLUGIN_HEADERS = $(foreach plugin, $(ROCKSDB_PLUGINS), $(foreach header, $($(plugin)_HEADERS), plugin/$(plugin)/$(header))) +ROCKSDB_PLUGIN_PKGCONFIG_REQUIRES = $(foreach plugin, $(ROCKSDB_PLUGINS), $($(plugin)_PKGCONFIG_REQUIRES)) PLATFORM_LDFLAGS += $(foreach plugin, $(ROCKSDB_PLUGINS), $($(plugin)_LDFLAGS)) +ifneq ($(ROCKSDB_PLUGIN_PKGCONFIG_REQUIRES),) +LDFLAGS := $(LDFLAGS) $(shell pkg-config --libs $(ROCKSDB_PLUGIN_PKGCONFIG_REQUIRES)) +ifneq ($(.SHELLSTATUS),0) +$(error pkg-config failed) +endif +CXXFLAGS := $(CXXFLAGS) $(shell pkg-config --cflags $(ROCKSDB_PLUGIN_PKGCONFIG_REQUIRES)) +ifneq ($(.SHELLSTATUS),0) +$(error pkg-config failed) +endif +endif + export JAVAC_ARGS CLEAN_FILES += make_config.mk rocksdb.pc @@ -2011,6 +2023,7 @@ gen-pc: -echo 'Libs: -L$${libdir} $(EXEC_LDFLAGS) -lrocksdb' >> rocksdb.pc -echo 'Libs.private: $(PLATFORM_LDFLAGS)' >> rocksdb.pc -echo 'Cflags: -I$${includedir} $(PLATFORM_CXXFLAGS)' >> rocksdb.pc + -echo 'Requires: $(subst ",,$(ROCKSDB_PLUGIN_PKGCONFIG_REQUIRES))' >> rocksdb.pc #-------------------------------------------------