Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: getsentry/sentry-native
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 0.7.19
Choose a base ref
...
head repository: getsentry/sentry-native
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 0.7.20
Choose a head ref
  • 9 commits
  • 18 files changed
  • 8 contributors

Commits on Jan 20, 2025

  1. Merge branch 'release/0.7.19'

    getsentry-bot committed Jan 20, 2025

    Verified

    This commit was signed with the committer’s verified signature.
    Copy the full SHA
    56198fc View commit details

Commits on Jan 23, 2025

  1. fix: initialize local variable to prevent c4701 warning on windows arm (

    #1122)
    
    * Prevent c4701 warning on windows arm
    
    * comment that init has no semantic meaning
    
    ---------
    
    Co-authored-by: Mischan Toosarani-Hausberger <mischan@abovevacant.com>
    jkosberg and supervacuus authored Jan 23, 2025

    Verified

    This commit was signed with the committer’s verified signature.
    Copy the full SHA
    57c38d9 View commit details

Commits on Jan 27, 2025

  1. fix: support crashpad PAC-stripping on older assemblers. (#1125)

    * fix: support PAC stripping on older assemblers.
    
    * update crashpad after squash-merge to getsentry branch
    supervacuus authored Jan 27, 2025

    Partially verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    We cannot verify signatures from co-authors, and some of the co-authors attributed to this commit require their commits to be signed.
    Copy the full SHA
    3dc60ed View commit details
  2. feat: enable debug-option by default in debug-build. (#1128)

    supervacuus authored Jan 27, 2025
    Copy the full SHA
    2aa4b16 View commit details
  3. Auto detect latest GDK and Windows SDK (#1124)

    * Auto detect latest GDK and Windows SDK
    
    * Update changelog
    
    * Accept Suggestions and allow GDK override
    
    ---------
    
    Co-authored-by: PlasmaDev5 <dragpmCASTjosh@gmail.com>
    Co-authored-by: Mischan Toosarani-Hausberger <mischan@abovevacant.com>
    3 people authored Jan 27, 2025
    Copy the full SHA
    1fc2c77 View commit details

Commits on Jan 28, 2025

  1. chore: Update xbox_build.md (#1130)

    bitsandfoxes authored Jan 28, 2025
    Copy the full SHA
    d90eec1 View commit details

Commits on Jan 30, 2025

  1. fix: set default max_spans to 1000 (#1132)

    * set default max_spans to 1000
    
    * changelog
    JoshuaMoelans authored Jan 30, 2025
    Copy the full SHA
    4218313 View commit details
  2. fix: allow test discovery to handle oneliner unit-tests (#1134)

    supervacuus authored Jan 30, 2025
    Copy the full SHA
    13498e5 View commit details

Commits on Jan 31, 2025

  1. release: 0.7.20

    getsentry-bot committed Jan 31, 2025
    Copy the full SHA
    69569b5 View commit details
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
# Changelog

## 0.7.20

**Features**:

- Auto-detect the latest GDK and Windows SDK for the XBox build. ([#1124](https://github.com/getsentry/sentry-native/pull/1124))
- Enable debug-option by default when running in a debug-build. ([#1128](https://github.com/getsentry/sentry-native/pull/1128))

**Fixes**:

- Allow older toolchains with assemblers that don't support PAC-stripping instructions on `aarch64` to compile `crashpad`. ([#1125](https://github.com/getsentry/sentry-native/pull/1125), [crashpad#118](https://github.com/getsentry/crashpad/pull/118))
- Set default `max_spans` to 1000. ([#1132](https://github.com/getsentry/sentry-native/pull/1132))

## 0.7.19

**Fixes**:
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
if(WIN32)
cmake_minimum_required (VERSION 3.16.4)
cmake_minimum_required (VERSION 3.18)

# enables support for CMAKE_MSVC_RUNTIME_LIBRARY
cmake_policy(SET CMP0091 NEW)
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
all: test

update-test-discovery:
@perl -ne 'print if s/SENTRY_TEST\(([^)]+)\)/XX(\1)/' tests/unit/*.c | sort | grep -v define | uniq > tests/unit/tests.inc
@perl -ne 'print if s/SENTRY_TEST\(([^)]+)\).*/XX(\1)/' tests/unit/*.c | sort | grep -v define | uniq > tests/unit/tests.inc
.PHONY: update-test-discovery

build/Makefile: CMakeLists.txt
2 changes: 1 addition & 1 deletion external/crashpad
2 changes: 1 addition & 1 deletion include/sentry.h
Original file line number Diff line number Diff line change
@@ -30,7 +30,7 @@ extern "C" {
# define SENTRY_SDK_NAME "sentry.native"
# endif
#endif
#define SENTRY_SDK_VERSION "0.7.19"
#define SENTRY_SDK_VERSION "0.7.20"
#define SENTRY_SDK_USER_AGENT SENTRY_SDK_NAME "/" SENTRY_SDK_VERSION

/* common platform detection */
2 changes: 1 addition & 1 deletion ndk/gradle.properties
Original file line number Diff line number Diff line change
@@ -10,7 +10,7 @@ android.useAndroidX=true
android.defaults.buildfeatures.buildconfig=true

# Release information, used for maven publishing
versionName=0.7.19
versionName=0.7.20

# disable renderscript, it's enabled by default
android.defaults.buildfeatures.renderscript=false
10 changes: 7 additions & 3 deletions scripts/update_test_discovery.ps1
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
Get-ChildItem -Path 'tests/unit/*.c' | ForEach-Object {
$lines = Get-ChildItem -Path 'tests/unit/*.c' | ForEach-Object {
Get-Content $_.FullName | ForEach-Object {
if ($_ -match 'SENTRY_TEST\(([^)]+)\)') {
$_ -replace 'SENTRY_TEST\(([^)]+)\)', 'XX($1)'
$_ -replace 'SENTRY_TEST\(([^)]+)\).*', 'XX($1)'
}
}
} | Sort-Object | Where-Object { $_ -notmatch 'define' } | Get-Unique | Set-Content 'tests/unit/tests.inc'
}

[System.Array]::Sort($lines, [System.StringComparer]::Ordinal)

$lines | Where-Object { $_ -notmatch 'define' } | Get-Unique | Set-Content 'tests/unit/tests.inc'
4 changes: 3 additions & 1 deletion src/sentry_core.c
Original file line number Diff line number Diff line change
@@ -406,7 +406,9 @@ sentry__roll_dice(double probability)
sentry_uuid_t
sentry__capture_event(sentry_value_t event)
{
sentry_uuid_t event_id;
// `event_id` is only used as an argument to pure output parameters.
// Initialization only happens to prevent compiler warnings.
sentry_uuid_t event_id = sentry_uuid_nil();
sentry_envelope_t *envelope = NULL;

bool was_captured = false;
11 changes: 6 additions & 5 deletions src/sentry_options.c
Original file line number Diff line number Diff line change
@@ -22,6 +22,11 @@ sentry_options_new(void)
sentry_options_set_dsn(opts, getenv("SENTRY_DSN"));
const char *debug = getenv("SENTRY_DEBUG");
opts->debug = debug && sentry__string_eq(debug, "1");
#if !defined(NDEBUG)
if (!opts->debug && (!debug || !sentry__string_eq(debug, "0"))) {
opts->debug = 1;
}
#endif
sentry_logger_t logger
= { sentry__logger_defaultlogger, NULL, SENTRY_LEVEL_DEBUG };
opts->logger = logger;
@@ -57,7 +62,7 @@ sentry_options_new(void)
opts->refcount = 1;
opts->shutdown_timeout = SENTRY_DEFAULT_SHUTDOWN_TIMEOUT;
opts->traces_sample_rate = 0.0;
opts->max_spans = 0;
opts->max_spans = SENTRY_SPANS_MAX;
opts->handler_strategy = SENTRY_HANDLER_STRATEGY_DEFAULT;

return opts;
@@ -600,10 +605,6 @@ sentry_options_set_traces_sample_rate(
sample_rate = 1.0;
}
opts->traces_sample_rate = sample_rate;

if (sample_rate > 0 && opts->max_spans == 0) {
opts->max_spans = SENTRY_SPANS_MAX;
}
}

/**
4 changes: 2 additions & 2 deletions tests/assertions.py
Original file line number Diff line number Diff line change
@@ -90,9 +90,9 @@ def assert_event_meta(
}
expected_sdk = {
"name": "sentry.native",
"version": "0.7.19",
"version": "0.7.20",
"packages": [
{"name": "github:getsentry/sentry-native", "version": "0.7.19"},
{"name": "github:getsentry/sentry-native", "version": "0.7.20"},
],
}
if is_android:
2 changes: 1 addition & 1 deletion tests/test_integration_http.py
Original file line number Diff line number Diff line change
@@ -31,7 +31,7 @@

# fmt: off
auth_header = (
"Sentry sentry_key=uiaeosnrtdy, sentry_version=7, sentry_client=sentry.native/0.7.19"
"Sentry sentry_key=uiaeosnrtdy, sentry_version=7, sentry_client=sentry.native/0.7.20"
)
# fmt: on

2 changes: 1 addition & 1 deletion tests/win_utils.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import pathlib
import win32api

sentry_version = "0.7.19"
sentry_version = "0.7.20"


def check_binary_version(binary_path: pathlib.Path):
48 changes: 14 additions & 34 deletions toolchains/xbox/CMakeGDKScarlett.cmake
Original file line number Diff line number Diff line change
@@ -15,18 +15,17 @@ endif()
set(XBOX_CONSOLE_TARGET "scarlett" CACHE STRING "")

#--- Microsoft Game Development Kit
set(XdkEditionTarget "240603" CACHE STRING "Microsoft GDK Edition")

message("XdkEditionTarget = ${XdkEditionTarget}")
include("${CMAKE_CURRENT_LIST_DIR}/DetectGDK.cmake")

set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES XdkEditionTarget BUILD_USING_BWOI)
set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES GDK_VERSION BUILD_USING_BWOI)

#--- Windows SDK
set(SDKVersion 10.0.19041.0)
include("${CMAKE_CURRENT_LIST_DIR}/DetectWindowsSDK.cmake")

set(CMAKE_SYSTEM_NAME WINDOWS)
set(CMAKE_SYSTEM_VERSION 10.0.19041.0)
set(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION ${SDKVersion})
set(CMAKE_SYSTEM_VERSION ${WINDOWS_SDK_VER})
set(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION ${WINDOWS_SDK_VER})

#--- Locate Visual Studio (needed for VC Runtime DLLs)

@@ -80,42 +79,23 @@ message("VCToolsRedistVersion = ${VCToolsRedistVersion}")
set(_GDK_XBOX_ ON)
include("${SENTRY_TOOLCHAINS_DIR}/xbox/GDK-targets.cmake")

set(DurangoXdkInstallPath "${Console_SdkRoot}/${XdkEditionTarget}")
set(DurangoXdkInstallPath "${Console_SdkRoot}/${GDK_VERSION}")

message("Microsoft GDK = ${DurangoXdkInstallPath}")

#--- Windows SDK (BWOI or installed)
if(BUILD_USING_BWOI)
if (DEFINED ENV{ExtractedFolder})
cmake_path(SET ExtractedFolder "$ENV{ExtractedFolder}")
else()
set(ExtractedFolder "d:/xtrctd.sdks/BWOIExample/")
endif()

if(NOT EXISTS ${ExtractedFolder})
message(FATAL_ERROR "ERROR: BWOI requires a valid ExtractedFolder (${ExtractedFolder})")
endif()

set(WindowsSdkDir "${ExtractedFolder}/Windows Kits/10")
if (NOT EXISTS ${WindowsSdkDir})
cmake_path(SET WindowsSdkDir "$ENV{ProgramFiles\(x86\)}/Windows Kits/10")
endif()
else()
cmake_path(SET WindowsSdkDir "$ENV{ProgramFiles\(x86\)}/Windows Kits/10")
endif()

if(EXISTS "${WindowsSdkDir}/Include/${SDKVersion}" )
message("Windows SDK = v${SDKVersion} in ${WindowsSdkDir}")
#--- Windows SDK
if(EXISTS "${WINDOWS_SDK}/Include/${WINDOWS_SDK_VER}" )
message("Windows SDK = v${WINDOWS_SDK_VER} in ${WINDOWS_SDK}")
else()
message(FATAL_ERROR "ERROR: Cannot locate Windows SDK (${SDKVersion})")
message(FATAL_ERROR "ERROR: Cannot locate Windows SDK (${WINDOWS_SDK_VER})")
endif()

#--- Headers
set(Console_EndpointIncludeRoot
"${DurangoXdkInstallPath}/GXDK/gameKit/Include"
"${DurangoXdkInstallPath}/GXDK/gameKit/Include/Scarlett"
"${DurangoXdkInstallPath}/GRDK/gameKit/Include")
set(Console_WindowsIncludeRoot ${WindowsSdkDir}/Include/${SDKVersion})
set(Console_WindowsIncludeRoot ${WINDOWS_SDK}/Include/${WINDOWS_SDK_VER})
set(Console_SdkIncludeRoot
"${Console_EndpointIncludeRoot}"
"${Console_WindowsIncludeRoot}/um"
@@ -135,7 +115,7 @@ if(NOT EXISTS ${VC_OneCore_LibPath}/msvcrt.lib)
message(FATAL_ERROR "ERROR: Cannot locate msvcrt.lib for the Visual C++ toolset (${VCToolsVersion})")
endif()

set(Console_LibRoot ${WindowsSdkDir}/Lib/${SDKVersion})
set(Console_LibRoot ${WINDOWS_SDK}/Lib/${WINDOWS_SDK_VER})
set(Console_EndpointLibRoot
"${DurangoXdkInstallPath}/GXDK/gameKit/Lib/amd64"
"${DurangoXdkInstallPath}/GXDK/gameKit/Lib/amd64/Scarlett"
@@ -150,9 +130,9 @@ set(Console_Libs pixevt.lib d3d12_xs.lib xgameplatform.lib xgameruntime.lib xmem
#--- Binaries
set(GameOSFilePath ${DurangoXdkInstallPath}/GXDK/sideload/gameos.xvd)

set(Console_UCRTRedistDebug ${WindowsSdkDir}/bin/${SDKVersion}/x64/ucrt)
set(Console_UCRTRedistDebug ${WINDOWS_SDK}/bin/${WINDOWS_SDK_VER}/x64/ucrt)
if(NOT EXISTS ${Console_UCRTRedistDebug}/ucrtbased.dll)
message(FATAL_ERROR "ERROR: Cannot locate ucrtbased.dll in the Windows SDK (${SDKVersion})")
message(FATAL_ERROR "ERROR: Cannot locate ucrtbased.dll in the Windows SDK (${WINDOWS_SDK_VER})")
endif()

set(CRTPlatformToolset 143)
10 changes: 10 additions & 0 deletions toolchains/xbox/DetectGDK.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
get_filename_component(GDK_DIR "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\GDK;InstallPath]" ABSOLUTE CACHE)

if(NOT GDK_VERSION)
FILE(GLOB subfolders RELATIVE "${GDK_DIR}" "${GDK_DIR}/*")
list(FILTER subfolders INCLUDE REGEX "[0-9]+")
list(SORT subfolders COMPARE NATURAL) # sort by version number
list(GET subfolders -1 GDK_VERSION) # GET -1 is last element, i.e. highest version
endif()

message(STATUS "Using GDK version ${GDK_VERSION} at ${GDK_DIR}")
9 changes: 9 additions & 0 deletions toolchains/xbox/DetectWindowsSDK.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
get_filename_component(WINDOWS_SDK "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot10]" ABSOLUTE CACHE)

if(NOT WINDOWS_SDK_VER)
file(GLOB subfolders RELATIVE "${WINDOWS_SDK}/Lib" "${WINDOWS_SDK}/Lib/*")
list(SORT subfolders COMPARE NATURAL) # sort by version number
list(GET subfolders -1 WINDOWS_SDK_VER) # GET -1 is last element, i.e. highest version
endif ()

message(STATUS "Using Windows SDK version ${WINDOWS_SDK_VER} at ${WINDOWS_SDK}")
22 changes: 11 additions & 11 deletions toolchains/xbox/GDK-targets.cmake
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Adapted by Sentry from:
# Adapted by Sentry from:
# https://github.com/microsoft/Xbox-GDK-Samples/blob/e5328b9c06443739ec9c7c0089a36c5743c9da15/Samples/Tools/CMakeExample/CMake/GDK-targets.cmake
#
# GDK-targets.cmake : Defines library imports for the Microsoft GDK shared libraries
@@ -14,8 +14,8 @@ if(CMAKE_SIZEOF_VOID_P EQUAL 4)
message(FATAL_ERROR "ERROR: Microsoft GDK only supports 64-bit")
endif()

if(NOT XdkEditionTarget)
message(FATAL_ERROR "ERROR: XdkEditionTarget must be set")
if(NOT GDK_VERSION)
message(FATAL_ERROR "ERROR: GDK_VERSION must be set")
endif()

#--- Locate Microsoft GDK
@@ -35,34 +35,34 @@ else()
GET_FILENAME_COMPONENT(Console_SdkRoot "[HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\GDK;GRDKInstallPath]" ABSOLUTE CACHE)
endif()

if(NOT EXISTS "${Console_SdkRoot}/${XdkEditionTarget}")
message(FATAL_ERROR "ERROR: Cannot locate Microsoft Game Development Kit (GDK) - ${XdkEditionTarget}")
if(NOT EXISTS "${Console_SdkRoot}/${GDK_VERSION}")
message(FATAL_ERROR "ERROR: Cannot locate Microsoft Game Development Kit (GDK) - ${GDK_VERSION}")
endif()

#--- GameRuntime Library (for Xbox these are included in the Console_Libs variable)
if(NOT _GDK_XBOX_)
add_library(Xbox::GameRuntime STATIC IMPORTED)
set_target_properties(Xbox::GameRuntime PROPERTIES
IMPORTED_LOCATION "${Console_SdkRoot}/${XdkEditionTarget}/GRDK/gameKit/Lib/amd64/xgameruntime.lib"
IMPORTED_LOCATION "${Console_SdkRoot}/${GDK_VERSION}/GRDK/gameKit/Lib/amd64/xgameruntime.lib"
MAP_IMPORTED_CONFIG_MINSIZEREL ""
MAP_IMPORTED_CONFIG_RELWITHDEBINFO ""
INTERFACE_INCLUDE_DIRECTORIES "${Console_SdkRoot}/${XdkEditionTarget}/GRDK/gameKit/Include"
INTERFACE_INCLUDE_DIRECTORIES "${Console_SdkRoot}/${GDK_VERSION}/GRDK/gameKit/Include"
INTERFACE_COMPILE_FEATURES "cxx_std_11"
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX")

if(XdkEditionTarget GREATER_EQUAL 220600)
if(GDK_VERSION GREATER_EQUAL 220600)
add_library(Xbox::GameInput STATIC IMPORTED)
set_target_properties(Xbox::GameInput PROPERTIES
IMPORTED_LOCATION "${Console_SdkRoot}/${XdkEditionTarget}/GRDK/gameKit/Lib/amd64/gameinput.lib"
IMPORTED_LOCATION "${Console_SdkRoot}/${GDK_VERSION}/GRDK/gameKit/Lib/amd64/gameinput.lib"
MAP_IMPORTED_CONFIG_MINSIZEREL ""
MAP_IMPORTED_CONFIG_RELWITHDEBINFO ""
INTERFACE_INCLUDE_DIRECTORIES "${Console_SdkRoot}/${XdkEditionTarget}/GRDK/gameKit/Include"
INTERFACE_INCLUDE_DIRECTORIES "${Console_SdkRoot}/${GDK_VERSION}/GRDK/gameKit/Include"
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX")
endif()
endif()

#--- Extension Libraries
set(Console_GRDKExtLibRoot "${Console_SdkRoot}/${XdkEditionTarget}/GRDK/ExtensionLibraries")
set(Console_GRDKExtLibRoot "${Console_SdkRoot}/${GDK_VERSION}/GRDK/ExtensionLibraries")
set(ExtensionPlatformToolset 142)

set(_GDK_TARGETS_ ON)
9 changes: 4 additions & 5 deletions toolchains/xbox/gxdk_xs_toolchain.cmake
Original file line number Diff line number Diff line change
@@ -13,14 +13,13 @@ if(_GXDK_XS_TOOLCHAIN_)
endif()

# Microsoft Game Development Kit
set(XdkEditionTarget "220303" CACHE STRING "Microsoft GDK Edition")

message("XdkEditionTarget = ${XdkEditionTarget}")
include("${CMAKE_CURRENT_LIST_DIR}/DetectGDK.cmake")

set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES XdkEditionTarget)
set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES GDK_VERSION)

set(CMAKE_SYSTEM_NAME WINDOWS)
set(CMAKE_SYSTEM_VERSION 10.0.19041)
set(CMAKE_SYSTEM_VERSION ${GDK_VERSION})

set(CMAKE_GENERATOR_PLATFORM "Gaming.Xbox.Scarlett.x64" CACHE STRING "" FORCE)
set(CMAKE_VS_PLATFORM_NAME "Gaming.Xbox.Scarlett.x64" CACHE STRING "" FORCE)
@@ -53,7 +52,7 @@ if(NOT GDK_DXCTool)
find_program(
GDK_DXCTool
NAMES dxc
PATHS "${Console_SdkRoot}/${XdkEditionTarget}/GXDK/bin/Scarlett"
PATHS "${Console_SdkRoot}/${GDK_VERSION}/GXDK/bin/Scarlett"
)

mark_as_advanced(GDK_DXCTool)
29 changes: 21 additions & 8 deletions toolchains/xbox/xbox_build.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,33 @@
## Xbox Scarlett Build

* The build requires Visual Studio (tested with 2022) and CMake (tested with >= 3.27.1) to be installed.
* Install Xbox GDK (tested with 2023.03.03 and 2024.06.03).
* Run "Xbox Manager GDK" and open Visual Studio Command Prompt for "Xbox Scarlett Gaming".
* in the prompt, change to the source directory.
* configure your build using
### Requirements

* Visual Studio - tested with `2022`
* CMake - tested with `3.27.1 or newer`
* Xbox GDK - tested with `2023.03.03` and `2024.06.03`
* Optional: git installed and on your PATH

### Steps

* `cd` into the SDK's root folder
* Run `git submodule update --init --recursive`
* Run "Xbox Manager GDK"
* Open Visual Studio Command Prompt for "Xbox Scarlett Gaming".
* Change to the source directory in the prompt
* Configure your build using
```
cmake
-B build
-G "Visual Studio 17 2022"
-A "Gaming.Xbox.Scarlett.x64"
-DXdkEditionTarget="240603"
-DCMAKE_TOOLCHAIN_FILE="./toolchains/xbox/gxdk_xs_toolchain.cmake"
```
* after this you can either build the library directly in the CLI with
* Optionally you can specify the GDK version
```
-DGDK_VERSION="241000"
```
* After this you can either build the library directly in the CLI with
`cmake --build build --config RelWithDebInfo` (or any other build config)
or in Visual Studio by opening the solution in the `build` directory.
* `cmake --install build --prefix install --config RelWithDebInfo` installs all required development and release files
(`dll`, `pdb`, `lib`, `h`) to include into any Xbox X/S game project into the directory `install`.
(`dll`, `pdb`, `lib`, `h`) to include into any Xbox X/S game project into the directory `install`.