From d0e169ea9cee1e0d6eb944fa8f0f4c3fa01168a9 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Mon, 21 Apr 2025 08:09:53 +0200 Subject: [PATCH] [chromaprint] Fix pkgconfig exports (#45133) --- ports/chromaprint/pkgconfig-cxx-linkage.diff | 21 +++++++++ ports/chromaprint/pkgconfig-dependencies.diff | 46 +++++++++++++++++++ ports/chromaprint/portfile.cmake | 8 ++++ ports/chromaprint/vcpkg.json | 11 ++++- versions/baseline.json | 2 +- versions/c-/chromaprint.json | 5 ++ 6 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 ports/chromaprint/pkgconfig-cxx-linkage.diff create mode 100644 ports/chromaprint/pkgconfig-dependencies.diff diff --git a/ports/chromaprint/pkgconfig-cxx-linkage.diff b/ports/chromaprint/pkgconfig-cxx-linkage.diff new file mode 100644 index 0000000000..6b997a5c01 --- /dev/null +++ b/ports/chromaprint/pkgconfig-cxx-linkage.diff @@ -0,0 +1,21 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index eae99d4..141bfe1 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -197,6 +197,16 @@ else() + endif() + + if(NOT BUILD_FRAMEWORK) ++ foreach(lib IN LISTS CMAKE_CXX_IMPLICIT_LINK_LIBRARIES) ++ if(lib IN_LIST CMAKE_C_IMPLICIT_LINK_LIBRARIES) ++ continue() ++ elseif(EXISTS "${lib}") ++ string(APPEND PC_LIBS_PRIVATE " ${CMAKE_LINK_LIBRARY_FILE_FLAG}${lib}") ++ else() ++ string(APPEND PC_LIBS_PRIVATE " ${CMAKE_LINK_LIBRARY_FLAG}${lib}") ++ endif() ++ endforeach() ++ + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libchromaprint.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/libchromaprint.pc) + install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/libchromaprint.pc diff --git a/ports/chromaprint/pkgconfig-dependencies.diff b/ports/chromaprint/pkgconfig-dependencies.diff new file mode 100644 index 0000000000..f5f007e88a --- /dev/null +++ b/ports/chromaprint/pkgconfig-dependencies.diff @@ -0,0 +1,46 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index eae99d4..141bfe1 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -20,6 +20,9 @@ include(CheckFunctionExists) + include(CheckSymbolExists) + include(CheckCXXCompilerFlag) + ++set(PC_LIBS_PRIVATE "") ++set(PC_REQUIRES_PRIVATE "") ++ + find_package(Threads) + + option(BUILD_SHARED_LIBS "Build shared libraries" ON) +@@ -111,8 +114,10 @@ set(USE_KISSFFT OFF) + if(NOT FFT_LIB) + if(APPLE AND ACCELERATE_LIBRARIES) + set(FFT_LIB "vdsp") ++ string(APPEND PC_LIBS_PRIVATE " -framework Accelerate") + elseif(FFMPEG_LIBAVCODEC_FFT_FOUND) + set(FFT_LIB "avfft") ++ string(APPEND PC_REQUIRES_PRIVATE " libavcodec") + elseif(FFTW3_LIBRARIES) + set(FFT_LIB "fftw3") + elseif(FFTW3_FFTWF_LIBRARY) +@@ -172,6 +177,7 @@ if(AUDIO_PROCESSOR_LIB STREQUAL "swresample") + set(USE_SWRESAMPLE ON) + set(AUDIO_PROCESSOR_LIBRARIES ${FFMPEG_LIBSWRESAMPLE_LIBRARIES}) + set(AUDIO_PROCESSOR_INCLUDE_DIRS ${FFMPEG_LIBSWRESAMPLE_INCLUDE_DIRS}) ++ string(APPEND PC_REQUIRES_PRIVATE " libswresample") + else() + message(FATAL_ERROR "Selected ${AUDIO_PROCESSOR_LIB} for audio processing, but the library is not found") + endif() +diff --git a/libchromaprint.pc.cmake b/libchromaprint.pc.cmake +index 3799329..64123dc 100644 +--- a/libchromaprint.pc.cmake ++++ b/libchromaprint.pc.cmake +@@ -7,6 +7,8 @@ Name: ${PROJECT_NAME} + Description: Audio fingerprint library + URL: http://acoustid.org/chromaprint + Version: ${PROJECT_VERSION} ++Requires.private: ${PC_REQUIRES_PRIVATE} + Libs: -L${LIB_INSTALL_DIR} -lchromaprint ++Libs.private: ${PC_LIBS_PRIVATE} + Cflags: -I${INCLUDE_INSTALL_DIR} + diff --git a/ports/chromaprint/portfile.cmake b/ports/chromaprint/portfile.cmake index 681693fc87..5cb871ce04 100644 --- a/ports/chromaprint/portfile.cmake +++ b/ports/chromaprint/portfile.cmake @@ -4,7 +4,11 @@ vcpkg_from_github( REF "v${VERSION}" SHA512 ea16e4d2b879c15b1d9b9ec93878da8b893f1834c70942663e1d2d106c2e0a661094fe2dd3bae7a6c2a1f9d5d8fab5e0b0ba493561090cf57b2228606fad1e66 HEAD_REF master + PATCHES + pkgconfig-dependencies.diff + pkgconfig-cxx-linkage.diff ) +file(REMOVE_RECURSE "${SOURCE_PATH}/src/3rdparty") vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" @@ -14,5 +18,9 @@ vcpkg_cmake_configure( vcpkg_cmake_install() vcpkg_fixup_pkgconfig() +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/chromaprint.h" "ifdef CHROMAPRINT_NODLL" "if 1") +endif() + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.md") diff --git a/ports/chromaprint/vcpkg.json b/ports/chromaprint/vcpkg.json index 56d01d0ee3..d6ad119615 100644 --- a/ports/chromaprint/vcpkg.json +++ b/ports/chromaprint/vcpkg.json @@ -1,12 +1,21 @@ { "name": "chromaprint", "version": "1.5.1", + "port-version": 1, "description": "C library for generating audio fingerprints used by AcoustID", "homepage": "https://github.com/acoustid/chromaprint", "license": "LGPL-2.1-or-later", "supports": "!xbox", "dependencies": [ - "ffmpeg", + { + "name": "ffmpeg", + "default-features": false, + "features": [ + "avcodec", + "avformat", + "swresample" + ] + }, { "name": "vcpkg-cmake", "host": true diff --git a/versions/baseline.json b/versions/baseline.json index 5f8df64c66..563723cedf 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -1662,7 +1662,7 @@ }, "chromaprint": { "baseline": "1.5.1", - "port-version": 0 + "port-version": 1 }, "chromium-base": { "baseline": "86.0.4199.1", diff --git a/versions/c-/chromaprint.json b/versions/c-/chromaprint.json index 4d02a2d38b..c2308db7b5 100644 --- a/versions/c-/chromaprint.json +++ b/versions/c-/chromaprint.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "7757884ac6885475efb0036e54085fca9d8f681a", + "version": "1.5.1", + "port-version": 1 + }, { "git-tree": "a33e3947df39a3ac4e7d434f7f3890d0bf80cf39", "version": "1.5.1",