Skip to content

Commit 5afca99

Browse files
committed
[windows] Migrate to SDL3 and ANGLE
1 parent 0344e29 commit 5afca99

File tree

5 files changed

+50
-5
lines changed

5 files changed

+50
-5
lines changed

git/clay

git/linc_opengl

plugins/clay/ceramic.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ plugin:
77
+assets:
88
- '{plugin:cwd}/assets'
99
if !no_gles_angle:
10-
if mac || ios:
10+
if mac || ios || windows:
1111
+defines:
1212
- gles_angle

plugins/clay/runtime/src/backend/NativeWindows.hx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package backend;
33
@:keep
44
@:include('linc_NativeWindows.h')
55
#if !display
6-
@:build(bind.Linc.touch())
7-
@:build(bind.Linc.xml('NativeWindows', './'))
6+
@:build(bindhx.Linc.touch())
7+
@:build(bindhx.Linc.xml('NativeWindows', './'))
88
#end
99
extern class NativeWindows {
1010

plugins/windows/tools/src/tools/tasks/windows/Windows.hx

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,14 @@ class Windows extends tools.Task {
2626
var windowsProjectPath = Path.join([cwd, 'project/windows']);
2727
var windowsAppExe = Path.join([windowsProjectPath, project.app.name + '.exe']);
2828

29+
var winArch = 'x64';
30+
if (context.defines.exists('HXCPP_ARM64')) {
31+
winArch = 'arm64';
32+
}
33+
34+
var windowsAppSdlLib = Path.join([windowsProjectPath, 'SDL3.dll']);
35+
var ceramicSdlLib = Path.join([context.ceramicRootPath, 'bin/sdl/sdl3-windows-$winArch/bin/SDL3.dll']);
36+
2937
var appIconPath = Path.join([windowsProjectPath, 'app.ico']);
3038

3139
var doRun = extractArgFlag(args, 'run');
@@ -40,6 +48,43 @@ class Windows extends tools.Task {
4048
// Copy binary file
4149
File.copy(Path.join([outTargetPath, 'cpp', context.debug ? 'Main-debug.exe' : 'Main.exe']), windowsAppExe);
4250

51+
// Copy libSDL3
52+
if (!Files.haveSameLastModified(ceramicSdlLib, windowsAppSdlLib)) {
53+
File.copy(ceramicSdlLib, windowsAppSdlLib);
54+
}
55+
56+
var windowsAppAngleEGL = Path.join([windowsProjectPath, 'libEGL.dll']);
57+
var ceramicAngleEGL = Path.join([context.ceramicRootPath, 'bin/angle/angle-windows-$winArch/bin/libEGL.dll']);
58+
var windowsAppAngleGLESv2 = Path.join([windowsProjectPath, 'libGLESv2.dll']);
59+
var ceramicAngleGLESv2 = Path.join([context.ceramicRootPath, 'bin/angle/angle-windows-$winArch/bin/libGLESv2.dll']);
60+
var windowsAppAngleD3DCompiler = Path.join([windowsProjectPath, 'd3dcompiler_47.dll']);
61+
var ceramicAngleD3DCompiler = Path.join([context.ceramicRootPath, 'bin/angle/angle-windows-$winArch/bin/d3dcompiler_47.dll']);
62+
63+
if (context.defines.exists('gles_angle')) {
64+
65+
if (!Files.haveSameLastModified(ceramicAngleEGL, windowsAppAngleEGL)) {
66+
File.copy(ceramicAngleEGL, windowsAppAngleEGL);
67+
}
68+
69+
if (!Files.haveSameLastModified(ceramicAngleGLESv2, windowsAppAngleGLESv2)) {
70+
File.copy(ceramicAngleGLESv2, windowsAppAngleGLESv2);
71+
}
72+
73+
if (!Files.haveSameLastModified(ceramicAngleD3DCompiler, windowsAppAngleD3DCompiler)) {
74+
File.copy(ceramicAngleD3DCompiler, windowsAppAngleD3DCompiler);
75+
}
76+
}
77+
else {
78+
79+
if (FileSystem.exists(windowsAppAngleEGL)) {
80+
FileSystem.deleteFile(windowsAppAngleEGL);
81+
}
82+
83+
if (FileSystem.exists(windowsAppAngleGLESv2)) {
84+
FileSystem.deleteFile(windowsAppAngleGLESv2);
85+
}
86+
}
87+
4388
// Update app icon
4489
if (FileSystem.exists(appIconPath)) {
4590
command(Path.join([pluginPath, 'resources', 'rcedit.exe']), [

0 commit comments

Comments
 (0)