Skip to content

Commit 2058e99

Browse files
committed
Consolidate build system with unified build.sh script
- Add build.sh: single script for all platform builds - All outputs now go to unified dist/ directory - Remove redundant build scripts and Windows distribution folders - Update documentation to reflect simplified build process - Clean up .gitignore to exclude temporary scripts - Maintain single source of truth for distribution binaries
1 parent fd2481f commit 2058e99

File tree

6 files changed

+379
-416
lines changed

6 files changed

+379
-416
lines changed

.gitignore

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,13 @@ build-cross-windows/
1010
build-windows/
1111
build-linux/
1212
build-package/
13+
14+
# Distribution output directory (all platforms)
1315
dist/
16+
17+
# Legacy distribution directories (to be removed)
1418
windows-release/
19+
windows-release-led-fixed/
1520

1621
# Qt generated files
1722
*.pro.user
@@ -65,6 +70,15 @@ Desktop.ini
6570
*.tmp
6671
*.temp
6772

73+
# Temporary build scripts (to be removed after consolidation)
74+
cleanup-and-finalize-windows.sh
75+
create-fixed-release.sh
76+
create-windows-release-with-fixes.sh
77+
manual-rebuild.sh
78+
rebuild-windows-fixed.sh
79+
rebuild-windows-step-by-step.sh
80+
test-windows-fixes.sh
81+
6882
# Test and development files
6983
*.log
7084
test_*.json

BUILD_INSTRUCTIONS.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
This document provides comprehensive instructions for building Fujisan on all supported platforms.
44

55
## Table of Contents
6+
- [Quick Start - Unified Build Script](#quick-start---unified-build-script)
67
- [Prerequisites](#prerequisites)
78
- [macOS Builds](#macos-builds)
89
- [Native Single-Architecture Build](#native-single-architecture-build)
@@ -13,6 +14,30 @@ This document provides comprehensive instructions for building Fujisan on all su
1314
- [Linux Build](#linux-build)
1415
- [Build Scripts Reference](#build-scripts-reference)
1516

17+
## Quick Start - Unified Build Script
18+
19+
The easiest way to build Fujisan for any platform:
20+
21+
```bash
22+
# Build for specific platform
23+
./build.sh macos # Both Intel and ARM64 DMGs
24+
./build.sh windows # Windows ZIP package
25+
./build.sh linux # Linux DEB and tarball
26+
./build.sh all # All platforms
27+
28+
# Options
29+
./build.sh macos --clean # Clean build
30+
./build.sh all --version v1.2.0 # Specify version
31+
32+
# All outputs go to dist/
33+
ls dist/
34+
# Fujisan-1.2.0-arm64.dmg
35+
# Fujisan-1.2.0-x86_64.dmg
36+
# Fujisan-1.2.0-windows.zip
37+
# fujisan-1.2.0-linux-x64.tar.gz
38+
# fujisan_1.2.0_amd64.deb
39+
```
40+
1641
## Prerequisites
1742

1843
### All Platforms

CLAUDE.md

Lines changed: 46 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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
2039
sudo 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
2645
cd 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:
6180
arch -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

Comments
 (0)