mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-27 03:46:17 -06:00
System File Chooser: Linux: cross-compile native library for ARM64 on x86_64 Linux
This commit is contained in:
@@ -43,6 +43,16 @@ Only on x86_64 Linux for cross-compiling for arm64 architecture:
|
||||
sudo apt install g++-aarch64-linux-gnu
|
||||
~~~
|
||||
|
||||
Download `libgtk-3.so` for arm64 architecture:
|
||||
|
||||
~~~
|
||||
cd flatlaf-natives/flatlaf-natives-linux/lib/aarch64
|
||||
wget --no-verbose https://ports.ubuntu.com/pool/main/g/gtk%2b3.0/libgtk-3-0_3.24.18-1ubuntu1_arm64.deb
|
||||
ar -x libgtk-3-0_3.24.18-1ubuntu1_arm64.deb data.tar.xz
|
||||
tar -xvf data.tar.xz --wildcards --to-stdout "./usr/lib/aarch64-linux-gnu/libgtk-3.so.0.*" > libgtk-3.so
|
||||
rm libgtk-3-0_3.24.18-1ubuntu1_arm64.deb data.tar.xz
|
||||
~~~
|
||||
|
||||
|
||||
### Fedora
|
||||
|
||||
|
||||
@@ -149,7 +149,20 @@ tasks {
|
||||
"-I", "${javaHome}/include/linux",
|
||||
"-I", "$include",
|
||||
|
||||
// for GTK
|
||||
"-I", "/usr/include/gtk-3.0",
|
||||
"-I", "/usr/include/glib-2.0",
|
||||
"-I", "/usr/lib/x86_64-linux-gnu/glib-2.0/include",
|
||||
"-I", "/usr/include/gdk-pixbuf-2.0",
|
||||
"-I", "/usr/include/atk-1.0",
|
||||
"-I", "/usr/include/cairo",
|
||||
"-I", "/usr/include/pango-1.0",
|
||||
"-I", "/usr/include/harfbuzz",
|
||||
|
||||
"$src/ApiVersion.cpp",
|
||||
"$src/GtkFileChooser.cpp",
|
||||
"$src/GtkMessageDialog.cpp",
|
||||
"$src/JNIUtils.cpp",
|
||||
"$src/X11WmUtils.cpp",
|
||||
)
|
||||
}
|
||||
@@ -173,10 +186,14 @@ tasks {
|
||||
"-o", "$outDir/$libraryName",
|
||||
|
||||
"$objDir/ApiVersion.o",
|
||||
"$objDir/GtkFileChooser.o",
|
||||
"$objDir/GtkMessageDialog.o",
|
||||
"$objDir/JNIUtils.o",
|
||||
"$objDir/X11WmUtils.o",
|
||||
|
||||
"-L${layout.projectDirectory}/lib/aarch64",
|
||||
"-ljawt",
|
||||
"-lgtk-3",
|
||||
)
|
||||
|
||||
doLast {
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
// avoid inlining of printf()
|
||||
#define _NO_CRT_STDIO_INLINE
|
||||
|
||||
#include <dlfcn.h>
|
||||
#include "JNIUtils.h"
|
||||
|
||||
/**
|
||||
@@ -35,3 +36,19 @@ AutoReleaseStringUTF8::~AutoReleaseStringUTF8() {
|
||||
if( chars != NULL )
|
||||
env->ReleaseStringUTFChars( javaString, chars );
|
||||
}
|
||||
|
||||
//---- JNI methods ------------------------------------------------------------
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jboolean JNICALL Java_com_formdev_flatlaf_ui_FlatNativeLinuxLibrary_isLibAvailable
|
||||
( JNIEnv* env, jclass cls, jstring libname )
|
||||
{
|
||||
AutoReleaseStringUTF8 clibname( env, libname );
|
||||
|
||||
void* lib = dlopen( clibname, RTLD_LAZY );
|
||||
if( lib == NULL )
|
||||
return false;
|
||||
|
||||
dlclose( lib );
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -37,6 +37,14 @@ JNIEXPORT jboolean JNICALL Java_com_formdev_flatlaf_ui_FlatNativeLinuxLibrary_xM
|
||||
JNIEXPORT jboolean JNICALL Java_com_formdev_flatlaf_ui_FlatNativeLinuxLibrary_xShowWindowMenu
|
||||
(JNIEnv *, jclass, jobject, jint, jint);
|
||||
|
||||
/*
|
||||
* Class: com_formdev_flatlaf_ui_FlatNativeLinuxLibrary
|
||||
* Method: isLibAvailable
|
||||
* Signature: (Ljava/lang/String;)Z
|
||||
*/
|
||||
JNIEXPORT jboolean JNICALL Java_com_formdev_flatlaf_ui_FlatNativeLinuxLibrary_isLibAvailable
|
||||
(JNIEnv *, jclass, jstring);
|
||||
|
||||
/*
|
||||
* Class: com_formdev_flatlaf_ui_FlatNativeLinuxLibrary
|
||||
* Method: showFileChooser
|
||||
|
||||
Reference in New Issue
Block a user