Support MacOS 12 & 13. Support Protobuf 23. Deprecate MacOS 11. (#4884)

This commit is contained in:
Zach H 2023-10-13 14:45:22 -04:00 committed by GitHub
parent dd1b354d48
commit ee674cb0cf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 50 additions and 46 deletions

View file

@ -215,21 +215,21 @@ jobs:
do_tests: 1 do_tests: 1
make_package: 1 make_package: 1
- target: 11_Big_Sur - target: 12_Monterey
os: macos-11 os: macos-12
xcode: 12.5.1 xcode: 13.3
qt_version: homebrew qt_version: homebrew
type: Release type: Release
do_tests: 1 do_tests: 1
make_package: 1 make_package: 1
# - target: 12_Monterey - target: 13_Ventura
# os: macos-12 os: macos-13
# xcode: 13.3 xcode: 14.3.1
# qt_version: homebrew qt_version: homebrew
# type: Release type: Release
# do_tests: 1 do_tests: 1
# make_package: 1 make_package: 0
name: macOS ${{matrix.target}} name: macOS ${{matrix.target}}
needs: configure needs: configure
@ -251,8 +251,8 @@ jobs:
install_qt: ${{matrix.qt_version}} install_qt: ${{matrix.qt_version}}
run: | run: |
brew update brew update
brew install protobuf@21 brew install protobuf
brew link --force protobuf@21 brew link --force protobuf
if [[ $install_qt == homebrew ]]; then if [[ $install_qt == homebrew ]]; then
brew install qt --force-bottle brew install qt --force-bottle
else # for some reason the tests fail with the action installed qt? else # for some reason the tests fail with the action installed qt?

View file

@ -216,11 +216,13 @@ include(FindQtRuntime)
set(CMAKE_AUTOMOC TRUE) set(CMAKE_AUTOMOC TRUE)
# Find other needed libraries # Find other needed libraries
find_package(Protobuf REQUIRED) find_package(Protobuf CONFIG)
if(NOT EXISTS "${Protobuf_PROTOC_EXECUTABLE}") if(NOT Protobuf_FOUND)
find_package(Protobuf REQUIRED)
endif()
if(${Protobuf_VERSION} VERSION_LESS "3.21.0.0" AND NOT EXISTS "${Protobuf_PROTOC_EXECUTABLE}")
message(FATAL_ERROR "No protoc command found!") message(FATAL_ERROR "No protoc command found!")
else()
message(STATUS "Found Protobuf ${Protobuf_VERSION} at: ${Protobuf_LIBRARIES}")
endif() endif()
#Find OpenSSL #Find OpenSSL
@ -228,7 +230,6 @@ if(WIN32)
find_package(OpenSSL REQUIRED) find_package(OpenSSL REQUIRED)
if(OPENSSL_FOUND) if(OPENSSL_FOUND)
include_directories(${OPENSSL_INCLUDE_DIRS}) include_directories(${OPENSSL_INCLUDE_DIRS})
message(STATUS "Using OpenSSL ${OPENSSL_VERSION}")
else() else()
message( message(
WARNING WARNING

View file

@ -8,15 +8,6 @@
#include <google/protobuf/message.h> #include <google/protobuf/message.h>
#include <google/protobuf/text_format.h> #include <google/protobuf/text_format.h>
// google/protobuf/stubs/strutil.h is missing on some systems!
namespace google
{
namespace protobuf
{
std::string CEscape(const std::string &src);
} // namespace protobuf
} // namespace google
// FastFieldValuePrinter is added in protobuf 3.4, going out of our way to add the old FieldValuePrinter is not worth it // FastFieldValuePrinter is added in protobuf 3.4, going out of our way to add the old FieldValuePrinter is not worth it
#if GOOGLE_PROTOBUF_VERSION > 3004000 #if GOOGLE_PROTOBUF_VERSION > 3004000
@ -44,8 +35,8 @@ void LimitedPrinter::PrintString(const std::string &val,
{ {
auto length = val.length(); auto length = val.length();
if (length > MAX_TEXT_LENGTH) { if (length > MAX_TEXT_LENGTH) {
generator->PrintString("\"" + ::google::protobuf::CEscape(val.substr(0, MAX_NAME_LENGTH)) + "... ---snip--- (" + ::google::protobuf::TextFormat::FastFieldValuePrinter::PrintString(
std::to_string(length) + " bytes total) \""); val.substr(0, MAX_NAME_LENGTH) + "... ---snip--- (" + std::to_string(length) + " bytes total", generator);
} else { } else {
::google::protobuf::TextFormat::FastFieldValuePrinter::PrintString(val, generator); ::google::protobuf::TextFormat::FastFieldValuePrinter::PrintString(val, generator);
} }

View file

@ -160,23 +160,35 @@ set(PROTO_FILES
session_event.proto session_event.proto
) )
include_directories(${PROTOBUF_INCLUDE_DIRS}) if(${Protobuf_VERSION} VERSION_LESS "3.21.0.0")
include_directories(${CMAKE_CURRENT_BINARY_DIR}) message(STATUS "Using Protobuf Legacy Mode")
protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS ${PROTO_FILES}) include_directories(${PROTOBUF_INCLUDE_DIRS})
include_directories(${CMAKE_CURRENT_BINARY_DIR})
protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS ${PROTO_FILES})
add_library(cockatrice_protocol ${PROTO_SRCS} ${PROTO_HDRS}) add_library(cockatrice_protocol ${PROTO_SRCS} ${PROTO_HDRS})
set(cockatrice_protocol_LIBS ${PROTOBUF_LIBRARIES}) set(cockatrice_protocol_LIBS ${PROTOBUF_LIBRARIES})
if(UNIX) if(UNIX)
set(cockatrice_protocol_LIBS ${cockatrice_protocol_LIBS} -lpthread) set(cockatrice_protocol_LIBS ${cockatrice_protocol_LIBS} -lpthread)
endif(UNIX) endif(UNIX)
target_link_libraries(cockatrice_protocol ${cockatrice_protocol_LIBS}) target_link_libraries(cockatrice_protocol ${cockatrice_protocol_LIBS})
# ubuntu uses an outdated package for protobuf, 3.1.0 is required # ubuntu uses an outdated package for protobuf, 3.1.0 is required
if(${Protobuf_VERSION} VERSION_LESS "3.1.0") if(${Protobuf_VERSION} VERSION_LESS "3.1.0")
# remove unused parameter and misleading indentation warnings when compiling to avoid errors # remove unused parameter and misleading indentation warnings when compiling to avoid errors
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wno-unused-parameter -Wno-misleading-indentation") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wno-unused-parameter -Wno-misleading-indentation")
message(WARNING "Older protobuf version found (${Protobuf_VERSION} < 3.1.0), " message(WARNING "Older protobuf version found (${Protobuf_VERSION} < 3.1.0), "
"disabled the warnings 'unused-parameter' and 'misleading-indentation' for protobuf generated code " "disabled the warnings 'unused-parameter' and 'misleading-indentation' for protobuf generated code "
"to avoid compilation errors." "to avoid compilation errors."
) )
endif()
else()
add_library(cockatrice_protocol ${PROTO_FILES})
target_link_libraries(cockatrice_protocol PUBLIC protobuf::libprotobuf)
set(PROTO_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
target_include_directories(cockatrice_protocol PUBLIC "${PROTOBUF_INCLUDE_DIRS}")
protobuf_generate(
TARGET cockatrice_protocol IMPORT_DIRS "${CMAKE_CURRENT_LIST_DIR}" PROTOC_OUT_DIR "${PROTO_BINARY_DIR}"
)
endif() endif()

2
vcpkg

@ -1 +1 @@
Subproject commit 247662ef304453c72acd6b520fa7ff7656e7347c Subproject commit 8ec31e98fb07e3f9c2e5b6aed0737a76a693fc72