Skip to main content

Requirements

Phoenix Engine compiles with the standard Haxe/Lime toolchain. Everything below is installed once per machine; after that, building is a single lime test command.

Core toolchain​

ToolVersionNotes
Haxe4.2.5 or newerCI builds with 4.3.x. The repo contains an UPDATE HAXE TO 4.3.7.txt note — 4.3.7 is the recommended version.
Haxelibships with HaxeRun haxelib setup once before anything else.
Gitany recent versionSeveral dependencies are installed straight from Git.
Node.js20+Only needed to build this documentation site.

On macOS and Linux you usually have to create the haxelib folder yourself:

mkdir ~/haxelib && haxelib setup ~/haxelib

Per-platform prerequisites​

Windows​

  • Visual Studio Community with the C++ desktop workload. The two components that matter are Microsoft.VisualStudio.Component.VC.Tools.x86.x64 and Microsoft.VisualStudio.Component.Windows10SDK.19041:

    vs_Community.exe --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 `
    --add Microsoft.VisualStudio.Component.Windows10SDK.19041 -p
  • If hxcpp picks the wrong MSVC toolchain, the repo ships setup/windows-msvc-fix.ps1 / setup/windows-msvc.bat; see Troubleshooting.

Linux​

  • g++ (package name varies: g++ on Debian/Ubuntu, gcc-c++ on Fedora, sys-devel/gcc on Gentoo).
  • VLC / libvlc development packages — video playback goes through hxvlc.
  • Optional: gamemode (Feral GameMode) to benefit from the GAMEMODE_ALLOWED feature.

macOS​

  • Xcode command line tools (xcode-select --install).

Android​

  • Android SDK + NDK, configured through lime setup android.
  • A JDK compatible with the Gradle version Lime generates.
  • project.hxp registers a pre-build callback (configureAndroidRuntime) that runs setup/android-copy-stl.sh (.bat on Windows) to copy libc++_shared.so out of the NDK into the APK — this is required, see Troubleshooting.

iOS​

  • Xcode with a working toolchain. CI builds unsigned with lime build ios -nosign.

Flash / AIR​

  • Flash and AIR targets require -D disable-version-check.
  • AIR additionally needs -DAIR_SDK=<path to the AIR SDK>.

Haxe libraries​

Dependencies are declared in hmm.json and installed by the setup scripts (setup/windows.bat or setup/unix.sh). Several of them are forks pinned to JS-Engine-things/* repositories rather than the public haxelib releases:

LibrarySourceRole
limeJS-Engine-things/lime-8.1.2windowing, assets, native backend
openflJS-Engine-things/openfldisplay list, rendering
flixelJS-Engine-things/flixel-JS-Enginegame framework
flixel-addons 3.2.3, flixel-ui 2.6.0, flixel-toolshaxelibeffects and editor UI
hxcppJS-Engine-things/hxcpp (main)C++ target backend
hxphaxelibruns project.hxp
hxvlcJS-Engine-things/hxvlcvideo playback
hxluajitShadowEngineTeam/hxluajitLua/LuaJIT VM
hython 0.0.352-betahaxelibpure-Haxe Python interpreter
hscript-improvedCodenameCrew/hscript-improved (48ec0f4)HScript runtime
flxanimateDot-Stuff/flxanimate (pinned commit)Adobe Animate atlases
hxdiscord_rpcMAJigsaw77/hxdiscord_rpcDiscord Rich Presence
funkin.vis + grig.audioJS-Engine-things/* forksspectrum analyzer (A-Bot speaker)
tjsonmoxie-coder/tjsontolerant JSON parsing
hxnativefiledialogMAJigsaw77/hxnativefiledialognative file dialogs
hxgamemodehaxelibFeral GameMode on Linux
hxcpp-debug-serverhaxelibVS Code debugging
Pinned versions matter

Because several libraries are forks, a plain haxelib install <lib> can silently switch the active version away from the fork (this is the classic hxcpp failure described in BUILDING.md). If a build suddenly breaks after installing an unrelated library, check haxelib list and re-run the setup script.

Cloning​

Clone only the main branch — the other branches are experiments or very old:

git clone -b main --single-branch https://github.com/havaianasdestruido/FNF-Phoenix-Engine.git