Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ffmpeg] Use vcpkg_fixup_pkgconfig. #13919

Closed
wants to merge 9 commits into from
2 changes: 2 additions & 0 deletions ports/ffmpeg/portfile.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -495,6 +495,8 @@ endif()

vcpkg_copy_pdbs()

vcpkg_fixup_pkgconfig(IGNORE_FLAGS "-Wl,-rpath,${CURRENT_PACKAGES_DIR}/lib/pkgconfig/../../lib" "-Wl,-rpath,${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/../../lib" "-Wl,--no-undefined" "-Wl,--enable-new-dtags" "-framework AudioToolbox" "-framework VideoToolbox" "-framework CoreFoundation" "-framework CoreMedia" "-framework CoreVideo" "-framework CoreServices" "-framework Foundation" "-framework AVFoundation" "-framework CoreGraphics" "-framework OpenGL" "-framework CoreImage" "-framework AppKit" "-Wl,-framework,CoreFoundation" "-Wl,-framework,Security")

# Handle copyright
file(STRINGS ${CURRENT_BUILDTREES_DIR}/build-${TARGET_TRIPLET}-rel-out.log LICENSE_STRING REGEX "License: .*" LIMIT_COUNT 1)
if(LICENSE_STRING STREQUAL "License: LGPL version 2.1 or later")
Expand Down
2 changes: 2 additions & 0 deletions ports/libvpx/portfile.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,8 @@ else()
set(LIBVPX_CONFIG_DEBUG OFF)
endif()

vcpkg_fixup_pkgconfig()

configure_file(${CMAKE_CURRENT_LIST_DIR}/unofficial-libvpx-config.cmake.in ${CURRENT_PACKAGES_DIR}/share/unofficial-libvpx/unofficial-libvpx-config.cmake @ONLY)

file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
63 changes: 44 additions & 19 deletions scripts/cmake/vcpkg_common_definitions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -161,24 +161,49 @@ endif()

# Windows system libs
if(VCPKG_TARGET_IS_WINDOWS)
list(APPEND VCPKG_SYSTEM_LIBRARIES advapi32)
list(APPEND VCPKG_SYSTEM_LIBRARIES bcrypt)
list(APPEND VCPKG_SYSTEM_LIBRARIES dinput8)
list(APPEND VCPKG_SYSTEM_LIBRARIES gdi32)
list(APPEND VCPKG_SYSTEM_LIBRARIES imm32)
list(APPEND VCPKG_SYSTEM_LIBRARIES oleaut32)
list(APPEND VCPKG_SYSTEM_LIBRARIES ole32)
list(APPEND VCPKG_SYSTEM_LIBRARIES psapi)
list(APPEND VCPKG_SYSTEM_LIBRARIES secur32)
list(APPEND VCPKG_SYSTEM_LIBRARIES setupapi)
list(APPEND VCPKG_SYSTEM_LIBRARIES shell32)
list(APPEND VCPKG_SYSTEM_LIBRARIES shlwapi)
list(APPEND VCPKG_SYSTEM_LIBRARIES strmiids)
list(APPEND VCPKG_SYSTEM_LIBRARIES user32)
list(APPEND VCPKG_SYSTEM_LIBRARIES uuid)
list(APPEND VCPKG_SYSTEM_LIBRARIES version)
list(APPEND VCPKG_SYSTEM_LIBRARIES vfw32)
list(APPEND VCPKG_SYSTEM_LIBRARIES winmm)
list(APPEND VCPKG_SYSTEM_LIBRARIES wsock32)
list(APPEND VCPKG_SYSTEM_LIBRARIES Advapi32)
list(APPEND VCPKG_SYSTEM_LIBRARIES Bcrypt)
list(APPEND VCPKG_SYSTEM_LIBRARIES Cfgmgr32)
list(APPEND VCPKG_SYSTEM_LIBRARIES Crypt32)
list(APPEND VCPKG_SYSTEM_LIBRARIES D3d11)
list(APPEND VCPKG_SYSTEM_LIBRARIES Dinput8)
list(APPEND VCPKG_SYSTEM_LIBRARIES Dxgi)
list(APPEND VCPKG_SYSTEM_LIBRARIES Gdi32)
list(APPEND VCPKG_SYSTEM_LIBRARIES Imm32)
list(APPEND VCPKG_SYSTEM_LIBRARIES Mfplat)
list(APPEND VCPKG_SYSTEM_LIBRARIES Mfuuid)
list(APPEND VCPKG_SYSTEM_LIBRARIES Oleaut32)
list(APPEND VCPKG_SYSTEM_LIBRARIES Ole32)
list(APPEND VCPKG_SYSTEM_LIBRARIES Psapi)
list(APPEND VCPKG_SYSTEM_LIBRARIES Secur32)
list(APPEND VCPKG_SYSTEM_LIBRARIES Setupapi)
list(APPEND VCPKG_SYSTEM_LIBRARIES Shell32)
list(APPEND VCPKG_SYSTEM_LIBRARIES Shlwapi)
list(APPEND VCPKG_SYSTEM_LIBRARIES Strmiids)
list(APPEND VCPKG_SYSTEM_LIBRARIES User32)
list(APPEND VCPKG_SYSTEM_LIBRARIES Uuid)
list(APPEND VCPKG_SYSTEM_LIBRARIES Version)
list(APPEND VCPKG_SYSTEM_LIBRARIES Vfw32)
list(APPEND VCPKG_SYSTEM_LIBRARIES Winmm)
list(APPEND VCPKG_SYSTEM_LIBRARIES Wsock32)
list(APPEND VCPKG_SYSTEM_LIBRARIES Ws2_32)
endif()

