mirror of
https://github.com/microsoft/vcpkg.git
synced 2025-06-07 19:12:46 +08:00
[cppwinrt] port rewrite to use cppwint.exe tool from NuGet Gallery (#24967)
* [cppwinrt] rewrote port to leverage cppwinrt.exe tool from nuget.org * Reformat * Update baseline * Update ports/cppwinrt/portfile.cmake Co-authored-by: Robert Schumacher <roschuma@microsoft.com> * Update ports/cppwinrt/CMakeLists.txt.in Co-authored-by: Robert Schumacher <roschuma@microsoft.com> * Update ports/cppwinrt/portfile.cmake Co-authored-by: Robert Schumacher <roschuma@microsoft.com> * Update ports/cppwinrt/portfile.cmake Co-authored-by: Robert Schumacher <roschuma@microsoft.com> * Update ports/cppwinrt/CMakeLists.txt.in Co-authored-by: Robert Schumacher <roschuma@microsoft.com> * Update ports/cppwinrt/CMakeLists.txt.in Co-authored-by: Robert Schumacher <roschuma@microsoft.com> * Update ports/cppwinrt/CppWinRT-config.cmake.in Co-authored-by: Robert Schumacher <roschuma@microsoft.com> * Simplifed CMakeLists.txt * Update baseline * Fix build break * Update baseline * Still need SDK version scanning fallback for ADO pipelines * Refresh baseline * Additional code review * Update baseline * Don't need a config-version file for a VCPKG only CMake * Baseline update * [cppwinrt] Simplify port * Update ports/cppwinrt/vcpkg.json Co-authored-by: LilyWangLL <94091114+LilyWangLL@users.noreply.github.com> * Update baseline Co-authored-by: Robert Schumacher <roschuma@microsoft.com> Co-authored-by: LilyWangLL <94091114+LilyWangLL@users.noreply.github.com>
This commit is contained in:
parent
bdd6cccda6
commit
904a51f8e5
14
ports/cppwinrt/cppwinrt-config.cmake
Normal file
14
ports/cppwinrt/cppwinrt-config.cmake
Normal file
@ -0,0 +1,14 @@
|
||||
set(CppWinRT_FOUND TRUE)
|
||||
|
||||
if(NOT TARGET Microsoft::CppWinRT)
|
||||
get_filename_component(cppwinrt_root "${CMAKE_CURRENT_LIST_DIR}" PATH)
|
||||
get_filename_component(cppwinrt_root "${cppwinrt_root}" PATH)
|
||||
|
||||
add_library(Microsoft::CppWinRT INTERFACE IMPORTED)
|
||||
set_target_properties(Microsoft::CppWinRT PROPERTIES
|
||||
INTERFACE_COMPILE_FEATURES cxx_std_17
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${cppwinrt_root}/include"
|
||||
INTERFACE_LINK_LIBRARIES "${cppwinrt_root}/lib/cppwinrt_fast_forwarder.lib"
|
||||
)
|
||||
unset(cppwinrt_root)
|
||||
endif()
|
@ -1,10 +1,70 @@
|
||||
find_path(CPPWINRT_BASE_H
|
||||
NAMES winrt/base.h
|
||||
PATHS $ENV{INCLUDE}
|
||||
set(CPPWINRT_VERSION 2.0.220418.1)
|
||||
|
||||
vcpkg_download_distfile(ARCHIVE
|
||||
URLS "https://www.nuget.org/api/v2/package/Microsoft.Windows.CppWinRT/${CPPWINRT_VERSION}"
|
||||
FILENAME "cppwinrt.${CPPWINRT_VERSION}.zip"
|
||||
SHA512 67738587f7b1ca98a7c2c2c0733dd09612deb5ef6bcfa788ca0bcccbbfde2c706a675316085a41e79ab2c8796a0dd3bdba87d5c996dc0b6f76b438b5d75d2567
|
||||
)
|
||||
|
||||
if(NOT CPPWINRT_BASE_H)
|
||||
message(FATAL_ERROR "Unable to locate cppwinrt. Please install Windows SDK version 10.0.17134.0 or newer.")
|
||||
vcpkg_extract_source_archive_ex(
|
||||
OUT_SOURCE_PATH src
|
||||
ARCHIVE ${ARCHIVE}
|
||||
NO_REMOVE_ONE_LEVEL
|
||||
)
|
||||
|
||||
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
|
||||
set(CPPWINRT_ARCH win32)
|
||||
else()
|
||||
set(CPPWINRT_ARCH ${VCPKG_TARGET_ARCHITECTURE})
|
||||
endif()
|
||||
|
||||
SET(VCPKG_POLICY_EMPTY_PACKAGE enabled)
|
||||
set(CPPWINRT_TOOL "${src}/bin/cppwinrt.exe")
|
||||
|
||||
#--- Find Windows SDK Version
|
||||
if (NOT EXISTS "$ENV{WindowsSDKDir}/Lib/$ENV{WindowsSDKVersion}.")
|
||||
message(FATAL_ERROR "ERROR: Cannot locate the Windows SDK. Please define %WindowsSDKDir% and %WindowsSDKVersion%.
|
||||
(Expected file to exist: $ENV{WindowsSDKDir}/Lib/$ENV{WindowsSDKVersion})")
|
||||
endif()
|
||||
if (NOT EXISTS "$ENV{WindowsSDKDir}References/$ENV{WindowsSDKVersion}Windows.Foundation.FoundationContract")
|
||||
message(FATAL_ERROR "ERROR: The Windows SDK is too old (needs 14393 or later, found $ENV{WindowsSDKVersion}).")
|
||||
endif()
|
||||
|
||||
file(TO_CMAKE_PATH "$ENV{WindowsSDKDir}References/$ENV{WindowsSDKVersion}" winsdk)
|
||||
|
||||
file(GLOB winmds "${winsdk}/*/*/*.winmd")
|
||||
|
||||
#--- Create response file
|
||||
set(args "")
|
||||
foreach(winmd IN LISTS winmds)
|
||||
string(APPEND args "-input \"${winmd}\"\n")
|
||||
endforeach()
|
||||
|
||||
file(REMOVE_RECURSE "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}")
|
||||
file(MAKE_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}")
|
||||
file(WRITE "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}/cppwinrt.rsp" "${args}")
|
||||
|
||||
#--- Generate headers
|
||||
message(STATUS "Generating headers for Windows SDK $ENV{WindowsSDKVersion}")
|
||||
vcpkg_execute_required_process(
|
||||
COMMAND "${CPPWINRT_TOOL}"
|
||||
"@${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}/cppwinrt.rsp"
|
||||
-output "${CURRENT_PACKAGES_DIR}/include"
|
||||
-verbose
|
||||
WORKING_DIRECTORY "${CURRENT_PACKAGES_DIR}"
|
||||
LOGNAME "cppwinrt-generate-${TARGET_TRIPLET}"
|
||||
)
|
||||
|
||||
set(CPPWINRT_LIB "${src}/build/native/lib/${CPPWINRT_ARCH}/cppwinrt_fast_forwarder.lib")
|
||||
file(COPY "${CPPWINRT_LIB}" DESTINATION "${CURRENT_PACKAGES_DIR}/lib")
|
||||
if(NOT VCPKG_BUILD_TYPE)
|
||||
file(COPY "${CPPWINRT_LIB}" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib")
|
||||
endif()
|
||||
file(COPY
|
||||
"${CPPWINRT_TOOL}"
|
||||
DESTINATION "${CURRENT_PACKAGES_DIR}/tools/cppwinrt")
|
||||
file(COPY
|
||||
"${CMAKE_CURRENT_LIST_DIR}/cppwinrt-config.cmake"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/usage"
|
||||
DESTINATION "${CURRENT_PACKAGES_DIR}/share/cppwinrt")
|
||||
|
||||
configure_file("${src}/LICENSE" "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" COPYONLY)
|
||||
|
4
ports/cppwinrt/usage
Normal file
4
ports/cppwinrt/usage
Normal file
@ -0,0 +1,4 @@
|
||||
cppwinrt provides CMake targets:
|
||||
|
||||
find_package(cppwinrt CONFIG REQUIRED)
|
||||
target_link_libraries(main PRIVATE Microsoft::CppWinRT)
|
@ -1,7 +1,9 @@
|
||||
{
|
||||
"name": "cppwinrt",
|
||||
"version-string": "windows-sdk",
|
||||
"version": "2.0.220418.1",
|
||||
"description": "C++/WinRT is a standard C++ language projection for the Windows Runtime.",
|
||||
"homepage": "https://github.com/Microsoft/cppwinrt",
|
||||
"homepage": "https://github.com/microsoft/cppwinrt",
|
||||
"documentation": "https://docs.microsoft.com/windows/uwp/cpp-and-winrt-apis/",
|
||||
"license": "MIT",
|
||||
"supports": "windows"
|
||||
}
|
||||
|
@ -1649,7 +1649,7 @@
|
||||
"port-version": 2
|
||||
},
|
||||
"cppwinrt": {
|
||||
"baseline": "windows-sdk",
|
||||
"baseline": "2.0.220418.1",
|
||||
"port-version": 0
|
||||
},
|
||||
"cppxaml": {
|
||||
|
@ -1,5 +1,10 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"git-tree": "18d6860cc0a36639fe348d27ab4cb763dfc0e879",
|
||||
"version": "2.0.220418.1",
|
||||
"port-version": 0
|
||||
},
|
||||
{
|
||||
"git-tree": "191643fbd9c127658cf1724216a3b393951bd68e",
|
||||
"version-string": "windows-sdk",
|
||||
|
Loading…
Reference in New Issue
Block a user