4 Commits

Author SHA1 Message Date
b09f5c39f7 fixes: windows x86 compilation error missing VKAPI_PTR (#197)
This pr fixes windows x86 compilation error (xmake and meson.build).

In runtime/Sources/Renderer/RenderCore.cpp 
```cpp
void* VKAPI_PTR VulkanAllocationFunction(void*, std::size_t size, std::size_t alignment, VkSystemAllocationScope)
	{
		return MemManager::AlignedMalloc(alignment, size);
	}

	void* VKAPI_PTR VulkanReallocationFunction(void*, void* ptr, std::size_t size, std::size_t alignment, VkSystemAllocationScope)
	{
		return MemManager::AlignedRealloc(ptr, alignment, size);
	}

	void VKAPI_PTR VulkanFreeFunction(void*, void* ptr)
	{
		MemManager::Free(ptr);
	}
```
The log of the compilation error:  
- [meson failure
log](https://github.com/0verLighT/MacroLibX/actions/runs/21409805574/job/61643508435)
- [xmake failure
log](https://github.com/0verLighT/MacroLibX/actions/runs/21412208397/job/61651747515)

In the macrolibx VKAPI_PTR was missing, On windows x86, this caused a
compilation error.


This add some features:
- New CICD for windows meson (x64, x86, MYSYS2, clang-cl) and windows
xmake x86
- Fallback for meson.build dependency SDL2 in `subprojects/SDL2.wrap`
2026-01-28 07:17:01 +01:00
0verLighT
91b93a6f10 ci(xmake): add test on x86 architecture due to a Vulkan issue (VKAPI_PTR)
Signed-off-by: 0verLighT <alexandre@0verlight.com>
2026-01-27 21:07:41 +01:00
0verLighT
26c47c3a95 fix && ci (meson): trying to fix Vulkan issue in renderCore.cpp and add some windows test based from meson wrapdb CI
Signed-off-by: 0verLighT <alexandre@0verlight.com>
2026-01-27 20:47:11 +01:00
0verLighT
28142f764f ci(windows_meson): test ci setup meson for windows
chore: add folder subprojects for download sdl2 if it's not present in pkgconfig
Signed-off-by: 0verLighT <alexandre@0verlight.com>
2026-01-27 19:47:30 +01:00
5 changed files with 130 additions and 4 deletions

View File

@@ -16,7 +16,7 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
os: [windows-latest] os: [windows-latest]
arch: [x64] arch: [x64, x86]
mode: [release] mode: [release]
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}

109
.github/workflows/windows_meson.yml vendored git.filemode.normal_file
View File

@@ -0,0 +1,109 @@
name : Windows (Meson)
on:
repository_dispatch:
types: [create-pull-request]
pull_request:
push:
paths-ignore:
- '.gitignore'
- 'LICENSE'
- 'README.md'
jobs:
VisualStudio:
if: "!contains(github.event.head_commit.message, 'ci skip')"
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
platform: ['x64', 'x86']
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
# Install a 32-bit Python so building related stuff work.
- name: Setup x86 Python
if: matrix.platform == 'x86'
uses: actions/setup-python@v6
with:
architecture: 'x86'
python-version: '3.12'
- name: Install Meson & Ninja
run: |
python -m pip install meson ninja
- uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{matrix.platform}}
- name: Compile mlx
run: |
meson setup builddir
meson compile -C builddir
VisualStudio-clang-cl:
if: "!contains(github.event.head_commit.message, 'ci skip')"
runs-on: windows-latest
strategy:
fail-fast: false
env:
CC: clang-cl
CXX: clang-cl
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Install Meson & Ninja
run: |
python -m pip install meson ninja
- uses: ilammy/msvc-dev-cmd@v1
- name: Compile mlx
run: |
meson setup builddir
meson compile -C builddir
MSYS2:
if: "!contains(github.event.head_commit.message, 'ci skip')"
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
platform: ['UCRT64', 'CLANG64']
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
- uses: msys2/setup-msys2@v2
with:
msystem: ${{matrix.platform}}
install: >-
bison
dos2unix
flex
git
pacboy: >-
cc:p
cmake:p
ninja:p
pkgconf:p
python-certifi:p
python-pip:p
# Make sure Python is updated to >=3.11 (fix https://github.com/msys2/MINGW-packages/issues/17415).
update: true
- name: Install Meson
shell: msys2 {0}
run: |
python -m pip install meson
- name: Compile mlx
shell: msys2 {0}
run: |
meson setup builddir
meson compile -C builddir

2
.gitignore vendored
View File

@@ -23,3 +23,5 @@
objs/ objs/
build/ build/
example/Test example/Test
subprojects/*/
subprojects/.wraplock

View File

@@ -55,17 +55,17 @@ namespace mlx
std::cout << std::endl; std::cout << std::endl;
} }
void* VulkanAllocationFunction(void*, std::size_t size, std::size_t alignment, VkSystemAllocationScope) void* VKAPI_PTR VulkanAllocationFunction(void*, std::size_t size, std::size_t alignment, VkSystemAllocationScope)
{ {
return MemManager::AlignedMalloc(alignment, size); return MemManager::AlignedMalloc(alignment, size);
} }
void* VulkanReallocationFunction(void*, void* ptr, std::size_t size, std::size_t alignment, VkSystemAllocationScope) void* VKAPI_PTR VulkanReallocationFunction(void*, void* ptr, std::size_t size, std::size_t alignment, VkSystemAllocationScope)
{ {
return MemManager::AlignedRealloc(ptr, alignment, size); return MemManager::AlignedRealloc(ptr, alignment, size);
} }
void VulkanFreeFunction(void*, void* ptr) void VKAPI_PTR VulkanFreeFunction(void*, void* ptr)
{ {
MemManager::Free(ptr); MemManager::Free(ptr);
} }

15
subprojects/sdl2.wrap git.filemode.normal_file
View File

@@ -0,0 +1,15 @@
[wrap-file]
directory = SDL2-2.32.8
source_url = https://github.com/libsdl-org/SDL/releases/download/release-2.32.8/SDL2-2.32.8.tar.gz
source_filename = SDL2-2.32.8.tar.gz
source_hash = 0ca83e9c9b31e18288c7ec811108e58bac1f1bb5ec6577ad386830eac51c787e
patch_filename = sdl2_2.32.8-1_patch.zip
patch_url = https://wrapdb.mesonbuild.com/v2/sdl2_2.32.8-1/get_patch
patch_hash = 5df17ea39ca418826db20e96bd821fa52b5718dac64b6225119fb6588c2744f0
source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/sdl2_2.32.8-1/SDL2-2.32.8.tar.gz
wrapdb_version = 2.32.8-1
[provide]
sdl2 = sdl2_dep
sdl2main = sdl2main_dep
sdl2_test = sdl2_test_dep