Movian Build System Documentation
Overview
Movian uses a custom configure-based build system that supports multiple platforms and architectures. The build system is designed to handle cross-compilation, dependency detection, and platform-specific optimizations.
Build System Architecture
graph TB
subgraph "Entry Points"
Configure[./configure]
Autobuild[./Autobuild.sh]
end
subgraph "Platform Detection"
Linux[configure.linux]
OSX[configure.osx]
Android[configure.android]
PS3[configure.ps3]
end
subgraph "Common Configuration"
ConfigInc[support/configure.inc]
ConfigDefault[config.default]
end
subgraph "Build Output"
ConfigMak[build.*/config.mak]
Makefile[Makefile]
Binary[movian binary]
end
Configure --> Linux
Configure --> OSX
Autobuild --> Android
Autobuild --> PS3
Linux --> ConfigInc
OSX --> ConfigInc
Android --> ConfigInc
PS3 --> ConfigInc
ConfigInc --> ConfigDefault
ConfigDefault --> ConfigMak
ConfigMak --> Makefile
Makefile --> Binary
Core Build Files
Main Configuration Scripts
| File |
Purpose |
Platform |
configure |
Main entry point, detects platform |
Linux, macOS |
configure.linux |
Linux-specific configuration |
Linux |
configure.osx |
macOS-specific configuration |
macOS |
configure.android |
Android cross-compilation |
Android |
configure.ps3 |
PlayStation 3 configuration |
PS3 |
configure.rpi |
Raspberry Pi configuration |
Raspberry Pi |
Build Support Files
| File |
Purpose |
support/configure.inc |
Common configuration functions and feature definitions |
config.default |
Default build configuration values |
Makefile |
Main build rules and targets |
Autobuild.sh |
Automated build script for CI/CD |
| Script |
Target Platform |
Description |
Autobuild/android.sh |
Android |
Cross-compilation for Android devices |
Autobuild/debian.sh |
Debian Linux |
Debian package building |
Autobuild/ios.sh |
iOS |
Cross-compilation for iOS devices |
Autobuild/osx.sh |
macOS |
macOS application bundle creation |
Autobuild/ps3.sh |
PlayStation 3 |
PS3 homebrew compilation |
Autobuild/rpi.sh |
Raspberry Pi |
ARM cross-compilation for RPi |
System Dependencies
| Library |
Purpose |
Required |
Notes |
| libfreetype |
Font rendering |
Yes |
TrueType font support |
| libfontconfig |
Font configuration |
Yes |
Font discovery and matching |
| zlib |
Compression |
Yes |
Data compression support |
| libpthread |
Threading |
Yes |
POSIX thread support |
| OpenSSL/PolarSSL |
Cryptography |
Yes |
HTTPS and encryption |
| SQLite |
Database |
Yes |
Settings and metadata storage |
| Library |
Purpose |
Required |
Notes |
| FFmpeg/libav |
Media codecs |
Yes |
Audio/video decoding |
| libpulse |
Audio output |
Linux |
PulseAudio support |
| libasound |
Audio output |
Linux |
ALSA support |
| CoreAudio |
Audio output |
macOS |
Native macOS audio |
UI Dependencies
| Library |
Purpose |
Required |
Notes |
| OpenGL |
Graphics rendering |
Yes |
GLW rendering backend |
| libX11 |
Window system |
Linux |
X11 window management |
| libXext |
X11 extensions |
Linux |
Extended X11 functionality |
| libXv |
Video output |
Linux |
X11 video acceleration |
| libXss |
Screen saver |
Linux |
Screen saver integration |
| VDPAU |
Video acceleration |
Linux |
NVIDIA video acceleration |
Network Dependencies
| Library |
Purpose |
Required |
Notes |
| libcurl |
HTTP client |
Optional |
Alternative HTTP implementation |
| librtmp |
RTMP streaming |
Optional |
Real-time streaming protocol |
| Avahi |
Service discovery |
Optional |
Bonjour/Zeroconf support |
Optional Dependencies
| Library |
Purpose |
Platform |
Notes |
| libwebkit |
Web rendering |
Linux |
HTML content display |
| libcec |
HDMI-CEC |
Linux |
TV remote control |
| lirc |
IR remote |
Linux |
Infrared remote support |
| libntfs |
NTFS support |
Linux |
NTFS filesystem access |
Build Configuration Options
# Basic configuration
./configure --help # Show all options
./configure --release # Release build (optimized)
./configure --debug # Debug build (symbols)
# Installation paths
./configure --prefix=/usr/local # Installation prefix
./configure --bindir=/usr/local/bin # Binary installation directory
./configure --datadir=/usr/share # Data files directory
# Compiler options
./configure --cc=gcc-9 # Specify compiler
./configure --cxx=g++-9 # Specify C++ compiler
./configure --optlevel=3 # Optimization level (0-3)
# Feature control
./configure --disable-webkit # Disable WebKit support
./configure --disable-vdpau # Disable VDPAU acceleration
./configure --enable-bughunt # Enable debugging features
Linux Options
./configure --glw-frontend=x11 # Use X11 frontend (default)
./configure --glw-frontend=none # Disable GLW (headless)
./configure --pkg-config-path=PATH # Additional pkg-config paths
macOS Options
./configure --arch=x86_64 # Target architecture
./configure --macosx-sdk=PATH # macOS SDK path
./configure --release # Stage for release (app bundle)
Cross-Compilation Options
# Android
./Autobuild.sh -t android -v 5.0.500
# Raspberry Pi
./Autobuild.sh -t rpi -v 5.0.500
# PlayStation 3
./Autobuild.sh -t ps3 -v 5.0.500
Feature Configuration System
Feature Flags
The build system uses a comprehensive feature flag system defined in support/configure.inc:
# Core features (always enabled)
enable libpthread
enable zlib
enable libfreetype
enable libfontconfig
# Platform-specific features
if [ "$PLATFORM" = "linux" ]; then
enable libpulse
enable lirc
enable vdpau
fi
if [ "$PLATFORM" = "osx" ]; then
enable coreaudio
enable bonjour
enable spotlight
fi
Available Features
| Feature |
Description |
Default |
glw |
OpenGL Widget UI system |
Enabled |
plugins |
JavaScript plugin support |
Enabled |
httpserver |
Built-in HTTP server |
Enabled |
dvd |
DVD playback support |
Enabled |
bittorrent |
BitTorrent support |
Optional |
airplay |
AirPlay streaming |
Optional |
webpopup |
Web popup windows |
Optional |
Build Targets and Output
Standard Build Targets
make # Build main binary
make clean # Clean build files
make distclean # Clean all generated files
make install # Install to system (requires root)
Linux
make # Creates build.linux/movian
make install # Installs to /usr/local/bin/movian
macOS
make # Creates build.osx/Movian.app
make dist # Creates distributable DMG file
./Autobuild.sh -t rpi # Creates build.rpi/showtime.sqfs
./Autobuild.sh -t ps3 # Creates PS3 homebrew package
Build Directory Structure
build.{platform}/
├── config.mak # Generated build configuration
├── movian # Main executable (Linux)
├── Movian.app/ # Application bundle (macOS)
│ ├── Contents/
│ │ ├── Info.plist
│ │ ├── MacOS/movian
│ │ └── Resources/
├── libmovian.a # Static library (if built)
└── [object files] # Compiled object files
Dependency Detection
Automatic Detection
The configure scripts automatically detect available libraries using several methods:
- pkg-config: Primary method for library detection
- Header checks: Compile tests for header availability
- Library linking: Link tests for library availability
- Feature probing: Runtime capability detection
Manual Override
You can manually specify library locations:
# PKG_CONFIG_PATH for non-standard locations
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
# Direct compiler flags
./configure --extra-cflags="-I/opt/include" --extra-ldflags="-L/opt/lib"
# Disable problematic dependencies
./configure --disable-webkit --disable-vdpau
Version Requirements
Minimum Versions
| Component |
Minimum Version |
Notes |
| GCC |
4.8+ |
C99 and C++11 support required |
| Clang |
3.4+ |
Alternative to GCC |
| Make |
3.81+ |
GNU Make required |
| pkg-config |
0.25+ |
Library detection |
| Python |
2.7+ or 3.x |
Build script support |
Library Versions
| Library |
Minimum Version |
glwcommended |
| FFmpeg |
2.8+ |
4.0+ |
| OpenSSL |
1.0.2+ |
1.1.1+ |
| FreeType |
2.4+ |
2.10+ |
| FontConfig |
2.8+ |
2.13+ |
| PulseAudio |
4.0+ |
12.0+ |
Troubleshooting Build Issues
Common Configuration Problems
Missing Dependencies
# Error: Package 'freetype2' not found
sudo apt-get install libfreetype6-dev
# Error: Package 'fontconfig' not found
sudo apt-get install libfontconfig1-dev
# Error: OpenGL headers not found
sudo apt-get install libgl1-mesa-dev
Compiler Issues
# Use specific compiler version
./configure --cc=gcc-8 --cxx=g++-8
# Add debugging symbols
./configure --optlevel=g --enable-bughunt
# Disable problematic optimizations
./configure --extra-cflags="-fno-omit-frame-pointer"
Cross-Compilation Issues
# Ensure toolchain is in PATH
export PATH="/opt/cross-compiler/bin:$PATH"
# Specify target architecture
./configure --arch=arm --cpu=cortex-a7
# Use system root for libraries
./configure --sysroot=/opt/cross-sysroot
Build Verification
After successful configuration, verify the build setup:
# Check generated configuration
cat build.linux/config.mak
# Verify enabled features
grep "^CONFIG_" build.linux/config.mak
# Test compilation
make -j4
# Verify binary
file build.linux/movian
ldd build.linux/movian # Check library dependencies
Advanced Build Scenarios
Development Builds
For active development with debugging support:
./configure \
--enable-bughunt \
--optlevel=g \
--extra-cflags="-fsanitize=address -fno-omit-frame-pointer" \
--extra-ldflags="-fsanitize=address"
Minimal Builds
For embedded systems with limited resources:
./configure \
--disable-webkit \
--disable-bittorrent \
--disable-airplay \
--disable-httpserver \
--glw-frontend=none
Static Builds
For distribution without external dependencies:
./configure \
--enable-static \
--disable-shared \
--extra-ldflags="-static"
Integration with IDEs
Code::Blocks
- Import Makefile project
- Set build directory to
build.linux/
- Configure custom build commands
CLion
- Open as Makefile project
- Configure toolchain in settings
- Set working directory to project root
Visual Studio Code
- Install C/C++ extension
- Configure
c_cpp_properties.json with include paths
- Set up build tasks in
tasks.json
Source References:
- configure - Main configuration entry point
- support/configure.inc - Common configuration functions
- Makefile - Build rules and targets
- Autobuild/ - Platform-specific build scripts
Accuracy Status: 🟢 Verified from source code analysis
Last Updated: November 2025
Movian Version: 4.8+