@@ -8,6 +8,25 @@ Fujisan is a modern Qt5-based frontend for the Atari800 emulator that provides a
88
99## Build System and Common Commands
1010
11+ ### Unified Build Script (Recommended)
12+ ``` bash
13+ # Build for any platform using the unified script
14+ ./build.sh [platform] [options]
15+
16+ # Examples:
17+ ./build.sh macos # Build both Intel and ARM64 DMGs
18+ ./build.sh windows # Cross-compile for Windows
19+ ./build.sh linux # Build Linux packages with Docker/Podman
20+ ./build.sh all --clean # Build all platforms with clean
21+
22+ # All outputs go to dist/ directory:
23+ # - Fujisan-{version}-arm64.dmg (macOS Apple Silicon)
24+ # - Fujisan-{version}-x86_64.dmg (macOS Intel)
25+ # - Fujisan-{version}-windows.zip (Windows)
26+ # - fujisan-{version}-linux-x64.tar.gz (Linux)
27+ # - fujisan_{version}_amd64.deb (Debian/Ubuntu)
28+ ```
29+
1130### Prerequisites Setup
1231``` bash
1332# Set required environment variable (needed for all build operations)
@@ -20,7 +39,7 @@ brew install qt@5 cmake autoconf automake
2039sudo apt install qtbase5-dev cmake build-essential autoconf automake
2140```
2241
23- ### Build Process
42+ ### Manual Build Process
2443``` bash
2544# 1. Apply Fujisan patches to atari800 source
2645cd fujisan/patches
@@ -51,7 +70,7 @@ Fujisan uses Git format-patch files for reliable patching:
5170- Use ` apply-patches.sh ` which auto-detects Git repos and uses appropriate commands
5271- Patches add essential libatari800 API functions for disk management and activity monitoring
5372
54- ### macOS Universal Binary Build
73+ ### macOS Platform-Specific Builds (Recommended)
5574``` bash
5675# Prerequisites: Install Qt5 for both architectures
5776# ARM64 (Apple Silicon):
@@ -60,17 +79,21 @@ brew install qt@5
6079# x86_64 (Intel) - requires Rosetta:
6180arch -x86_64 /usr/local/bin/brew install qt@5
6281
63- # Build universal binary with universal Qt frameworks
64- ./scripts/build-universal- macos-complete .sh
82+ # Build separate DMGs for each platform (recommended approach)
83+ ./scripts/build-macos-separate-dmgs .sh
6584
6685# Options:
6786# --clean Clean build directories before starting
6887# --skip-arm64 Skip ARM64 build (use existing)
6988# --skip-x86_64 Skip x86_64 build (use existing)
70- # --sign Sign the application (requires certificates)
89+ # --skip-dmg Skip DMG creation
7190
72- # Output: dist/Fujisan-{version}-universal.dmg
73- # The DMG contains a universal app bundle that runs natively on both Intel and Apple Silicon Macs
91+ # Output:
92+ # dist/Fujisan-{version}-arm64.dmg - For Apple Silicon Macs
93+ # dist/Fujisan-{version}-x86_64.dmg - For Intel Macs
94+
95+ # Note: Universal binaries with Qt are problematic due to framework
96+ # architecture incompatibilities. Platform-specific builds are more reliable.
7497```
7598
7699### Windows Cross-Compilation (from macOS/Linux)
@@ -191,11 +214,10 @@ Fujisan includes comprehensive FujiNet-PC network connectivity:
191214### Platform-Specific Build Folders
192215- ** macOS** :
193216 - ` build/ ` - Native single-architecture build
194- - ` build-arm64/ ` - ARM64 build for universal binary
195- - ` build-x86_64/ ` - x86_64 build for universal binary
196- - ` build-universal/ ` - Universal binary with both architectures
197- - ` dist/ ` - Final DMG distribution files
198- - ** Windows** : ` build-windows/ ` (cross-compiled release package with all DLLs)
217+ - ` build-arm64/ ` - ARM64 build for platform-specific DMG
218+ - ` build-x86_64/ ` - x86_64 build for platform-specific DMG
219+ - ` dist/ ` - Final distribution files for all platforms
220+ - ** Windows** : ` build-windows/ ` (temporary - gets zipped to dist/)
199221- ** Linux** : ` build/ ` (native build)
200222
201223### Windows Release Package Structure
@@ -216,9 +238,17 @@ build-windows/
216238- ` build/ ` - Native build directory
217239- ` build-arm64/ ` - macOS ARM64 build directory
218240- ` build-x86_64/ ` - macOS x86_64 build directory
219- - ` build-universal/ ` - macOS universal binary directory
220241- ` build-cross-windows/ ` - Windows cross-compilation temp directory
221- - ` build-windows/ ` - Windows release package
222- - ` dist/ ` - Distribution files (DMGs, etc. )
242+ - ` build-windows/ ` - Windows release package (temporary)
243+ - ` dist/ ` - All distribution files (DMGs, ZIPs, DEBs, tarballs )
223244- ` *.exe ` , ` *.dll ` - Binary files
224- - ` *.dmg ` - macOS disk images
245+
246+ ## Distribution and Release Guidelines
247+
248+ ### Unified Distribution Management
249+ - ** Single Distribution Directory** : All platform releases go to ` dist/ `
250+ - ** Consistent Naming** :
251+ - macOS: ` Fujisan-{version}-{arch}.dmg `
252+ - Windows: ` Fujisan-{version}-windows.zip `
253+ - Linux: ` fujisan-{version}-linux-x64.tar.gz ` , ` fujisan_{version}_amd64.deb `
254+ - ** Build Script** : Use ` ./build.sh ` for all platforms to maintain consistency
0 commit comments