#Linux system libs
if(VCPKG_TARGET_IS_LINUX OR VCPKG_TARGET_IS_FREEBSD)
list(APPEND VCPKG_SYSTEM_LIBRARIES numa)
list(APPEND VCPKG_SYSTEM_LIBRARIES va)
list(APPEND VCPKG_SYSTEM_LIBRARIES va-drm)
list(APPEND VCPKG_SYSTEM_LIBRARIES vdpau)
list(APPEND VCPKG_SYSTEM_LIBRARIES X11)
list(APPEND VCPKG_SYSTEM_LIBRARIES xcb)
list(APPEND VCPKG_SYSTEM_LIBRARIES xcb-render)
list(APPEND VCPKG_SYSTEM_LIBRARIES xcb-shape)
list(APPEND VCPKG_SYSTEM_LIBRARIES xcb-shm)
list(APPEND VCPKG_SYSTEM_LIBRARIES xcb-xfixes)
list(APPEND VCPKG_SYSTEM_LIBRARIES Xau)
list(APPEND VCPKG_SYSTEM_LIBRARIES Xdmcp)
list(APPEND VCPKG_SYSTEM_LIBRARIES ibus-1.0)
list(APPEND VCPKG_SYSTEM_LIBRARIES dbus-1)
list(APPEND VCPKG_SYSTEM_LIBRARIES sndio)
endif()
22 changes: 21 additions & 1 deletion scripts/cmake/vcpkg_fixup_pkgconfig.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,14 @@ function(vcpkg_fixup_pkgconfig)
debug_message("Using pkg-config from: ${PKGCONFIG}")

#Absolute Unix like paths
string(REGEX MATCH "([a-zA-Z]):/" _VCPKG_PACKAGES_DIR_UPPER "${CURRENT_PACKAGES_DIR}")
string(TOLOWER "${_VCPKG_PACKAGES_DIR_UPPER}" _VCPKG_PACKAGES_DIR_LOWER)
string(REGEX REPLACE "([a-zA-Z]):/" "/\\1/" _VCPKG_PACKAGES_DIR_LOWER "${_VCPKG_PACKAGES_DIR_LOWER}")
string(REPLACE "${_VCPKG_PACKAGES_DIR_UPPER}" "${_VCPKG_PACKAGES_DIR_LOWER}" _VCPKG_PACKAGES_DIR_LOWER "${CURRENT_PACKAGES_DIR}")
string(REGEX MATCH "([a-zA-Z]):/" _VCPKG_INSTALLED_DIR_UPPER "${CURRENT_INSTALLED_DIR}")
string(TOLOWER "${_VCPKG_INSTALLED_DIR_UPPER}" _VCPKG_INSTALLED_DIR_LOWER)
string(REGEX REPLACE "([a-zA-Z]):/" "/\\1/" _VCPKG_INSTALLED_DIR_LOWER "${_VCPKG_INSTALLED_DIR_LOWER}")
string(REPLACE "${_VCPKG_INSTALLED_DIR_UPPER}" "${_VCPKG_INSTALLED_DIR_LOWER}" _VCPKG_INSTALLED_DIR_LOWER "${CURRENT_INSTALLED_DIR}")
string(REGEX REPLACE "([a-zA-Z]):/" "/\\1/" _VCPKG_PACKAGES_DIR "${CURRENT_PACKAGES_DIR}")
string(REGEX REPLACE "([a-zA-Z]):/" "/\\1/" _VCPKG_INSTALLED_DIR "${CURRENT_INSTALLED_DIR}")

