diff --git a/external/vcpkg-overlays/crashpad/README.md b/external/vcpkg-overlays/crashpad/README.md index 2b8960b43..eb555e7bf 100644 --- a/external/vcpkg-overlays/crashpad/README.md +++ b/external/vcpkg-overlays/crashpad/README.md @@ -1,7 +1,2 @@ -This overlay of crashpad is based on the crashpad port found in vcpkg 2025.08.27. - -The only thing it adds is a new patch applied to `mini_chromium` to fix finding VS build tools. - -Changes: -- Add patch in `fix-find-vs-build-tools.patch` -- Modify `portfile.cmake` to add `fix-find-vs-build-tools.patch` to the `PATCHES` section for the `vcpkg_from_git` checking out mini_chromium +This overlay updates crashpad to a newer version. +Ideally this should be upstreamed to the vcpkg repository. diff --git a/external/vcpkg-overlays/crashpad/fix-find-vs-build-tools.patch b/external/vcpkg-overlays/crashpad/fix-find-vs-build-tools.patch deleted file mode 100644 index e78f7a715..000000000 --- a/external/vcpkg-overlays/crashpad/fix-find-vs-build-tools.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/build/win_helper.py b/build/win_helper.py -index be977c8..829343a 100644 ---- a/build/win_helper.py -+++ b/build/win_helper.py -@@ -186,7 +186,7 @@ class WinTool(object): - 'Microsoft Visual Studio', 'Installer', 'vswhere.exe') - if os.path.exists(vswhere_path): - installation_path = subprocess.check_output( -- [vswhere_path, '-latest', '-property', 'installationPath']).strip() -+ [vswhere_path, '-products', '*', '-latest', '-property', 'installationPath']).strip() - if installation_path: - return (installation_path.decode("utf-8"), - os.path.join('VC', 'Auxiliary', 'Build', 'vcvarsall.bat')) diff --git a/external/vcpkg-overlays/crashpad/fix-lib-name-conflict-1.patch b/external/vcpkg-overlays/crashpad/fix-lib-name-conflict-1.patch index 0eaec93a4..f5248017c 100644 --- a/external/vcpkg-overlays/crashpad/fix-lib-name-conflict-1.patch +++ b/external/vcpkg-overlays/crashpad/fix-lib-name-conflict-1.patch @@ -1,12 +1,12 @@ -diff --git a/base/BUILD.gn b/base/BUILD.gn -index 0bcf519..c637f2b 100644 ---- a/base/BUILD.gn -+++ b/base/BUILD.gn -@@ -5,6 +5,7 @@ - import("../build/platform.gni") - - static_library("base") { -+ output_name = "vcpkg_crashpad_base" - sources = [ - "atomicops.h", - "atomicops_internals_atomicword_compat.h", +diff --git a/base/BUILD.gn b/base/BUILD.gn +index ba6f6e5..41eca91 100644 +--- a/base/BUILD.gn ++++ b/base/BUILD.gn +@@ -5,6 +5,7 @@ + import("../build/platform.gni") + + static_library("base") { ++ output_name = "vcpkg_crashpad_base" + sources = [ + "atomicops.h", + "atomicops_internals_atomicword_compat.h", diff --git a/external/vcpkg-overlays/crashpad/fix-lib-name-conflict.patch b/external/vcpkg-overlays/crashpad/fix-lib-name-conflict.patch index 033ff738f..2ffccdc14 100644 --- a/external/vcpkg-overlays/crashpad/fix-lib-name-conflict.patch +++ b/external/vcpkg-overlays/crashpad/fix-lib-name-conflict.patch @@ -1,5 +1,5 @@ diff --git a/client/BUILD.gn b/client/BUILD.gn -index bd150ab..5cbf469 100644 +index e57e0e0c..ac64561f 100644 --- a/client/BUILD.gn +++ b/client/BUILD.gn @@ -15,6 +15,7 @@ @@ -10,7 +10,7 @@ index bd150ab..5cbf469 100644 sources = [ "crashpad_client.h", "prune_crash_reports.cc", -@@ -114,6 +115,7 @@ crashpad_static_library("client") { +@@ -125,6 +126,7 @@ crashpad_static_library("client") { } static_library("common") { @@ -19,22 +19,22 @@ index bd150ab..5cbf469 100644 "annotation.cc", "annotation.h", diff --git a/handler/BUILD.gn b/handler/BUILD.gn -index a2d6f7f..70a997e 100644 +index 9061c2cb..5fea7566 100644 --- a/handler/BUILD.gn +++ b/handler/BUILD.gn -@@ -94,6 +94,7 @@ if (crashpad_is_android) { - } +@@ -15,6 +15,7 @@ + import("../build/crashpad_buildconfig.gni") static_library("common") { + output_name = "vcpkg_crashpad_handler_common" sources = [ - "crash_report_upload_thread.cc", - "crash_report_upload_thread.h", + "crash_report_upload_rate_limit.cc", + "crash_report_upload_rate_limit.h", diff --git a/util/BUILD.gn b/util/BUILD.gn -index e7ff4a8..9efcb41 100644 +index ca817736..20972a22 100644 --- a/util/BUILD.gn +++ b/util/BUILD.gn -@@ -167,6 +167,7 @@ if (crashpad_is_win) { +@@ -173,6 +173,7 @@ if (crashpad_is_win) { } crashpad_static_library("util") { diff --git a/external/vcpkg-overlays/crashpad/fix-linux.patch b/external/vcpkg-overlays/crashpad/fix-linux.patch deleted file mode 100644 index a24968617..000000000 --- a/external/vcpkg-overlays/crashpad/fix-linux.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/util/misc/uuid.cc b/util/misc/uuid.cc -index 3013d7b..4cc135f 100644 ---- a/util/misc/uuid.cc -+++ b/util/misc/uuid.cc -@@ -41,7 +41,8 @@ - namespace crashpad { - - static_assert(sizeof(UUID) == 16, "UUID must be 16 bytes"); --static_assert(std::is_pod::value, "UUID must be POD"); -+static_assert(std::is_standard_layout::value, "UUID must be a standard-layout type"); -+static_assert(std::is_trivial::value, "UUID must be a trivial type"); - - bool UUID::operator==(const UUID& that) const { - return memcmp(this, &that, sizeof(*this)) == 0; diff --git a/external/vcpkg-overlays/crashpad/fix-std-20.patch b/external/vcpkg-overlays/crashpad/fix-std-20.patch deleted file mode 100644 index 45e29641f..000000000 --- a/external/vcpkg-overlays/crashpad/fix-std-20.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff --git a/base/atomicops_internals_portable.h b/base/atomicops_internals_portable.h -index 2486fb7..88e2d2d 100644 ---- a/base/atomicops_internals_portable.h -+++ b/base/atomicops_internals_portable.h -@@ -51,13 +51,7 @@ static_assert(sizeof(*(AtomicLocation32) nullptr) == sizeof(Atomic32), - "incompatible 32-bit atomic layout"); - - inline void MemoryBarrier() { --#if defined(__GLIBCXX__) -- // Work around libstdc++ bug 51038 where atomic_thread_fence was declared but -- // not defined, leading to the linker complaining about undefined references. -- __atomic_thread_fence(std::memory_order_seq_cst); --#else - std::atomic_thread_fence(std::memory_order_seq_cst); --#endif - } - - inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr, diff --git a/external/vcpkg-overlays/crashpad/fix-windows-toolchain.patch b/external/vcpkg-overlays/crashpad/fix-windows-toolchain.patch new file mode 100644 index 000000000..0eca9e00e --- /dev/null +++ b/external/vcpkg-overlays/crashpad/fix-windows-toolchain.patch @@ -0,0 +1,18 @@ +diff --git a/build/compiler.gni b/build/compiler.gni +index 7e2b3ce..ddaffc8 100644 +--- a/build/compiler.gni ++++ b/build/compiler.gni +@@ -4,12 +4,4 @@ + + import("platform.gni") + +-if (mini_chromium_is_win) { +- declare_args() { +- mini_chromium_is_clang = mini_chromium_is_posix || +- mini_chromium_is_fuchsia || mini_chromium_is_win +- } +-} else { +- mini_chromium_is_clang = +- mini_chromium_is_posix || mini_chromium_is_fuchsia || mini_chromium_is_win +-} ++mini_chromium_is_clang = mini_chromium_is_posix || mini_chromium_is_fuchsia diff --git a/external/vcpkg-overlays/crashpad/portfile.cmake b/external/vcpkg-overlays/crashpad/portfile.cmake index a02941b3f..d55dffe64 100644 --- a/external/vcpkg-overlays/crashpad/portfile.cmake +++ b/external/vcpkg-overlays/crashpad/portfile.cmake @@ -1,204 +1,200 @@ -vcpkg_check_linkage(ONLY_STATIC_LIBRARY) - -vcpkg_from_git( - OUT_SOURCE_PATH SOURCE_PATH - URL https://chromium.googlesource.com/crashpad/crashpad - REF 7e0af1d4d45b526f01677e74a56f4a951b70517d - PATCHES - fix-linux.patch - fix-lib-name-conflict.patch -) - -vcpkg_find_acquire_program(PYTHON3) -x_vcpkg_get_python_packages(OUT_PYTHON_VAR PYTHON3 - PYTHON_EXECUTABLE "${PYTHON3}" - PYTHON_VERSION "3" - PACKAGES setuptools -) -vcpkg_replace_string("${SOURCE_PATH}/.gn" "script_executable = \"python3\"" "script_executable = \"${PYTHON3}\"") - -# mini_chromium contains the toolchains and build configuration -if(NOT EXISTS "${SOURCE_PATH}/third_party/mini_chromium/mini_chromium/BUILD.gn") - vcpkg_from_git(OUT_SOURCE_PATH mini_chromium - URL "https://chromium.googlesource.com/chromium/mini_chromium" - REF dce72d97d1c2e9beb5e206c6a05a702269794ca3 - PATCHES - fix-std-20.patch - ndk-toolchain.diff - fix-lib-name-conflict-1.patch - fix-find-vs-build-tools.patch - ) - file(REMOVE_RECURSE "${SOURCE_PATH}/third_party/mini_chromium/mini_chromium") - file(RENAME "${mini_chromium}" "${SOURCE_PATH}/third_party/mini_chromium/mini_chromium") -endif() - -if(NOT EXISTS "${SOURCE_PATH}/third_party/lss/lss/BUILD.gn" AND (VCPKG_TARGET_IS_ANDROID OR VCPKG_TARGET_IS_LINUX)) - vcpkg_from_git(OUT_SOURCE_PATH lss - URL https://chromium.googlesource.com/linux-syscall-support - REF 9719c1e1e676814c456b55f5f070eabad6709d31 - ) - file(REMOVE_RECURSE "${SOURCE_PATH}/third_party/lss/lss") - file(RENAME "${lss}" "${SOURCE_PATH}/third_party/lss/lss") -endif() - -function(replace_gn_dependency INPUT_FILE OUTPUT_FILE LIBRARY_NAMES) - if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") - unset(_LIBRARY_DEB CACHE) - find_library(_LIBRARY_DEB NAMES ${LIBRARY_NAMES} - PATHS "${CURRENT_INSTALLED_DIR}/debug/lib" - NO_DEFAULT_PATH) - - if(_LIBRARY_DEB MATCHES "-NOTFOUND") - message(FATAL_ERROR "Could not find debug library with names: ${LIBRARY_NAMES}") - endif() - endif() - - unset(_LIBRARY_REL CACHE) - find_library(_LIBRARY_REL NAMES ${LIBRARY_NAMES} - PATHS "${CURRENT_INSTALLED_DIR}/lib" - NO_DEFAULT_PATH) - - if(_LIBRARY_REL MATCHES "-NOTFOUND") - message(FATAL_ERROR "Could not find library with names: ${LIBRARY_NAMES}") - endif() - - if(VCPKG_BUILD_TYPE STREQUAL "release") - set(_LIBRARY_DEB ${_LIBRARY_REL}) - endif() - - set(_INCLUDE_DIR "${CURRENT_INSTALLED_DIR}/include") - - file(REMOVE "${OUTPUT_FILE}") - configure_file("${INPUT_FILE}" "${OUTPUT_FILE}" @ONLY) -endfunction() - -replace_gn_dependency( - "${CMAKE_CURRENT_LIST_DIR}/zlib.gn" - "${SOURCE_PATH}/third_party/zlib/BUILD.gn" - "z;zlib;zlibd" -) - -set(OPTIONS "target_cpu=\"${VCPKG_TARGET_ARCHITECTURE}\"") -set(OPTIONS_DBG "is_debug=true") -set(OPTIONS_REL "") - -if(VCPKG_TARGET_IS_ANDROID) - vcpkg_cmake_get_vars(cmake_vars_file) - include("${cmake_vars_file}") - string(APPEND OPTIONS " target_os=\"android\" android_ndk_root=\"${VCPKG_DETECTED_CMAKE_ANDROID_NDK}\"") - -elseif(VCPKG_TARGET_IS_LINUX) - string(APPEND OPTIONS " target_os=\"linux\"") - -elseif(VCPKG_TARGET_IS_OSX) - string(APPEND OPTIONS " target_os=\"mac\"") - -elseif(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) - string(APPEND OPTIONS " target_os=\"win\"") - - # Load toolchains - vcpkg_cmake_get_vars(cmake_vars_file) - include("${cmake_vars_file}") - - set(OPTIONS_DBG "${OPTIONS_DBG} \ - extra_cflags_c=\"${VCPKG_COMBINED_C_FLAGS_DEBUG}\" \ - extra_cflags_cc=\"${VCPKG_COMBINED_CXX_FLAGS_DEBUG}\" \ - extra_ldflags=\"${VCPKG_COMBINED_SHARED_LINKER_FLAGS_DEBUG}\" \ - extra_arflags=\"${VCPKG_COMBINED_STATIC_LINKER_FLAGS_DEBUG}\"") - - set(OPTIONS_REL "${OPTIONS_REL} \ - extra_cflags_c=\"${VCPKG_COMBINED_C_FLAGS_RELEASE}\" \ - extra_cflags_cc=\"${VCPKG_COMBINED_CXX_FLAGS_RELEASE}\" \ - extra_ldflags=\"${VCPKG_COMBINED_SHARED_LINKER_FLAGS_RELEASE}\" \ - extra_arflags=\"${VCPKG_COMBINED_STATIC_LINKER_FLAGS_RELEASE}\"") - - set(DISABLE_WHOLE_PROGRAM_OPTIMIZATION "\ - extra_cflags=\"/GL-\" \ - extra_ldflags=\"/LTCG:OFF\" \ - extra_arflags=\"/LTCG:OFF\"") - - set(OPTIONS_DBG "${OPTIONS_DBG} ${DISABLE_WHOLE_PROGRAM_OPTIMIZATION}") - set(OPTIONS_REL "${OPTIONS_REL} ${DISABLE_WHOLE_PROGRAM_OPTIMIZATION}") -endif() - -vcpkg_gn_configure( - SOURCE_PATH "${SOURCE_PATH}" - OPTIONS "${OPTIONS}" - OPTIONS_DEBUG "${OPTIONS_DBG}" - OPTIONS_RELEASE "${OPTIONS_REL}" -) - -vcpkg_gn_install( - SOURCE_PATH "${SOURCE_PATH}" - TARGETS client client:common util third_party/mini_chromium/mini_chromium/base handler:crashpad_handler -) - -message(STATUS "Installing headers...") -set(PACKAGES_INCLUDE_DIR "${CURRENT_PACKAGES_DIR}/include/${PORT}") -function(install_headers DIR) - file(COPY "${DIR}" DESTINATION "${PACKAGES_INCLUDE_DIR}" FILES_MATCHING PATTERN "*.h") -endfunction() -install_headers("${SOURCE_PATH}/client") -install_headers("${SOURCE_PATH}/util") -install_headers("${SOURCE_PATH}/third_party/mini_chromium/mini_chromium/base") -install_headers("${SOURCE_PATH}/third_party/mini_chromium/mini_chromium/build") - -file(COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/gen/build/chromeos_buildflags.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include/${PORT}/build") -file(COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/gen/build/chromeos_buildflags.h.flags" DESTINATION "${CURRENT_PACKAGES_DIR}/include/${PORT}/build") - -# On Windows/MSVC, mirror headers into the root include directory so MSBuild integration -# (which adds only /include) can resolve un-namespaced includes like -# "client/..." and "base/...". -if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) - message(STATUS "Mirroring headers into include root for MSBuild consumption...") - file(COPY "${SOURCE_PATH}/client" DESTINATION "${CURRENT_PACKAGES_DIR}/include" FILES_MATCHING PATTERN "*.h") - file(COPY "${SOURCE_PATH}/util" DESTINATION "${CURRENT_PACKAGES_DIR}/include" FILES_MATCHING PATTERN "*.h") - file(COPY "${SOURCE_PATH}/third_party/mini_chromium/mini_chromium/base" DESTINATION "${CURRENT_PACKAGES_DIR}/include" FILES_MATCHING PATTERN "*.h") - file(COPY "${SOURCE_PATH}/third_party/mini_chromium/mini_chromium/build" DESTINATION "${CURRENT_PACKAGES_DIR}/include" FILES_MATCHING PATTERN "*.h") - file(COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/gen/build/chromeos_buildflags.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include/build") - file(COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/gen/build/chromeos_buildflags.h.flags" DESTINATION "${CURRENT_PACKAGES_DIR}/include/build") -endif() - -if(VCPKG_TARGET_IS_OSX) - if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") - file(COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/obj/util/libmig_output.a" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib") - endif() - file(COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/obj/util/libmig_output.a" DESTINATION "${CURRENT_PACKAGES_DIR}/lib") -endif() - -vcpkg_copy_tools( - TOOL_NAMES crashpad_handler - SEARCH_DIR "${CURRENT_PACKAGES_DIR}/tools") - -if(NOT VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_MINGW) - file(CHMOD "${CURRENT_PACKAGES_DIR}/tools/crashpad_handler" FILE_PERMISSIONS - OWNER_READ OWNER_WRITE OWNER_EXECUTE - GROUP_READ GROUP_EXECUTE - WORLD_READ WORLD_EXECUTE - ) -endif() - -# remove empty directories -file(REMOVE_RECURSE - "${PACKAGES_INCLUDE_DIR}/util/net/testdata" - "${PACKAGES_INCLUDE_DIR}/build/ios") - -if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) - file(REMOVE_RECURSE - "${CURRENT_PACKAGES_DIR}/include/util/net/testdata" - "${CURRENT_PACKAGES_DIR}/include/build/ios") -endif() - -configure_file("${CMAKE_CURRENT_LIST_DIR}/crashpadConfig.cmake.in" - "${CURRENT_PACKAGES_DIR}/share/${PORT}/crashpadConfig.cmake" @ONLY) - -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/${PORT}/build/config") -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/${PORT}/util/mach/__pycache__") - -if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) - # Remove empty directory created under the mirrored root include - file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/build/config") -endif() - -vcpkg_copy_pdbs() -vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") +vcpkg_check_linkage(ONLY_STATIC_LIBRARY) + +vcpkg_from_git( + OUT_SOURCE_PATH SOURCE_PATH + URL https://chromium.googlesource.com/crashpad/crashpad + REF 28ef661295a5c38524de904077880d7c6d372dc0 + PATCHES + fix-lib-name-conflict.patch +) + +vcpkg_find_acquire_program(PYTHON3) +x_vcpkg_get_python_packages(OUT_PYTHON_VAR PYTHON3 + PYTHON_EXECUTABLE "${PYTHON3}" + PYTHON_VERSION "3" + PACKAGES setuptools +) +vcpkg_replace_string("${SOURCE_PATH}/.gn" "script_executable = \"python3\"" "script_executable = \"${PYTHON3}\"") + +# mini_chromium contains the toolchains and build configuration +if(NOT EXISTS "${SOURCE_PATH}/third_party/mini_chromium/mini_chromium/BUILD.gn") + vcpkg_from_git(OUT_SOURCE_PATH mini_chromium + URL "https://chromium.googlesource.com/chromium/mini_chromium" + REF e5a8d550e530d504c792af8ec7dbcbd3d80544df + PATCHES + ndk-toolchain.diff + fix-lib-name-conflict-1.patch + fix-windows-toolchain.patch + ) + file(REMOVE_RECURSE "${SOURCE_PATH}/third_party/mini_chromium/mini_chromium") + file(RENAME "${mini_chromium}" "${SOURCE_PATH}/third_party/mini_chromium/mini_chromium") +endif() + +if(NOT EXISTS "${SOURCE_PATH}/third_party/lss/lss/BUILD.gn" AND (VCPKG_TARGET_IS_ANDROID OR VCPKG_TARGET_IS_LINUX)) + vcpkg_from_git(OUT_SOURCE_PATH lss + URL https://chromium.googlesource.com/linux-syscall-support + REF 9719c1e1e676814c456b55f5f070eabad6709d31 + ) + file(REMOVE_RECURSE "${SOURCE_PATH}/third_party/lss/lss") + file(RENAME "${lss}" "${SOURCE_PATH}/third_party/lss/lss") +endif() + +function(replace_gn_dependency INPUT_FILE OUTPUT_FILE LIBRARY_NAMES) + if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + unset(_LIBRARY_DEB CACHE) + find_library(_LIBRARY_DEB NAMES ${LIBRARY_NAMES} + PATHS "${CURRENT_INSTALLED_DIR}/debug/lib" + NO_DEFAULT_PATH) + + if(_LIBRARY_DEB MATCHES "-NOTFOUND") + message(FATAL_ERROR "Could not find debug library with names: ${LIBRARY_NAMES}") + endif() + endif() + + unset(_LIBRARY_REL CACHE) + find_library(_LIBRARY_REL NAMES ${LIBRARY_NAMES} + PATHS "${CURRENT_INSTALLED_DIR}/lib" + NO_DEFAULT_PATH) + + if(_LIBRARY_REL MATCHES "-NOTFOUND") + message(FATAL_ERROR "Could not find library with names: ${LIBRARY_NAMES}") + endif() + + if(VCPKG_BUILD_TYPE STREQUAL "release") + set(_LIBRARY_DEB ${_LIBRARY_REL}) + endif() + + set(_INCLUDE_DIR "${CURRENT_INSTALLED_DIR}/include") + + file(REMOVE "${OUTPUT_FILE}") + configure_file("${INPUT_FILE}" "${OUTPUT_FILE}" @ONLY) +endfunction() + +replace_gn_dependency( + "${CMAKE_CURRENT_LIST_DIR}/zlib.gn" + "${SOURCE_PATH}/third_party/zlib/BUILD.gn" + "z;zlib;zlibd" +) + +set(OPTIONS "target_cpu=\"${VCPKG_TARGET_ARCHITECTURE}\"") +set(OPTIONS_DBG "is_debug=true") +set(OPTIONS_REL "") + +if(VCPKG_TARGET_IS_ANDROID) + vcpkg_cmake_get_vars(cmake_vars_file) + include("${cmake_vars_file}") + string(APPEND OPTIONS " target_os=\"android\" android_ndk_root=\"${VCPKG_DETECTED_CMAKE_ANDROID_NDK}\"") + +elseif(VCPKG_TARGET_IS_LINUX) + string(APPEND OPTIONS " target_os=\"linux\"") + +elseif(VCPKG_TARGET_IS_OSX) + string(APPEND OPTIONS " target_os=\"mac\"") + +elseif(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) + string(APPEND OPTIONS " target_os=\"win\"") + + # Load toolchains + vcpkg_cmake_get_vars(cmake_vars_file) + include("${cmake_vars_file}") + + set(OPTIONS_DBG "${OPTIONS_DBG} \ + extra_cflags_c=\"${VCPKG_COMBINED_C_FLAGS_DEBUG}\" \ + extra_cflags_cc=\"${VCPKG_COMBINED_CXX_FLAGS_DEBUG}\" \ + extra_ldflags=\"${VCPKG_COMBINED_SHARED_LINKER_FLAGS_DEBUG}\" \ + extra_arflags=\"${VCPKG_COMBINED_STATIC_LINKER_FLAGS_DEBUG}\"") + + set(OPTIONS_REL "${OPTIONS_REL} \ + extra_cflags_c=\"${VCPKG_COMBINED_C_FLAGS_RELEASE}\" \ + extra_cflags_cc=\"${VCPKG_COMBINED_CXX_FLAGS_RELEASE}\" \ + extra_ldflags=\"${VCPKG_COMBINED_SHARED_LINKER_FLAGS_RELEASE}\" \ + extra_arflags=\"${VCPKG_COMBINED_STATIC_LINKER_FLAGS_RELEASE}\"") + + set(DISABLE_WHOLE_PROGRAM_OPTIMIZATION "\ + extra_cflags=\"/GL-\" \ + extra_ldflags=\"/LTCG:OFF\" \ + extra_arflags=\"/LTCG:OFF\"") + + set(OPTIONS_DBG "${OPTIONS_DBG} ${DISABLE_WHOLE_PROGRAM_OPTIMIZATION}") + set(OPTIONS_REL "${OPTIONS_REL} ${DISABLE_WHOLE_PROGRAM_OPTIMIZATION}") +endif() + +vcpkg_gn_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS "${OPTIONS}" + OPTIONS_DEBUG "${OPTIONS_DBG}" + OPTIONS_RELEASE "${OPTIONS_REL}" +) + +vcpkg_gn_install( + SOURCE_PATH "${SOURCE_PATH}" + TARGETS client client:common util third_party/mini_chromium/mini_chromium/base handler:crashpad_handler +) + +message(STATUS "Installing headers...") +set(PACKAGES_INCLUDE_DIR "${CURRENT_PACKAGES_DIR}/include/${PORT}") +function(install_headers DIR) + file(COPY "${DIR}" DESTINATION "${PACKAGES_INCLUDE_DIR}" FILES_MATCHING PATTERN "*.h") +endfunction() +install_headers("${SOURCE_PATH}/client") +install_headers("${SOURCE_PATH}/util") +install_headers("${SOURCE_PATH}/third_party/mini_chromium/mini_chromium/base") +install_headers("${SOURCE_PATH}/third_party/mini_chromium/mini_chromium/build") + +file(COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/gen/build/chromeos_buildflags.h.flags" DESTINATION "${CURRENT_PACKAGES_DIR}/include/${PORT}/build") + +# On Windows/MSVC, mirror headers into the root include directory so MSBuild integration +# (which adds only /include) can resolve un-namespaced includes like +# "client/..." and "base/...". +if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) + message(STATUS "Mirroring headers into include root for MSBuild consumption...") + file(COPY "${SOURCE_PATH}/client" DESTINATION "${CURRENT_PACKAGES_DIR}/include" FILES_MATCHING PATTERN "*.h") + file(COPY "${SOURCE_PATH}/util" DESTINATION "${CURRENT_PACKAGES_DIR}/include" FILES_MATCHING PATTERN "*.h") + file(COPY "${SOURCE_PATH}/third_party/mini_chromium/mini_chromium/base" DESTINATION "${CURRENT_PACKAGES_DIR}/include" FILES_MATCHING PATTERN "*.h") + file(COPY "${SOURCE_PATH}/third_party/mini_chromium/mini_chromium/build" DESTINATION "${CURRENT_PACKAGES_DIR}/include" FILES_MATCHING PATTERN "*.h") + file(COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/gen/build/chromeos_buildflags.h.flags" DESTINATION "${CURRENT_PACKAGES_DIR}/include/build") +endif() + +if(VCPKG_TARGET_IS_OSX) + if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + file(COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/obj/util/libmig_output.a" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib") + endif() + file(COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/obj/util/libmig_output.a" DESTINATION "${CURRENT_PACKAGES_DIR}/lib") +endif() + +vcpkg_copy_tools( + TOOL_NAMES crashpad_handler + SEARCH_DIR "${CURRENT_PACKAGES_DIR}/tools") + +if(NOT VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_MINGW) + file(CHMOD "${CURRENT_PACKAGES_DIR}/tools/crashpad_handler" FILE_PERMISSIONS + OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE + ) +endif() + +# remove empty directories +file(REMOVE_RECURSE + "${PACKAGES_INCLUDE_DIR}/util/net/testdata" + "${PACKAGES_INCLUDE_DIR}/build/ios") + +if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) + file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/include/util/net/testdata" + "${CURRENT_PACKAGES_DIR}/include/build/ios") +endif() + +configure_file("${CMAKE_CURRENT_LIST_DIR}/crashpadConfig.cmake.in" + "${CURRENT_PACKAGES_DIR}/share/${PORT}/crashpadConfig.cmake" @ONLY) + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/${PORT}/build/config") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/${PORT}/util/mach/__pycache__") + +if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) + # Remove empty directory created under the mirrored root include + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/build/config") +endif() + +vcpkg_copy_pdbs() +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/slangpy/tests/core/test_crash.py b/slangpy/tests/core/test_crash.py new file mode 100644 index 000000000..e88b055d1 --- /dev/null +++ b/slangpy/tests/core/test_crash.py @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +import pytest +import slangpy as spy + + +def test_crash(): + spy.crash() + + +if __name__ == "__main__": + pytest.main([__file__, "-v"]) diff --git a/src/slangpy_ext/slangpy_ext.cpp b/src/slangpy_ext/slangpy_ext.cpp index b1203b89a..e0eaa7e85 100644 --- a/src/slangpy_ext/slangpy_ext.cpp +++ b/src/slangpy_ext/slangpy_ext.cpp @@ -99,6 +99,17 @@ NB_MODULE(slangpy_ext, m_) m.attr("SGL_BUILD_TYPE") = SGL_BUILD_TYPE; m.attr("SLANG_BUILD_TAG") = SLANG_BUILD_TAG; + m.def( + "crash", + []() + { + uint32_t* ptr = (uint32_t*)128; + uint32_t value = *ptr; + return value; + }, + D_NA(slangpy_ext, crash) + ); + SGL_PY_IMPORT(core_object); SGL_PY_IMPORT(core_platform); SGL_PY_IMPORT(core_thread);