godot-xterm/docs/setup/building_from_source.md
2024-03-29 19:41:26 +13:00

2.9 KiB

layout title parent nav_order permalink
default Building From Source Setup 2 /setup/building-from-source

Building From Source

Building GodotXterm from source consists of four steps:

  1. Clone git submodules.
  2. Compile libuv using CMake.
  3. Compile godot-cpp using scons.
  4. Compile libtsm and libgodotxterm using scons.

This plugin follows the same format as the GDNative C++ Example. So if you can compile that example then you are 90% of the way there. The main difference is using CMake to compile libuv.

Dependencies

  • Git (to clone git submodules)
  • SCons (a software construction tool)
  • A C/C++ compiler (i.e. gcc, llvm, MSVC)
  • CMake (to compile libuv)

The Easy Way

Run the build script in addons/godot-xterm/native:

cd addons/godot_xterm/native
./build.sh

On Windows you can use git-bash to run this script. Provided the dependencies above are installed then it should "just work™".

Binaries for your platform will be installed in addons/godot_xterm/native/bin.

The build.sh script accepts args --target which can be set to debug (default) or release and --disable-pty to compile only the dependencies of Terminal node and not PTY node (even on platforms that support it).

The Hard Way

If you are having trouble compiling, study the build.sh script and the GitHub actions workflow in main.yml to see what commands are being run and how dependencies are installed. You can also dig into the SConstruct file, and don't forget to refer back to the GDNative C++ Example.

Also feel free to open a new discussion in the discussions section of this project.

Cross Compiling

Although the SConstruct file contains some logic for cross-compiling, it has never been tested. If you want compile for other platforms consider forking this repo and then pushing your changes to GitHub. The workflow defined in main.yml will run and build the library for all supported platforms (Linux, macOS, Windows, and HTML5).

Additionally, If you have docker and docker-compose installed, the build.sh script will also try to build the HTML5 binary inside a docker container and copy them to addons/godot_xterm/native/bin.