From b52ffd09b2c7e46ea681dc7c3b5233af516ac2ff Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Sun, 14 May 2023 21:52:55 +0200 Subject: [PATCH] Use find_package Protobuf CONFIG --- CMakeLists.txt | 11 ++++++++--- ext/libstrawberry-tagreader/CMakeLists.txt | 17 +++++++++-------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 025a671b..5935438d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -117,9 +117,14 @@ else() find_package(Iconv) endif() find_package(GnuTLS REQUIRED) -find_package(Protobuf REQUIRED) -if(NOT Protobuf_PROTOC_EXECUTABLE) - message(FATAL_ERROR "Missing protobuf compiler.") +if(NOT APPLE) + find_package(Protobuf CONFIG) +endif() +if(NOT Protobuf_FOUND) + find_package(Protobuf REQUIRED) +endif() +if(NOT TARGET protobuf::protoc) + message(FATAL_ERROR "Missing Protobuf compiler.") endif() if(LINUX) find_package(ALSA REQUIRED) diff --git a/ext/libstrawberry-tagreader/CMakeLists.txt b/ext/libstrawberry-tagreader/CMakeLists.txt index 1baf4afb..dd6b1090 100644 --- a/ext/libstrawberry-tagreader/CMakeLists.txt +++ b/ext/libstrawberry-tagreader/CMakeLists.txt @@ -1,5 +1,14 @@ cmake_minimum_required(VERSION 3.7) +# Workaround a bug in protobuf-generate.cmake (https://github.com/protocolbuffers/protobuf/issues/12450) +if(NOT protobuf_PROTOC_EXE) + set(protobuf_PROTOC_EXE "protobuf::protoc") +endif() + +if(NOT Protobuf_LIBRARIES) + set(Protobuf_LIBRARIES protobuf::libprotobuf protobuf::libprotoc) +endif() + set(SOURCES tagreaderbase.cpp tagreadermessages.proto) if(USE_TAGLIB AND TAGLIB_FOUND) @@ -47,14 +56,6 @@ target_link_libraries(libstrawberry-tagreader PRIVATE libstrawberry-common ) -if(WIN32 AND Protobuf_VERSION VERSION_GREATER_EQUAL 4.22.0) - if (MSVC) - target_link_libraries(libstrawberry-tagreader PRIVATE abseil_dll) - else() - target_link_libraries(libstrawberry-tagreader PRIVATE absl_log_internal_message absl_log_internal_check_op) - endif() -endif() - if(USE_TAGLIB AND TAGLIB_FOUND) target_include_directories(libstrawberry-tagreader SYSTEM PRIVATE ${TAGLIB_INCLUDE_DIRS}) target_link_libraries(libstrawberry-tagreader PRIVATE ${TAGLIB_LIBRARIES})