Skip to content

Commit

Permalink
[libvpx] Add cmake config file (#11795)
Browse files Browse the repository at this point in the history
* [libvpx] Add cmake config file

This allows libvpx to be used with

find_package(libvpx CONFIG REQUIRED)
target_link_libraries(main PRIVATE libvpx::libvpx)

Tested on all supported windows triplets.

* [libvpx] Rename cmake config file to make clear it is unofficial

* [libvpx] Add cmake config target guard

* [libvpx] Update version
  • Loading branch information
mcmtroffaes authored Jun 11, 2020
1 parent 6b32f92 commit 6e67cb1
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 1 deletion.
2 changes: 1 addition & 1 deletion ports/libvpx/CONTROL
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Source: libvpx
Version: 1.8.1-4
Version: 1.8.1-5
Homepage: https://github.com/webmproject/libvpx
Description: The reference software implementation for the video coding formats VP8 and VP9.
Supports: !(uwp|arm|arm64)
7 changes: 7 additions & 0 deletions ports/libvpx/portfile.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -212,5 +212,12 @@ else()
endif()
endif()

if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
set(LIBVPX_CONFIG_DEBUG ON)
else()
set(LIBVPX_CONFIG_DEBUG OFF)
endif()
configure_file(${CMAKE_CURRENT_LIST_DIR}/unofficial-libvpx-config.cmake.in ${CURRENT_PACKAGES_DIR}/share/unofficial-libvpx/unofficial-libvpx-config.cmake @ONLY)

file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/libvpx)
file(RENAME ${CURRENT_PACKAGES_DIR}/share/libvpx/LICENSE ${CURRENT_PACKAGES_DIR}/share/libvpx/copyright)
49 changes: 49 additions & 0 deletions ports/libvpx/unofficial-libvpx-config.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
if(NOT TARGET unofficial::libvpx::libvpx)
# Compute the installation prefix relative to this file.
get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)

# Add library target (note: vpx always has a static build in vcpkg).
add_library(unofficial::libvpx::libvpx STATIC IMPORTED)

# Add interface include directories and link interface languages (applies to all configurations).
set_target_properties(unofficial::libvpx::libvpx PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
)
list(APPEND _IMPORT_CHECK_FILES "${_IMPORT_PREFIX}/include/vpx/vpx_codec.h")

# Add release configuration properties.
find_library(_LIBFILE_RELEASE NAMES vpx@LIBVPX_CRT_SUFFIX@ PATHS "${_IMPORT_PREFIX}/lib/" NO_DEFAULT_PATH)
set_property(TARGET unofficial::libvpx::libvpx
APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
set_target_properties(unofficial::libvpx::libvpx PROPERTIES
IMPORTED_LOCATION_RELEASE ${_LIBFILE_RELEASE})
list(APPEND _IMPORT_CHECK_FILES ${_LIBFILE_RELEASE})
unset(_LIBFILE_RELEASE CACHE)

# Add debug configuration properties.
if(@LIBVPX_CONFIG_DEBUG@)
find_library(_LIBFILE_DEBUG NAMES vpx@LIBVPX_CRT_SUFFIX@d PATHS "${_IMPORT_PREFIX}/debug/lib/" NO_DEFAULT_PATH)
set_property(TARGET unofficial::libvpx::libvpx
APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
set_target_properties(unofficial::libvpx::libvpx PROPERTIES
IMPORTED_LOCATION_DEBUG ${_LIBFILE_DEBUG})
list(APPEND _IMPORT_CHECK_FILES ${_LIBFILE_DEBUG})
unset(_LIBFILE_DEBUG CACHE)
endif()

# Check header and library files are present.
foreach(file ${_IMPORT_CHECK_FILES} )
if(NOT EXISTS "${file}" )
message(FATAL_ERROR "unofficial::libvpx::libvpx references the file
\"${file}\"
but this file does not exist. Possible reasons include:
* The file was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
")
endif()
endforeach()
unset(_IMPORT_CHECK_FILES)
endif()

0 comments on commit 6e67cb1

Please sign in to comment.