diff --git a/ports/stackwalker/fix-build.patch b/ports/stackwalker/fix-build.patch new file mode 100644 index 00000000000000..9193a26055ee9a --- /dev/null +++ b/ports/stackwalker/fix-build.patch @@ -0,0 +1,23 @@ +diff --git "a/Main/StackWalker/StackWalker.h" "b/Main/StackWalker/StackWalker.h" +index 67eb90575..e906dbc26 100644 +--- "a/Main/StackWalker/StackWalker.h" ++++ "b/Main/StackWalker/StackWalker.h" +@@ -229,13 +229,11 @@ protected: + { \ + memset(&c, 0, sizeof(CONTEXT)); \ + c.ContextFlags = contextFlags; \ +- __asm { \ +- call x \ +- x: pop eax \ +- mov c.Eip, eax \ +- mov c.Ebp, ebp \ +- mov c.Esp, esp \ +- }; \ ++ __asm call x \ ++ __asm x: pop eax \ ++ __asm mov c.Eip, eax \ ++ __asm mov c.Ebp, ebp \ ++ __asm mov c.Esp, esp \ + } while (0); + // clang-format on + #endif diff --git a/ports/stackwalker/fix-exports.patch b/ports/stackwalker/fix-exports.patch new file mode 100644 index 00000000000000..3ff79bda4f3ae5 --- /dev/null +++ b/ports/stackwalker/fix-exports.patch @@ -0,0 +1,28 @@ +diff --git "a/CMakeLists.txt" "b/CMakeLists.txt" +index 82f0206a2..8160fd789 100644 +--- "a/CMakeLists.txt" ++++ "b/CMakeLists.txt" +@@ -79,12 +79,13 @@ add_library(${TARGET_StackWalker} STATIC + Main/StackWalker/StackWalker.cpp) + target_include_directories(${TARGET_StackWalker} PUBLIC + $ ++ $ + ) + +-install(TARGETS "${TARGET_StackWalker}" +- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} +- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ++install(TARGETS "${TARGET_StackWalker}" EXPORT stackwalker-config ++ ARCHIVE DESTINATION lib ++ LIBRARY DESTINATION lib ++ RUNTIME DESTINATION bin + ) + + install(FILES "${CMAKE_SOURCE_DIR}/Main/StackWalker/StackWalker.h" +@@ -114,3 +115,5 @@ else() + + add_test(NAME ${TARGET_StackWalker_tests} COMMAND ${TARGET_StackWalker_tests}) + endif() ++ ++install(EXPORT stackwalker-config NAMESPACE unofficial::stackwalker:: DESTINATION share/stackwalker) diff --git a/ports/stackwalker/portfile.cmake b/ports/stackwalker/portfile.cmake new file mode 100644 index 00000000000000..32978dd89b4e9f --- /dev/null +++ b/ports/stackwalker/portfile.cmake @@ -0,0 +1,29 @@ +vcpkg_check_linkage(ONLY_STATIC_LIBRARY) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO JochenKalmbach/StackWalker + REF "${VERSION}" + SHA512 ce4004f114400ff66e25d7403c52ed4798a0e94d529335995df525f37d4238c750c8b1ee5801f71bd7128d39baa9af18e546a49da8587976720df6e9b372b851 + HEAD_REF master + PATCHES + fix-build.patch + fix-exports.patch +) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + ${options} + -DStackWalker_DISABLE_TESTS=OFF +) + +vcpkg_cmake_install() + +vcpkg_copy_pdbs() + +vcpkg_cmake_config_fixup() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/ports/stackwalker/vcpkg.json b/ports/stackwalker/vcpkg.json new file mode 100644 index 00000000000000..f88d23da9ea4a6 --- /dev/null +++ b/ports/stackwalker/vcpkg.json @@ -0,0 +1,17 @@ +{ + "name": "stackwalker", + "version": "1.20", + "description": "StackWalker - Walking the callstack.", + "license": "BSD-2-Clause", + "supports": "windows & !arm & !uwp", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} diff --git a/versions/baseline.json b/versions/baseline.json index 2c087332280ae0..187398cdbdab8d 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -7616,6 +7616,10 @@ "baseline": "1.5.1", "port-version": 1 }, + "stackwalker": { + "baseline": "1.20", + "port-version": 0 + }, "starlink-ast": { "baseline": "9.2.7", "port-version": 2 diff --git a/versions/s-/stackwalker.json b/versions/s-/stackwalker.json new file mode 100644 index 00000000000000..ceddeccbfa14f0 --- /dev/null +++ b/versions/s-/stackwalker.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "8cc3f001440d05d7247fb7e04c58a99002ed0054", + "version": "1.20", + "port-version": 0 + } + ] +}