Files
rlogg/BUILD.md

211 lines
4.4 KiB
Markdown

# Building RLogg
This document describes how to build RLogg for different platforms.
## Quick Start
**On Linux, you can build for all platforms including Windows:**
```bash
./cross-compile.sh all
```
This uses Docker-based cross-compilation, so no Windows tools needed!
## Prerequisites
- Rust toolchain (install from https://rustup.rs/)
- Platform-specific dependencies (see below)
- For cross-compilation: Docker (for the `cross` tool)
## Platform-Specific Dependencies
### Linux
```bash
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libxcb-render0-dev libxcb-shape0-dev \
libxcb-xfixes0-dev libxkbcommon-dev libssl-dev
```
### macOS
No additional dependencies required. Xcode Command Line Tools should be installed.
### Windows
No additional dependencies required. Visual Studio Build Tools or Visual Studio with C++ development tools should be installed.
## Quick Build
### Development Build
```bash
cargo build
```
### Release Build (Optimized)
```bash
cargo build --release
```
The binary will be in `target/release/rlogg` (or `rlogg.exe` on Windows).
## Multi-Platform Builds
### Using Build Scripts
#### Linux/macOS
```bash
./build-release.sh
```
#### Windows
```powershell
.\build-release.ps1
```
The built binaries will be in the `dist/` directory.
### Manual Cross-Compilation
#### Install Target
```bash
# For Linux
rustup target add x86_64-unknown-linux-gnu
# For Windows
rustup target add x86_64-pc-windows-msvc
# For macOS x86_64
rustup target add x86_64-apple-darwin
# For macOS ARM (M1/M2)
rustup target add aarch64-apple-darwin
```
#### Build for Specific Target
```bash
cargo build --release --target <target-triple>
```
Examples:
```bash
# Linux
cargo build --release --target x86_64-unknown-linux-gnu
# Windows
cargo build --release --target x86_64-pc-windows-msvc
# macOS Intel
cargo build --release --target x86_64-apple-darwin
# macOS Apple Silicon
cargo build --release --target aarch64-apple-darwin
```
## GitHub Actions (Automated Builds)
The project includes GitHub Actions workflow that automatically builds for all platforms:
- Linux x86_64
- Windows x86_64
- macOS x86_64 (Intel)
- macOS aarch64 (Apple Silicon)
### Triggering Builds
- **Push to master/main**: Builds all platforms and uploads artifacts
- **Pull Request**: Runs build checks
- **Release**: Builds and attaches binaries to the GitHub release
### Creating a Release
1. Tag your commit:
```bash
git tag -a v0.1.0 -m "Release v0.1.0"
git push origin v0.1.0
```
2. Create a release on GitHub from the tag
3. GitHub Actions will automatically build and attach binaries
## Optimizing Binary Size
To reduce the binary size, you can use these settings in `Cargo.toml`:
```toml
[profile.release]
opt-level = "z" # Optimize for size
lto = true # Enable Link Time Optimization
codegen-units = 1 # Better optimization
strip = true # Strip symbols
```
Or build with:
```bash
cargo build --release
strip target/release/rlogg # On Linux/macOS
```
## Troubleshooting
### Linux: Missing libraries
Make sure all required development libraries are installed:
```bash
sudo apt-get install -y libgtk-3-dev libxcb-render0-dev libxcb-shape0-dev \
libxcb-xfixes0-dev libxkbcommon-dev libssl-dev
```
### macOS: Code signing issues
If you encounter code signing errors, you can sign the binary:
```bash
codesign --force --deep --sign - target/release/rlogg
```
### Windows: MSVC not found
Install Visual Studio Build Tools with C++ development tools, or install full Visual Studio.
### Cross-compilation from Linux to Windows
#### Method 1: Using the cross-compile script (Recommended)
```bash
# Interactive mode
./cross-compile.sh
# Or specify target directly
./cross-compile.sh windows # Windows (MinGW)
./cross-compile.sh all # All platforms
```
**Note**: Only MinGW/GNU target is supported for cross-compilation from Linux. MSVC requires Windows.
#### Method 2: Manual with 'cross'
Install `cross` and build:
```bash
cargo install cross --git https://github.com/cross-rs/cross
cross build --release --target x86_64-pc-windows-msvc
```
The `cross` tool uses Docker to provide a complete cross-compilation environment, so you don't need to install Windows-specific tools.
## Running Tests
```bash
cargo test
```
## Running in Development Mode
```bash
cargo run
```
## Checking Code
```bash
# Check for errors without building
cargo check
# Run linter
cargo clippy
# Format code
cargo fmt
```