Files
Karl Tauber f2882370de GitHub Actions: natives.yml:
- disabled cross-compile for arm64 architecture on x86_64 Linux
- use `apt-get` instead of `apt`
- use long command line options for `codesign`
2025-06-13 14:33:54 +02:00

2.1 KiB

FlatLaf Linux Native Library

This sub-project contains the source code for the FlatLaf Linux native library.

The native library can be built only on Linux and requires a C++ compiler.

The native library is available for following CPU architectures: x86_64 (or amd64) and arm64 (or aarch64).

To be able to build FlatLaf on any platform, and without C++ compiler, the pre-built native libraries are checked into Git at flatlaf-core/src/main/resources/com/formdev/flatlaf/natives/.

The native libraries were built on a GitHub server with the help of GitHub Actions. See: Native Libraries workflow. Then the produced Artifacts ZIP was downloaded and the native library checked into Git.

Development

To build the library on Linux, some packages needs to be installed:

  • build-essential - GCC and development tools
  • libxt-dev - X11 toolkit development headers
  • libgtk-3-dev - GTK 3 toolkit development headers
  • g++-aarch64-linux-gnu - GNU C++ compiler for the arm64 architecture (only on x86_64 Linux for cross-compiling for arm64 architecture)

Ubuntu

sudo apt-get update
sudo apt-get install build-essential libxt-dev libgtk-3-dev

Cross-compile for arm64 architecture on x86_64 Linux

Only needed on x86_64 Linux if you want cross-compile for arm64 architecture:

sudo apt-get 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

sudo dnf group install c-development
sudo dnf install libXt-devel gtk3-devel

CentOS

sudo yum install libXt-devel gtk3-devel