From 52bae9dfb0eff3793a5091cdbe011160e665021f Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Sat, 5 Aug 2023 16:11:46 +0200 Subject: [PATCH] Windows on ARM: - changed DLL filename from aarch64 to arm64 - publish ARM DLL to Maven Central --- CHANGELOG.md | 2 ++ flatlaf-core/build.gradle.kts | 1 + .../java/com/formdev/flatlaf/ui/FlatNativeLibrary.java | 10 +++++----- .../flatlaf-natives-windows/build.gradle.kts | 4 ++-- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index faf1024e..248860f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ FlatLaf Change Log #### New features and improvements +- FlatLaf window decorations: Support for Windows on ARM 64-bit. (issue #443, PR + #707) - Extras: Class `FlatSVGIcon` now uses [JSVG](https://github.com/weisJ/jsvg) library (instead of svgSalamander) for rendering. JSVG provides improved SVG rendering and uses less memory compared to svgSalamander. (PR #684) diff --git a/flatlaf-core/build.gradle.kts b/flatlaf-core/build.gradle.kts index b8651b3c..112d66e3 100644 --- a/flatlaf-core/build.gradle.kts +++ b/flatlaf-core/build.gradle.kts @@ -129,6 +129,7 @@ flatlafPublish { nativeArtifacts = listOf( NativeArtifact( "${natives}/flatlaf-windows-x86.dll", "windows-x86", "dll" ), NativeArtifact( "${natives}/flatlaf-windows-x86_64.dll", "windows-x86_64", "dll" ), + NativeArtifact( "${natives}/flatlaf-windows-arm64.dll", "windows-arm64", "dll" ), NativeArtifact( "${natives}/libflatlaf-linux-x86_64.so", "linux-x86_64", "so" ), ) } diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatNativeLibrary.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatNativeLibrary.java index 84e99309..e977cae8 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatNativeLibrary.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatNativeLibrary.java @@ -55,12 +55,12 @@ class FlatNativeLibrary String classifier; String ext; - if( SystemInfo.isWindows_10_orLater ) { - // Windows: requires Windows 10/11 + if( SystemInfo.isWindows_10_orLater && (SystemInfo.isX86 || SystemInfo.isX86_64 || SystemInfo.isAARCH64) ) { + // Windows: requires Windows 10/11 (x86, x86_64 or aarch64) - if ( SystemInfo.isAARCH64 ) - classifier = "windows-aarch64"; - else if ( SystemInfo.isX86_64 ) + if( SystemInfo.isAARCH64 ) + classifier = "windows-arm64"; + else if( SystemInfo.isX86_64 ) classifier = "windows-x86_64"; else classifier = "windows-x86"; diff --git a/flatlaf-natives/flatlaf-natives-windows/build.gradle.kts b/flatlaf-natives/flatlaf-natives-windows/build.gradle.kts index 262ee477..1c1776b9 100644 --- a/flatlaf-natives/flatlaf-natives-windows/build.gradle.kts +++ b/flatlaf-natives/flatlaf-natives-windows/build.gradle.kts @@ -29,7 +29,7 @@ flatlafJniHeaders { } library { - targetMachines.set( listOf( machines.windows.x86, machines.windows.x86_64, machines.windows.architecture("aarch64") ) ) + targetMachines.set( listOf( machines.windows.x86, machines.windows.x86_64, machines.windows.architecture( "aarch64" ) ) ) } var javaHome = System.getProperty( "java.home" ) @@ -71,7 +71,7 @@ tasks { val nativesDir = project( ":flatlaf-core" ).projectDir.resolve( "src/main/resources/com/formdev/flatlaf/natives" ) val isX86 = name.contains("X86") val is64Bit = name.contains( "64" ) - val libraryName = if( is64Bit && isX86 ) "flatlaf-windows-x86_64.dll" else if( isX86 ) "flatlaf-windows-x86.dll" else "flatlaf-windows-aarch64.dll" + val libraryName = if( is64Bit && isX86 ) "flatlaf-windows-x86_64.dll" else if( isX86 ) "flatlaf-windows-x86.dll" else "flatlaf-windows-arm64.dll" linkerArgs.addAll( toolChain.map { when( it ) {