Expand All @@ -282,12 +290,18 @@ function(vcpkg_fixup_pkgconfig)
string(REGEX REPLACE "/$" "" RELATIVE_PC_PATH "${RELATIVE_PC_PATH}")
#Correct *.pc file
file(READ "${_file}" _contents)
string(REPLACE "/lib/pkgconfig/../../lib" "/lib" _contents "${_contents}")
string(REPLACE "/cygdrive/" "/" _contents "${_contents}")
string(REPLACE "-libpath:" "-L" _contents "${_contents}")
string(REPLACE "${CURRENT_PACKAGES_DIR}" "\${prefix}" _contents "${_contents}")
string(REPLACE "${CURRENT_INSTALLED_DIR}" "\${prefix}" _contents "${_contents}")
string(REPLACE "${_VCPKG_PACKAGES_DIR}" "\${prefix}" _contents "${_contents}")
string(REPLACE "${_VCPKG_INSTALLED_DIR}" "\${prefix}" _contents "${_contents}")
string(REPLACE "${_VCPKG_PACKAGES_DIR_LOWER}" "\${prefix}" _contents "${_contents}")
string(REPLACE "${_VCPKG_INSTALLED_DIR_LOWER}" "\${prefix}" _contents "${_contents}")
string(REGEX REPLACE "^prefix[\t ]*=[^\n]*" "" _contents "${_contents}")
string(REGEX REPLACE "[\n]prefix[\t ]*=[^\n]*" "" _contents "${_contents}")
string(REGEX REPLACE "[ \t\r\n]+(-l)?([^- \t\r\n][A-Za-z0-9_-]+)(\\.dll\\.a|\\.a|\\.lib|\\.so)" " -l\\2" _contents "${_contents}")
file(WRITE "${_file}" "prefix=\${pcfiledir}/${RELATIVE_PC_PATH}\n${_contents}")
unset(PKG_LIB_SEARCH_PATH)
endforeach()
Expand All @@ -307,18 +321,24 @@ function(vcpkg_fixup_pkgconfig)
string(REGEX REPLACE "/pkgconfig/?" "" PKG_LIB_SEARCH_PATH "${PKG_LIB_SEARCH_PATH}")
#Correct *.pc file
file(READ "${_file}" _contents)
string(REPLACE "/lib/pkgconfig/../../lib" "/lib" _contents "${_contents}")
string(REPLACE "/cygdrive/" "/" _contents "${_contents}")
string(REPLACE "-libpath:" "-L" _contents "${_contents}")
string(REPLACE "${CURRENT_PACKAGES_DIR}" "\${prefix}" _contents "${_contents}")
string(REPLACE "${CURRENT_INSTALLED_DIR}" "\${prefix}" _contents "${_contents}")
string(REPLACE "${_VCPKG_PACKAGES_DIR}" "\${prefix}" _contents "${_contents}")
string(REPLACE "${_VCPKG_INSTALLED_DIR}" "\${prefix}" _contents "${_contents}")
string(REPLACE "${_VCPKG_PACKAGES_DIR_LOWER}" "\${prefix}" _contents "${_contents}")
string(REPLACE "${_VCPKG_INSTALLED_DIR_LOWER}" "\${prefix}" _contents "${_contents}")
string(REPLACE "debug/include" "../include" _contents "${_contents}")
string(REPLACE "\${prefix}/include" "\${prefix}/../include" _contents "${_contents}")
string(REPLACE "debug/share" "../share" _contents "${_contents}")
string(REPLACE "\${prefix}/share" "\${prefix}/../share" _contents "${_contents}")
string(REPLACE "debug/lib" "lib" _contents "${_contents}") # the prefix will contain the debug keyword
string(REGEX REPLACE "^prefix[\t ]*=[^\n]*" "" _contents "${_contents}") # make pc file relocatable
string(REGEX REPLACE "[\n]prefix[\t ]*=[^\n]*" "" _contents "${_contents}") # make pc file relocatable
string(REPLACE "\${prefix}/debug" "\${prefix}" _contents "${_contents}") # replace remaining debug paths if they exist.
string(REPLACE "\${prefix}/debug" "\${prefix}" _contents "${_contents}") # replace remaining debug paths if they exist.
string(REGEX REPLACE "[ \t\r\n]+(-l)?([^- \t\r\n][A-Za-z0-9_-]+)(\\.dll\\.a|\\.a|\\.lib|\\.so)" " -l\\2" _contents "${_contents}")
file(WRITE "${_file}" "prefix=\${pcfiledir}/${RELATIVE_PC_PATH}\n${_contents}")
unset(PKG_LIB_SEARCH_PATH)
endforeach()
Expand Down