mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-30 02:31:44 +00:00
[build] Fix CMake protobuf dependency handling (#6772)
Reverts #6609 since that fix didn't Just Work(tm) on Windows. (edit: or Ubuntu. Seems to have broken everything except macOS.) This PR configures CMake to try and find protobuf-config.cmake first, which allows protobuf to pull in abseil for us. If protobuf-config.cmake is not available (coprocessors which don't have a new enough protobuf installed are a common case), it will fallback to CMake's built-in FindProtobuf module, which is what we were using before. Add wpi::CreateMessage, a wrapper with an ifdef to switch between Arena::CreateMessage and Arena::Create, since the former is deprecated in newer versions of protobuf. This allows forward compatibility with newer versions of protobuf.
This commit is contained in:
18
wpiutil/src/main/native/include/wpi/ProtoHelper.h
Normal file
18
wpiutil/src/main/native/include/wpi/ProtoHelper.h
Normal file
@@ -0,0 +1,18 @@
|
||||
// Copyright (c) FIRST and other WPILib contributors.
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <google/protobuf/message.h>
|
||||
|
||||
namespace wpi {
|
||||
template <typename T>
|
||||
inline T* CreateMessage(google::protobuf::Arena* arena) {
|
||||
#if GOOGLE_PROTOBUF_VERSION < 4000000
|
||||
return google::protobuf::Arena::CreateMessage<T>(arena);
|
||||
#else
|
||||
return google::protobuf::Arena::Create<T>(arena);
|
||||
#endif
|
||||
}
|
||||
} // namespace wpi
|
||||
Reference in New Issue
Block a user