From d6b4d40abe4dc52327f8291a55d87930f4eaab69 Mon Sep 17 00:00:00 2001 From: Chuck Walbourn Date: Fri, 14 Nov 2025 13:03:52 -0800 Subject: [PATCH] [gameinput] Update for GameInput v3 (#48275) --- ports/gameinput/CMakeLists.txt.in | 15 +++++++ ports/gameinput/gameinput-config.cmake.in | 2 +- ports/gameinput/portfile.cmake | 50 ++++++++++++++++------- ports/gameinput/vcpkg.json | 14 ++++++- versions/baseline.json | 2 +- versions/g-/gameinput.json | 5 +++ 6 files changed, 69 insertions(+), 19 deletions(-) create mode 100644 ports/gameinput/CMakeLists.txt.in diff --git a/ports/gameinput/CMakeLists.txt.in b/ports/gameinput/CMakeLists.txt.in new file mode 100644 index 0000000000..39a6826310 --- /dev/null +++ b/ports/gameinput/CMakeLists.txt.in @@ -0,0 +1,15 @@ +cmake_minimum_required (VERSION 3.21) +project(GameInput LANGUAGES CXX) + +add_library(${PROJECT_NAME} STATIC GameInput.cpp) + +if(WIN32) + target_compile_definitions(${PROJECT_NAME} PRIVATE _UNICODE UNICODE _WIN32_WINNT=0x0A00) +endif() + +include(GNUInstallDirs) + +install(TARGETS ${PROJECT_NAME} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) diff --git a/ports/gameinput/gameinput-config.cmake.in b/ports/gameinput/gameinput-config.cmake.in index 96a0a9cd13..821eae837d 100644 --- a/ports/gameinput/gameinput-config.cmake.in +++ b/ports/gameinput/gameinput-config.cmake.in @@ -1,7 +1,7 @@ get_filename_component(_gameinput_root "${CMAKE_CURRENT_LIST_DIR}" PATH) get_filename_component(_gameinput_root "${_gameinput_root}" PATH) -set(_gameinput_root_lib "${_gameinput_root}/lib/gameinput.lib") +set(_gameinput_root_lib "${_gameinput_root}/lib/@LIB_NAME@") add_library(Microsoft::GameInput INTERFACE IMPORTED) set_target_properties(Microsoft::GameInput PROPERTIES diff --git a/ports/gameinput/portfile.cmake b/ports/gameinput/portfile.cmake index 0633f69997..39bd8af4fc 100644 --- a/ports/gameinput/portfile.cmake +++ b/ports/gameinput/portfile.cmake @@ -1,18 +1,21 @@ if(VCPKG_TARGET_IS_XBOX) + cmake_path(SET GameDKXboxLatest "$ENV{GameDKXboxLatest}") cmake_path(SET GRDKLatest "$ENV{GRDKLatest}") cmake_path(SET GXDKLatest "$ENV{GXDKLatest}") find_file(GAMEINPUT_H NAMES GameInput.h - PATHS "${GRDKLatest}/gameKit/Include" + PATHS "${GameDKXboxLatest}/xbox/include" + "${GRDKLatest}/gameKit/Include" "${GXDKLatest}/gameKit/Include" NO_DEFAULT_PATH ) find_library(GAMEINPUT_LIB NAMES GameInput.lib - PATHS "${GRDKLatest}/gameKit/Lib/amd64" + PATHS "${GameDKXboxLatest}/xbox/lib/x64" + "${GRDKLatest}/gameKit/Lib/amd64" "${GXDKLatest}/gameKit/Lib/amd64" NO_DEFAULT_PATH ) @@ -22,14 +25,14 @@ if(VCPKG_TARGET_IS_XBOX) endif() # Output user-friendly status message for installed edition. - if(${GXDKLatest} MATCHES ".*/([0-9][0-9])([0-9][0-9])([0-9][0-9])/.*") - set(_months "null" "January" "February" "March" "April" "May" "June" "July" "August" "September" "October" "November" "December") - list(GET _months ${CMAKE_MATCH_2} month) - set(update "") - if(${CMAKE_MATCH_3} GREATER 0) - set(update " Update ${CMAKE_MATCH_3}") - endif() - message(STATUS "Found the Microsoft GDK with Xbox Extensions (${month} 20${CMAKE_MATCH_1}${update})") + if(${GAMEINPUT_H} MATCHES ".*/([0-9][0-9])([0-9][0-9])([0-9][0-9])/.*") + set(_months "null" "January" "February" "March" "April" "May" "June" "July" "August" "September" "October" "November" "December") + list(GET _months ${CMAKE_MATCH_2} month) + set(update "") + if(${CMAKE_MATCH_3} GREATER 0) + set(update " Update ${CMAKE_MATCH_3}") + endif() + message(STATUS "Found the Microsoft GDK with Xbox Extensions (${month} 20${CMAKE_MATCH_1}${update})") endif() file(INSTALL ${GAMEINPUT_H} DESTINATION "${CURRENT_PACKAGES_DIR}/include") @@ -43,7 +46,7 @@ else() vcpkg_download_distfile(ARCHIVE URLS "https://www.nuget.org/api/v2/package/Microsoft.GameInput/${VERSION}" FILENAME "gameinput.${VERSION}.zip" - SHA512 144cff0bfe9ba9e66d3641bdaed5cf8445bcfe52e83c7c160c111b983545f5346304821200acefe3aed0913ab14f3a9a17f7da1f67b6f75e36bad259f1b312c5 + SHA512 7377a8cf9291318b99db4f94b6e2db6d8bd2a5afdac0b35bd38b3f51c75948a247e74dab155f2ba67d4ece78899e87c3e0e35510f1547bbc9b7c8202573a8ff6 ) vcpkg_extract_source_archive( @@ -53,17 +56,34 @@ else() ) file(INSTALL "${PACKAGE_PATH}/native/include/gameinput.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include") - file(INSTALL "${PACKAGE_PATH}/native/lib/${VCPKG_TARGET_ARCHITECTURE}/gameinput.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/lib") - file(INSTALL "${PACKAGE_PATH}/native/lib/${VCPKG_TARGET_ARCHITECTURE}/gameinput.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib") - file(INSTALL "${PACKAGE_PATH}/redist/GameInputRedist.msi" DESTINATION "${CURRENT_PACKAGES_DIR}/tools") vcpkg_install_copyright(FILE_LIST "${PACKAGE_PATH}/LICENSE.txt") + if(VCPKG_TARGET_IS_MINGW) + # "Thick" GameInput.lib is not compatible with MinGW + + file(COPY "${PACKAGE_PATH}/native/lib/x64/GameInput.cpp" DESTINATION "${CURRENT_BUILDTREES_DIR}/fixlib") + + configure_file("${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt.in" + "${CURRENT_BUILDTREES_DIR}/fixlib/CMakeLists.txt" + COPYONLY) + + vcpkg_cmake_configure(SOURCE_PATH "${CURRENT_BUILDTREES_DIR}/fixlib") + + vcpkg_cmake_install() + + set(LIB_NAME "libGameInput.a") + else() + file(INSTALL "${PACKAGE_PATH}/native/lib/${VCPKG_TARGET_ARCHITECTURE}/gameinput.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/lib") + file(INSTALL "${PACKAGE_PATH}/native/lib/${VCPKG_TARGET_ARCHITECTURE}/gameinput.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib") + set(LIB_NAME "gameinput.lib") + endif() + endif() configure_file("${CMAKE_CURRENT_LIST_DIR}/gameinput-config.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/${PORT}-config.cmake" - COPYONLY) + @ONLY) file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") diff --git a/ports/gameinput/vcpkg.json b/ports/gameinput/vcpkg.json index 4e8857f3ea..a9599ae198 100644 --- a/ports/gameinput/vcpkg.json +++ b/ports/gameinput/vcpkg.json @@ -1,8 +1,18 @@ { "name": "gameinput", - "version": "2.2.26100.6114", + "version": "3.1.26100.6879", "description": "GameInput", "homepage": "https://aka.ms/gameinput", "license": null, - "supports": "windows & x64 & !uwp" + "supports": "windows & x64 & !uwp", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] } diff --git a/versions/baseline.json b/versions/baseline.json index e23793d2f2..a3459846c7 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -3181,7 +3181,7 @@ "port-version": 0 }, "gameinput": { - "baseline": "2.2.26100.6114", + "baseline": "3.1.26100.6879", "port-version": 0 }, "gamenetworkingsockets": { diff --git a/versions/g-/gameinput.json b/versions/g-/gameinput.json index 7a937efafd..88616b8cd6 100644 --- a/versions/g-/gameinput.json +++ b/versions/g-/gameinput.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "e7eca0e7d1866ac7c18a817bec8e1b8df92ab5da", + "version": "3.1.26100.6879", + "port-version": 0 + }, { "git-tree": "9d4a382441b215a535cf212671e87daa224782bb", "version": "2.2.26100.6114",