Skip to content

Host Support

Taner Sener edited this page Jul 28, 2026 · 3 revisions

Host support means the machine that runs the build scripts. It is separate from the platforms where the generated library can run.

Recommended Nix hosts

Nix is the safest and recommended build path. The Nix wrappers enter a pinned nix develop profile and then call the matching direct script, such as scripts/start-android.sh or scripts/start-ios.sh. This keeps build tools, pkg-config, Autotools, Android SDK/NDK/CMake and other host inputs consistent across machines.

Nix does not make unsupported host combinations valid. Apple platform builds still require macOS with the required Xcode and SDKs installed. Windows and WSL are not recommended host environments for documented builds.

The project flake currently provides local Nix profiles for aarch64-darwin, aarch64-linux, x86_64-darwin and x86_64-linux.

FFmpegKitNext library / output Safe and recommended Nix host Nix wrapper Profile
Android macOS or x86_64 Linux ./nix-android.sh android-r27d
iOS / iPadOS macOS ./nix-ios.sh xcode26
macOS macOS ./nix-macos.sh xcode26
tvOS macOS ./nix-tvos.sh xcode26
visionOS macOS ./nix-visionos.sh xcode26
Apple umbrella xcframework macOS ./nix-apple.sh xcode26
Linux x86_64 or arm64 Linux ./nix-linux.sh Use the profile printed by --list-profiles e.g. linux-arm64-glibc-2_40
Web macOS or Linux ./nix-web.sh web-wasm32-emscripten

Use --list-profiles to see the profiles available on the current host:

./nix-android.sh --list-profiles
./nix-linux.sh --list-profiles

Then pass the selected profile with -p or --profile:

./nix-android.sh -p android-r27d
./nix-ios.sh -p xcode26 -x
./nix-linux.sh -p <profile-from-list>
./nix-web.sh -p web-wasm32-emscripten

Build options are passed after the profile in the same way as the direct scripts:

./nix-android.sh -p android-r27d --enable-libwebp
./nix-macos.sh -p xcode26 --enable-openssl

Use Nix for normal builds, CI builds and when you are diagnosing host tool errors. Use direct scripts only when you intentionally want to use a manually maintained build environment.

Non-Nix host support

The direct scripts remain supported. They are useful when the host already has a known-good toolchain or when you need to debug outside Nix. They are also more sensitive to local PATH, package manager, Android SDK/NDK, Xcode, compiler, pkg-config and Autotools differences.

FFmpegKitNext library / output Direct script Supported non-Nix host
Android ./scripts/start-android.sh Linux, macOS
Android ./scripts/start-android.sh Windows: no 1
iOS / iPadOS ./scripts/start-ios.sh macOS
macOS ./scripts/start-macos.sh macOS
tvOS ./scripts/start-tvos.sh macOS
visionOS ./scripts/start-visionos.sh macOS
Apple umbrella xcframework ./scripts/start-apple.sh macOS 2
Linux ./scripts/start-linux.sh Linux
Web ./scripts/start-web.sh Linux, macOS

Other direct-script host combinations should be treated as unsupported.

1 Building the Android library on native Windows is not officially supported. Some external libraries are not compatible with Windows Subsystem for Linux, maintaining Windows-specific patches is substantial, and Windows does not provide a single standard package manager for the required build prerequisites. Use a supported macOS or Linux host instead.

2 start-apple.sh and nix-apple.sh package existing Apple platform frameworks into an umbrella xcframework. They do not compile iOS, tvOS, macOS or visionOS libraries again. Build the platform-specific Apple frameworks first.

Clone this wiki locally