Created
March 17, 2020 23:37
-
-
Save FlorianFranzen/7718d3891f15bca90706156b41c54988 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/cmake/functions.cmake b/cmake/functions.cmake | |
index 778eb16..cc25e6f 100644 | |
--- a/cmake/functions.cmake | |
+++ b/cmake/functions.cmake | |
@@ -44,74 +44,33 @@ function(add_flag flag) | |
endif () | |
endfunction() | |
-function(compile_proto_to_cpp PROTO_LIBRARY_NAME PB_H PB_CC PROTO) | |
- get_target_property(Protobuf_INCLUDE_DIR protobuf::libprotobuf INTERFACE_INCLUDE_DIRECTORIES) | |
- get_target_property(Protobuf_PROTOC_EXECUTABLE protobuf::protoc IMPORTED_LOCATION_RELEASE) | |
- | |
- if (NOT Protobuf_PROTOC_EXECUTABLE) | |
- message(FATAL_ERROR "Protobuf_PROTOC_EXECUTABLE is empty") | |
- endif () | |
- if (NOT Protobuf_INCLUDE_DIR) | |
- message(FATAL_ERROR "Protobuf_INCLUDE_DIR is empty") | |
- endif () | |
- | |
- get_filename_component(PROTO_ABS "${PROTO}" REALPATH) | |
- # get relative (to CMAKE_BINARY_DIR) path of current proto file | |
- file(RELATIVE_PATH SCHEMA_REL "${CMAKE_BINARY_DIR}/src" "${CMAKE_CURRENT_BINARY_DIR}") | |
- | |
- set(SCHEMA_OUT_DIR ${CMAKE_BINARY_DIR}/pb/${PROTO_LIBRARY_NAME}/generated) | |
- file(MAKE_DIRECTORY ${SCHEMA_OUT_DIR}) | |
- | |
- string(REGEX REPLACE "\\.proto$" ".pb.h" GEN_PB_HEADER ${PROTO}) | |
- string(REGEX REPLACE "\\.proto$" ".pb.cc" GEN_PB ${PROTO}) | |
- | |
- set(GEN_COMMAND ${Protobuf_PROTOC_EXECUTABLE}) | |
- set(GEN_ARGS ${Protobuf_INCLUDE_DIR}) | |
+# Collect all generated targets | |
+add_custom_target(generated | |
+ COMMENT "Building generated files..." | |
+) | |
- set(OUT_HPP ${SCHEMA_OUT_DIR}/${SCHEMA_REL}/${GEN_PB_HEADER}) | |
- set(OUT_CPP ${SCHEMA_OUT_DIR}/${SCHEMA_REL}/${GEN_PB}) | |
+# Reset import dirs before first run TODO: Reset to "${PROJECT_SOURCE_DIR}/src"? | |
+set(Protobuf_IMPORT_DIRS "" CACHE INTERNAL "List of all protobuf import directories") | |
- set(GENERATION_DIR ${SCHEMA_OUT_DIR}/${SCHEMA_REL}) | |
+macro(add_proto_library NAME) | |
+ find_package(Protobuf REQUIRED) | |
- add_custom_command( | |
- OUTPUT ${OUT_HPP} ${OUT_CPP} | |
- COMMAND ${GEN_COMMAND} | |
- ARGS -I${PROJECT_SOURCE_DIR}/src -I${GEN_ARGS} --cpp_out=${SCHEMA_OUT_DIR} ${PROTO_ABS} | |
- WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
- DEPENDS protobuf::protoc | |
- VERBATIM | |
+ set(Protobuf_IMPORT_DIRS "${Protobuf_IMPORT_DIRS}\;${CMAKE_CURRENT_SOURCE_DIR}" | |
+ CACHE INTERNAL "List of all protobuf import directories" | |
) | |
- set(${PB_H} ${SCHEMA_OUT_DIR}/${SCHEMA_REL}/${GEN_PB_HEADER} PARENT_SCOPE) | |
- set(${PB_CC} ${SCHEMA_OUT_DIR}/${SCHEMA_REL}/${GEN_PB} PARENT_SCOPE) | |
-endfunction() | |
+ protobuf_generate_cpp(SOURCES HEADERS ${ARGN}) | |
-add_custom_target(generated | |
- COMMENT "Building generated files..." | |
- ) | |
+ add_library(${NAME} ${SOURCES} ${HEADERS}) | |
+ target_link_libraries(${NAME} protobuf::libprotobuf) | |
-function(add_proto_library NAME) | |
- set(SOURCES "") | |
- foreach (PROTO IN ITEMS ${ARGN}) | |
- compile_proto_to_cpp(${NAME} H C ${PROTO}) | |
- list(APPEND SOURCES ${H} ${C}) | |
- endforeach () | |
- | |
- add_library(${NAME} | |
- ${SOURCES} | |
- ) | |
- target_link_libraries(${NAME} | |
- protobuf::libprotobuf | |
- ) | |
target_include_directories(${NAME} PUBLIC | |
- # required for common targets | |
- $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/pb/${NAME}> | |
- # required for compiling proto targets | |
- $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/pb/${NAME}/generated> | |
- ) | |
+ $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/src> | |
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}> | |
+ ) | |
disable_clang_tidy(${NAME}) | |
libp2p_install(${NAME}) | |
add_dependencies(generated ${NAME}) | |
-endfunction() | |
+endmacro() | |
diff --git a/src/crypto/key_marshaller/key_marshaller_impl.cpp b/src/crypto/key_marshaller/key_marshaller_impl.cpp | |
index 99d6543..1282aef 100644 | |
--- a/src/crypto/key_marshaller/key_marshaller_impl.cpp | |
+++ b/src/crypto/key_marshaller/key_marshaller_impl.cpp | |
@@ -5,7 +5,7 @@ | |
#include <libp2p/crypto/key_marshaller/key_marshaller_impl.hpp> | |
-#include <generated/crypto/protobuf/keys.pb.h> | |
+#include <crypto/protobuf/keys.pb.h> | |
#include <libp2p/crypto/common.hpp> | |
#include <libp2p/crypto/crypto_provider.hpp> | |
diff --git a/src/protocol/gossip/impl/message_builder.cpp b/src/protocol/gossip/impl/message_builder.cpp | |
index 0d6d337..58ceaff 100644 | |
--- a/src/protocol/gossip/impl/message_builder.cpp | |
+++ b/src/protocol/gossip/impl/message_builder.cpp | |
@@ -7,7 +7,7 @@ | |
#include <libp2p/multi/uvarint.hpp> | |
-#include <generated/protocol/gossip/protobuf/rpc.pb.h> | |
+#include <protocol/gossip/protobuf/rpc.pb.h> | |
namespace libp2p::protocol::gossip { | |
diff --git a/src/protocol/gossip/impl/message_parser.cpp b/src/protocol/gossip/impl/message_parser.cpp | |
index 871c251..162d749 100644 | |
--- a/src/protocol/gossip/impl/message_parser.cpp | |
+++ b/src/protocol/gossip/impl/message_parser.cpp | |
@@ -7,7 +7,7 @@ | |
#include <libp2p/protocol/gossip/impl/message_receiver.hpp> | |
-#include <generated/protocol/gossip/protobuf/rpc.pb.h> | |
+#include <protocol/gossip/protobuf/rpc.pb.h> | |
namespace libp2p::protocol::gossip { | |
diff --git a/src/protocol/identify/identify_delta.cpp b/src/protocol/identify/identify_delta.cpp | |
index 2976629..d93cbc7 100644 | |
--- a/src/protocol/identify/identify_delta.cpp | |
+++ b/src/protocol/identify/identify_delta.cpp | |
@@ -10,7 +10,7 @@ | |
#include <libp2p/basic/protobuf_message_read_writer.hpp> | |
#include <libp2p/protocol/identify/utils.hpp> | |
-#include <generated/protocol/identify/protobuf/identify.pb.h> | |
+#include <protocol/identify/protobuf/identify.pb.h> | |
namespace { | |
const std::string kIdentifyDeltaProtocol = "/p2p/id/delta/1.0.0"; | |
diff --git a/src/protocol/identify/identify_msg_processor.cpp b/src/protocol/identify/identify_msg_processor.cpp | |
index d434e59..a4ade42 100644 | |
--- a/src/protocol/identify/identify_msg_processor.cpp | |
+++ b/src/protocol/identify/identify_msg_processor.cpp | |
@@ -12,7 +12,7 @@ | |
#include <libp2p/network/network.hpp> | |
#include <libp2p/peer/address_repository.hpp> | |
#include <libp2p/protocol/identify/utils.hpp> | |
-#include <generated/protocol/identify/protobuf/identify.pb.h> | |
+#include <protocol/identify/protobuf/identify.pb.h> | |
namespace libp2p::protocol { | |
IdentifyMessageProcessor::IdentifyMessageProcessor( | |
diff --git a/src/protocol/kademlia/impl/kad_message.cpp b/src/protocol/kademlia/impl/kad_message.cpp | |
index 626fca8..baba40d 100644 | |
--- a/src/protocol/kademlia/impl/kad_message.cpp | |
+++ b/src/protocol/kademlia/impl/kad_message.cpp | |
@@ -6,7 +6,7 @@ | |
#include <libp2p/multi/uvarint.hpp> | |
#include <libp2p/protocol/kademlia/impl/kad_message.hpp> | |
-#include <generated/protocol/kademlia/protobuf/kad.pb.h> | |
+#include <protocol/kademlia/protobuf/kad.pb.h> | |
namespace libp2p::protocol::kademlia { | |
diff --git a/src/security/plaintext/exchange_message_marshaller_impl.cpp b/src/security/plaintext/exchange_message_marshaller_impl.cpp | |
index 7ca75c3..bae433e 100644 | |
--- a/src/security/plaintext/exchange_message_marshaller_impl.cpp | |
+++ b/src/security/plaintext/exchange_message_marshaller_impl.cpp | |
@@ -5,7 +5,7 @@ | |
#include <libp2p/security/plaintext/exchange_message_marshaller_impl.hpp> | |
-#include <generated/security/plaintext/protobuf/plaintext.pb.h> | |
+#include <security/plaintext/protobuf/plaintext.pb.h> | |
OUTCOME_CPP_DEFINE_CATEGORY(libp2p::security::plaintext, | |
ExchangeMessageMarshallerImpl::Error, e) { | |
diff --git a/src/security/plaintext/plaintext.cpp b/src/security/plaintext/plaintext.cpp | |
index a78ffd9..969f165 100644 | |
--- a/src/security/plaintext/plaintext.cpp | |
+++ b/src/security/plaintext/plaintext.cpp | |
@@ -7,7 +7,7 @@ | |
#include <functional> | |
-#include <generated/security/plaintext/protobuf/plaintext.pb.h> | |
+#include <security/p! | |
laintext/protobuf/plaintext.pb.h> | |
#include <libp2p/basic/protobuf_message_read_writer.hpp> | |
#include <libp2p/peer/peer_id.hpp> | |
#include <libp2p/security/error.hpp> | |
diff --git a/src/security/plaintext/protobuf/plaintext.proto b/src/security/plaintext/protobuf/plaintext.proto | |
index 7f62ecf..da24f42 100644 | |
--- a/src/security/plaintext/protobuf/plaintext.proto | |
+++ b/src/security/plaintext/protobuf/plaintext.proto | |
@@ -1,6 +1,6 @@ | |
syntax = "proto2"; | |
-import "crypto/protobuf/keys.proto"; | |
+import "keys.proto"; | |
package libp2p.security.plaintext.protobuf; | |
diff --git a/src/security/secio/exchange_message_marshaller_impl.cpp b/src/security/secio/exchange_message_marshaller_impl.cpp | |
index dbdc1db..99a89f6 100644 | |
--- a/src/security/secio/exchange_message_marshaller_impl.cpp | |
+++ b/src/security/secio/exchange_message_marshaller_impl.cpp | |
@@ -5,7 +5,7 @@ | |
#include <libp2p/security/secio/exchange_message_marshaller_impl.hpp> | |
-#include <generated/security/secio/protobuf/secio.pb.h> | |
+#include <security/se! | |
cio/protobuf/secio.pb.h> | |
OUTCOME_CPP_DEFINE_CATEGORY(libp2p::security::secio, | |
ExchangeMessageMarshallerImpl::Error, e) { | |
diff --git a/src/security/secio/propose_message_marshaller_impl.cpp b/src/security/secio/propose_message_marshaller_impl.cpp | |
index 03c9450..84157fc 100644 | |
--- a/src/security/secio/propose_message_marshaller_impl.cpp | |
+++ b/src/security/secio/propose_message_marshaller_impl.cpp | |
@@ -5,7 +5,7 @@ | |
#include <libp2p/security/secio/propose_message_marshaller_impl.hpp> | |
! | |
-#include <generated/security/secio/protobuf/secio.pb.h> | |
+#include <security/secio/protobuf/secio.pb.h> | |
OUTCOME_CPP_DEFINE_CATEGORY(libp2p::security::secio, | |
ProposeMessageMarshallerImpl::Error, e) { | |
diff --git a/src/security/secio/secio.cpp b/src/security/secio/secio.cpp | |
index cd0e2b6..0223197 100644 | |
--- a/src/security/secio/secio.cpp | |
+++ b/src/security/secio/secio.cpp | |
@@ -5,7 +5,7 @@ | |
#include <libp2p/security/secio/secio.hpp> | |
-#include <generated/security/secio/protobuf/secio.pb.h> | |
+#include <security/secio/protobuf/secio.pb.h> | |
#include <libp2p/basic/protobuf_message_read_writer.hpp> | |
#include <libp2p/crypto/sha/sha256.hpp> | |
#include <libp2p/security/error.hpp> | |
diff --git a/src/security/secio/secio_dialer.cpp b/src/security/secio/secio_dialer.cpp | |
index 58e640a..e1969a8 100644 | |
--- a/src/security/secio/secio_dialer.cpp | |
+++ b/src/security/secio/secio_dialer.cpp | |
@@ -5,7 +5,7 @@ | |
#include <libp2p/security/secio/secio_dialer.hpp> | |
-#include <generated/security/secio/protobuf/secio.pb.h> | |
+#include <security/secio/protobuf/secio.pb.h> | |
#include <libp2p/basic/message_read_writer_bigendian.hpp> | |
#include <libp2p/basic/protobuf_message_read_writer.hpp> | |
#include <libp2p/crypto/sha/sha256.hpp> | |
diff --git a/test/libp2p/protocol/identify_delta_test.cpp b/test/libp2p/protocol/identify_delta_test.cpp | |
index 98d1d01..e7dfafa 100644 | |
--- a/test/libp2p/protocol/identify_delta_test.cpp | |
+++ b/test/libp2p/protocol/identify_delta_test.cpp | |
@@ -5,7 +5,7 @@ | |
#include <libp2p/protocol/identify/identify_delta.hpp> | |
-#include <generated/p! | |
rotocol/identify/protobuf/identify.pb.h> | |
+#include <protocol/identify/protobuf/identify.pb.h> | |
#include <gtest/gtest.h>! | |
#include <libp2p/common/literals.hpp> | |
#include <libp2p/multi/uvarint.hpp> | |
diff --git a/test/libp2p/protocol/identify_test.cpp b/test/libp2p/protocol/identify_test.cpp | |
index 8bf60d8..1279d5b 100644 | |
--- a/test/libp2p/protocol/identify_test.cpp | |
+++ b/test/libp2p/protocol/identify_test.cpp | |
@@ -7,7 +7,7 @@ | |
#include <vector> | |
-#include <generated/protocol/identify/protobuf/identify.pb.h> | |
+#include <protocol/identify/protobuf/identify.pb.h> | |
#include <gtest/gtest.h> | |
#include <libp2p/common/literals.hpp> | |
#include <libp2p/multi/uvarint.hpp> | |
diff --git a/test/libp2p/security/plaintext_exchange_message_marshaller_test.cpp b/test/libp2p/security/plaintext_exchange_message_marshaller_test.cpp | |
index 1febe8d..f5a49f7 100644 | |
--- a/test/libp2p/security/plaintext_exchange_message_marshaller_test.cpp | |
+++ b/test/libp2p/security/plaintext_exchange_message_marshaller_test.cpp | |
@@ -5,7 +5,7 @@ | |
#include <gtest/gtest.h> | |
-#include <generated/security/plaintext/protobuf/plaintext.pb.h> | |
+#include <security/plaintext/protobuf/plaintext.pb.h> | |
#include <libp2p/crypto/key.hpp> | |
#include <libp2p/peer/peer_id.hpp> | |
#include <libp2p/security/plaintext/exchange_message_marshaller_impl.hpp> | |
diff --git a/test/mock/libp2p/security/exchange_message_marshaller_mock.hpp b/test/mock/libp2p/security/exchange_message_marshaller_mock.hpp | |
index 68909bd..0d7b905 100644 | |
--- a/test/mock/libp2p/security/exchange_message_marshaller_mock.hpp | |
+++ b/test/mock/libp2p/security/exchange_message_marshaller_mock.hpp | |
@@ -6,7 +6,7 @@ | |
#ifndef LIBP2P_EXCHANGE_MESSAGE_MARSHALLER_MOCK_HPP | |
#define LIBP2P_EXCHANG! | |
E_MESSAGE_MARSHALLER_MOCK_HPP | |
-#include <generated/security/plaintext/protobuf/plaintext.pb.h> | |
+#include <security/plaintext/protobuf/plaintext.pb.h> | |
#include <gmock/gmock.h> | |
#include "libp2p/security/plaintext/exchange_message.hpp" | |
#include "libp2p/security/plaintext/exchange_message_marshaller.hpp" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment