# Docker Build System for Palladium Core

## System Requirements

- **Host System**: Ubuntu 20.04+ on x86_64 architecture
- **Docker**: Installed and running ([installation guide](https://docs.docker.com/get-docker/))
- **Disk Space**: At least 15 GB free

## Unified Build Menu (Recommended)

The easiest way to build binaries for one or multiple platforms is using the interactive menu script.

### Usage

```bash
cd docker-build
./build-menu.sh
```

You will be prompted to select the target platforms:
- `1`: Linux x86_64
- `2`: Linux aarch64
- `3`: Linux ARMv7l
- `4`: Windows x86_64
- `5`: Build ALL targets

You can also select multiple targets by separating them with spaces (e.g., `1 4`).

## Linux x86_64

Creates native Linux 64-bit binaries using a Docker container based on Ubuntu 20.04.

### Commands

```bash
cd docker-build                    # Navigate to the docker-build directory
./build-linux-x86_64.sh            # Run the build script
```

### Output

Binaries will be available in `../build/linux-x86_64/`:
- `palladiumd` - Main daemon
- `palladium-cli` - Command-line client
- `palladium-tx` - Transaction utility
- `palladium-wallet` - Wallet utility
- `palladium-qt` - GUI application

## Linux aarch64 (ARM64)

Creates ARM64 binaries for devices like Raspberry Pi 4+ through cross-compilation.

### Commands

```bash
cd docker-build                     # Navigate to the docker-build directory
./build-linux-aarch64.sh            # Run the cross-compilation build script
```

### Output

Binaries will be available in `../build/linux-aarch64/`:
- `palladiumd` - Main daemon
- `palladium-cli` - Command-line client
- `palladium-tx` - Transaction utility
- `palladium-wallet` - Wallet utility
- `palladium-qt` - GUI application

## Linux ARMv7l (ARM 32-bit)

Creates ARM 32-bit binaries for older devices like Raspberry Pi 2/3 and Pi Zero.

### Commands

```bash
cd docker-build                     # Navigate to the docker-build directory
./build-linux-armv7l.sh             # Run the ARMv7l cross-compilation build script
```

### Output

Binaries will be available in `../build/linux-armv7l/`:
- `palladiumd` - Main daemon
- `palladium-cli` - Command-line client
- `palladium-tx` - Transaction utility
- `palladium-wallet` - Wallet utility
- `palladium-qt` - GUI application

## Windows x86_64

Creates Windows executables through cross-compilation with MinGW-w64.

### Commands

```bash
cd docker-build                     # Navigate to the docker-build directory
./build-windows.sh                  # Run the Windows cross-compilation build script
```

### Output

Executables will be available in `../build/windows/`:
- `palladiumd.exe` - Main daemon
- `palladium-cli.exe` - Command-line client
- `palladium-tx.exe` - Transaction utility
- `palladium-wallet.exe` - Wallet utility
- `palladium-qt.exe` - GUI application

### Troubleshooting

```bash
cd docker-build
chmod +x *.sh
```
