Skip to content

Commit 56206b1

Browse files
authored
April 2, 2025 (3.20b) (#245)
1 parent 2957f91 commit 56206b1

File tree

5 files changed

+224
-4
lines changed

5 files changed

+224
-4
lines changed

.github/workflows/cxx.yml

+114
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
# Copyright (c) Microsoft Corporation.
2+
# Licensed under the MIT License.
3+
#
4+
# http://go.microsoft.com/fwlink/?LinkID=615560
5+
6+
name: 'CMake (Windows /std)'
7+
8+
on:
9+
push:
10+
branches: [ "main" ]
11+
pull_request:
12+
branches: [ "main" ]
13+
paths-ignore:
14+
- '*.md'
15+
- LICENSE
16+
- '.azuredevops/*'
17+
- '.nuget/*'
18+
- build/*.ps1
19+
20+
permissions:
21+
contents: read
22+
23+
jobs:
24+
build:
25+
runs-on: windows-2022
26+
27+
strategy:
28+
fail-fast: false
29+
30+
matrix:
31+
build_type: [x64-Debug, x64-Release, x64-Debug-Clang, x64-Release-Clang]
32+
arch: [amd64]
33+
include:
34+
- build_type: x86-Debug
35+
arch: amd64_x86
36+
- build_type: x86-Release
37+
arch: amd64_x86
38+
- build_type: arm64-Debug
39+
arch: amd64_arm64
40+
- build_type: arm64-Release
41+
arch: amd64_arm64
42+
- build_type: arm64ec-Debug
43+
arch: amd64_arm64
44+
- build_type: arm64ec-Release
45+
arch: amd64_arm64
46+
- build_type: x86-Debug-Clang
47+
arch: amd64_x86
48+
- build_type: x86-Release-Clang
49+
arch: amd64_x86
50+
- build_type: arm64-Debug-Clang
51+
arch: amd64_arm64
52+
- build_type: arm64-Release-Clang
53+
arch: amd64_arm64
54+
55+
steps:
56+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
57+
58+
- name: Clone test repository
59+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
60+
with:
61+
repository: walbourn/directxmathtest
62+
path: Tests
63+
ref: main
64+
65+
- name: 'Install Ninja'
66+
run: choco install ninja
67+
68+
- uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
69+
with:
70+
arch: ${{ matrix.arch }}
71+
72+
- name: 'Configure CMake (C++17)'
73+
working-directory: ${{ github.workspace }}
74+
run: cmake --preset=${{ matrix.build_type }}
75+
76+
- name: 'Build (C++17)'
77+
working-directory: ${{ github.workspace }}
78+
run: cmake --build out\build\${{ matrix.build_type }}
79+
80+
- name: 'Clean up'
81+
working-directory: ${{ github.workspace }}
82+
run: Remove-Item -Path out -Recurse -Force
83+
84+
- name: 'Configure CMake (C++11)'
85+
working-directory: ${{ github.workspace }}
86+
run: cmake --preset=${{ matrix.build_type }} -DBUILD_CXX11=ON
87+
88+
- name: 'Build (C++11)'
89+
working-directory: ${{ github.workspace }}
90+
run: cmake --build out\build\${{ matrix.build_type }}
91+
92+
- name: 'Clean up'
93+
working-directory: ${{ github.workspace }}
94+
run: Remove-Item -Path out -Recurse -Force
95+
96+
- name: 'Configure CMake (C++14)'
97+
working-directory: ${{ github.workspace }}
98+
run: cmake --preset=${{ matrix.build_type }} -DBUILD_CXX14=ON
99+
100+
- name: 'Build (C++14)'
101+
working-directory: ${{ github.workspace }}
102+
run: cmake --build out\build\${{ matrix.build_type }}
103+
104+
- name: 'Clean up'
105+
working-directory: ${{ github.workspace }}
106+
run: Remove-Item -Path out -Recurse -Force
107+
108+
- name: 'Configure CMake (C++20)'
109+
working-directory: ${{ github.workspace }}
110+
run: cmake --preset=${{ matrix.build_type }} -DBUILD_CXX20=ON
111+
112+
- name: 'Build (C++20)'
113+
working-directory: ${{ github.workspace }}
114+
run: cmake --build out\build\${{ matrix.build_type }}

.github/workflows/wslcxx.yml

+99
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
# Copyright (c) Microsoft Corporation.
2+
# Licensed under the MIT License.
3+
#
4+
# http://go.microsoft.com/fwlink/?LinkID=615560
5+
6+
name: 'CMake (WSL -std)'
7+
8+
on:
9+
push:
10+
branches: [ "main" ]
11+
pull_request:
12+
branches: [ "main" ]
13+
paths-ignore:
14+
- '*.md'
15+
- LICENSE
16+
- '.azuredevops/*'
17+
- '.nuget/*'
18+
- build/*.ps1
19+
20+
jobs:
21+
build:
22+
runs-on: ubuntu-latest
23+
24+
strategy:
25+
fail-fast: false
26+
27+
matrix:
28+
build_type: [x64-Debug-Linux, x64-Release-Linux]
29+
gcc: [12, 13, 14]
30+
# x64-Debug-NI-Linux, x64-Release-NI-Linux trigger issue with GCC
31+
32+
steps:
33+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
34+
35+
- name: Clone test repository
36+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
37+
with:
38+
repository: walbourn/directxmathtest
39+
path: Tests
40+
ref: main
41+
42+
- uses: seanmiddleditch/gha-setup-ninja@3b1f8f94a2f8254bd26914c4ab9474d4f0015f67 # v6
43+
44+
- name: 'Configure CMake (C++17)'
45+
working-directory: ${{ github.workspace }}/Tests
46+
run: cmake --preset=${{ matrix.build_type }}
47+
env:
48+
CC: gcc-${{ matrix.gcc }}
49+
CXX: g++-${{ matrix.gcc }}
50+
51+
- name: 'Build (C++17)'
52+
working-directory: ${{ github.workspace }}/Tests
53+
run: cmake --build out/build/${{ matrix.build_type }}
54+
55+
- name: 'Clean up'
56+
working-directory: ${{ github.workspace }}
57+
run: rm -rf out
58+
59+
# Test suite requires C++17 features on Linux, so we only test the headers for C++11/C++14
60+
- name: 'Configure CMake (C++11)'
61+
working-directory: ${{ github.workspace }}/Tests/headertest
62+
run: cmake --preset=${{ matrix.build_type }} -DBUILD_CXX11=ON
63+
env:
64+
CC: gcc-${{ matrix.gcc }}
65+
CXX: g++-${{ matrix.gcc }}
66+
67+
- name: 'Build (C++11)'
68+
working-directory: ${{ github.workspace }}/Tests/headertest
69+
run: cmake --build out/build/${{ matrix.build_type }}
70+
71+
- name: 'Clean up'
72+
working-directory: ${{ github.workspace }}/Tests/headertest
73+
run: rm -rf out
74+
75+
- name: 'Configure CMake (C++14)'
76+
working-directory: ${{ github.workspace }}/Tests/headertest
77+
run: cmake --preset=${{ matrix.build_type }} -DBUILD_CXX14=ON
78+
env:
79+
CC: gcc-${{ matrix.gcc }}
80+
CXX: g++-${{ matrix.gcc }}
81+
82+
- name: 'Build (C++14)'
83+
working-directory: ${{ github.workspace }}/Tests/headertest
84+
run: cmake --build out/build/${{ matrix.build_type }}
85+
86+
- name: 'Clean up'
87+
working-directory: ${{ github.workspace }}/Tests/headertest
88+
run: rm -rf out
89+
90+
- name: 'Configure CMake (C++20)'
91+
working-directory: ${{ github.workspace }}/Tests
92+
run: cmake --preset=${{ matrix.build_type }} -DBUILD_CXX20=ON
93+
env:
94+
CC: gcc-${{ matrix.gcc }}
95+
CXX: g++-${{ matrix.gcc }}
96+
97+
- name: 'Build (C++20)'
98+
working-directory: ${{ github.workspace }}/Tests
99+
run: cmake --build out/build/${{ matrix.build_type }}

.nuget/directxmath.nuspec

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<owners>microsoft,directxtk</owners>
99
<summary>DirectXMath is an all inline SIMD C++ linear algebra library for use in games and graphics apps.</summary>
1010
<description>The DirectXMath API provides SIMD-friendly C++ types and functions for common linear algebra and graphics math operations common to DirectX applications. The library provides optimized versions for Windows 32-bit (x86), Windows 64-bit (x64), and Windows on ARM through SSE2 and ARM-NEON intrinsics support in the Visual Studio compiler.</description>
11-
<releaseNotes>Matches the October 2024 release.</releaseNotes>
11+
<releaseNotes>Matches the April 2025 release.</releaseNotes>
1212
<projectUrl>http://go.microsoft.com/fwlink/?LinkID=615560</projectUrl>
1313
<repository type="git" url="https://github.com/microsoft/DirectXMath.git" />
1414
<icon>images\icon.jpg</icon>
@@ -30,4 +30,4 @@
3030
<file src=".nuget/icon.jpg" target="images\" />
3131

3232
</files>
33-
</package>
33+
</package>

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ Release available for download on [GitHub](https://github.com/microsoft/DirectXM
66

77
## Release History
88

9+
### April 2025 (3.20b)
10+
* `XM_DEPRECATED` macro uses C++14 ``[[deprecated]]`` standard attribute when supported
11+
* Cmake project updates with build options for XDSP and SHMath
12+
913
### October 2024 (3.20)
1014
* Fixed close-to-zero bug in the implementation of `TriangleTests::Intersects`
1115
* Renamed implementation namespace from `DirectX::Internal` to `DirectX::MathInternal` to avoid some conformance issues with other libraries

README.md

+5-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ https://github.com/Microsoft/DirectXMath
66

77
Copyright (c) Microsoft Corporation.
88

9-
**October 2024**
9+
**April 2025**
1010

1111
This package contains the DirectXMath library, an all inline SIMD C++ linear algebra library for use in games and graphics apps.
1212

@@ -59,7 +59,7 @@ Documentation is available on the [Microsoft Docs](https://docs.microsoft.com/en
5959

6060
## Compiler support
6161

62-
Officially the library is supported with Microsoft Visual C++ 2019 or later, clang/LLVM v12 or later, and GCC 9 or later. It should also compile with the Intel C++ and MinGW compilers.
62+
Officially the library is supported with Microsoft Visual C++ 2019 (16.11) or later, clang/LLVM v12 or later, and GCC 10 or later. It should also compile with the Intel C++ and MinGW compilers.
6363

6464
When building with clang/LLVM or other GNU C compilers, the ``_XM_NO_XMVECTOR_OVERLOADS_`` control define is set because these compilers do not support creating operator overloads for the ``XMVECTOR`` type. You can choose to enable this preprocessor define explicitly to do the same thing with Visual C++ for improved portability.
6565

@@ -69,8 +69,11 @@ With GCC, the SAL annotation preprocessor symbols can conflict with the GNU impl
6969

7070
```
7171
#include <algorithm>
72+
#include <iterator>
7273
#include <utility>
7374
75+
#include <format> // C++20 header
76+
7477
#include <DirectXMath.h>
7578
```
7679

0 commit comments

Comments
 (0)