migration start
Some checks failed
CI - Multi-Platform Native / Build iOS (RSSuper) (push) Has been cancelled
CI - Multi-Platform Native / Build macOS (push) Has been cancelled
CI - Multi-Platform Native / Build Android (push) Has been cancelled
CI - Multi-Platform Native / Build Linux (push) Has been cancelled
CI - Multi-Platform Native / Build Summary (push) Has been cancelled

This commit is contained in:
2026-03-29 14:12:17 -04:00
parent af87f9f571
commit d346b527e6
51 changed files with 4476 additions and 69 deletions

279
scripts/build.sh Executable file
View File

@@ -0,0 +1,279 @@
#!/bin/bash
# RSSuper Multi-Platform Build Script
# Main entry point for building all platforms
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
# Source common utilities
source "$SCRIPT_DIR/common.sh"
# Default values
PLATFORMS="all"
BUILD_TYPE="debug"
ACTION="build"
RUN_TESTS=false
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
# Show help
show_help() {
cat << EOF
RSSuper Multi-Platform Build System
Usage: $0 [OPTIONS]
Options:
-p, --platforms PLATFORMS Comma-separated platforms (ios,android,linux) or 'all' [Default: all]
-t, --type TYPE Build type (debug|release) [Default: debug]
-a, --action ACTION Action to perform (build|test|clean|install) [Default: build]
--test Run tests after build
-h, --help Show this help message
Platforms:
ios iOS/macOS (requires macOS)
android Android
linux Linux (GTK4)
Examples:
$0 # Build all platforms in debug mode
$0 -p ios,android -t release # Build iOS and Android in release mode
$0 -p linux --test # Build and test Linux version
$0 -a clean # Clean all platforms
$0 -p ios -a install # Install iOS app to simulator
EOF
}
# Parse arguments
while [[ $# -gt 0 ]]; do
case $1 in
-p|--platforms)
PLATFORMS="$2"
shift 2
;;
-t|--type)
BUILD_TYPE="$2"
shift 2
;;
-a|--action)
ACTION="$2"
shift 2
;;
--test)
RUN_TESTS=true
shift
;;
-h|--help)
show_help
exit 0
;;
*)
echo "Unknown option: $1"
show_help
exit 1
;;
esac
done
# Track build results
declare -A BUILD_RESULTS
TOTAL_PLATFORMS=0
SUCCESSFUL_BUILDS=0
# Build iOS/macOS
build_ios() {
log_info "Building iOS/macOS..."
if [[ "$OSTYPE" != "darwin"* ]]; then
log_warning "iOS/macOS build requires macOS. Skipping."
BUILD_RESULTS["ios"]="skipped"
return 0
fi
cd "$PROJECT_ROOT"
case "$ACTION" in
clean)
"$SCRIPT_DIR/build-ios.sh" clean
;;
test)
"$SCRIPT_DIR/build-ios.sh" "$BUILD_TYPE" ios "generic/platform=iOS" test
;;
build|*)
if "$SCRIPT_DIR/build-ios.sh" "$BUILD_TYPE" ios "generic/platform=iOS" build; then
BUILD_RESULTS["ios"]="success"
((SUCCESSFUL_BUILDS++)) || true
else
BUILD_RESULTS["ios"]="failed"
fi
if [ "$RUN_TESTS" = true ]; then
log_info "Running iOS tests..."
"$SCRIPT_DIR/build-ios.sh" "$BUILD_TYPE" ios "generic/platform=iOS" test || true
fi
;;
esac
}
# Build Android
build_android() {
log_info "Building Android..."
cd "$PROJECT_ROOT"
case "$ACTION" in
clean)
"$SCRIPT_DIR/build-android.sh" "$BUILD_TYPE" clean
;;
test)
"$SCRIPT_DIR/build-android.sh" "$BUILD_TYPE" test
;;
build|*)
if "$SCRIPT_DIR/build-android.sh" "$BUILD_TYPE" assemble; then
BUILD_RESULTS["android"]="success"
((SUCCESSFUL_BUILDS++)) || true
else
BUILD_RESULTS["android"]="failed"
fi
if [ "$RUN_TESTS" = true ]; then
log_info "Running Android tests..."
"$SCRIPT_DIR/build-android.sh" "$BUILD_TYPE" test || true
fi
;;
esac
}
# Build Linux
build_linux() {
log_info "Building Linux..."
cd "$PROJECT_ROOT"
case "$ACTION" in
clean)
"$SCRIPT_DIR/build-linux.sh" "$BUILD_TYPE" clean
;;
test)
"$SCRIPT_DIR/build-linux.sh" "$BUILD_TYPE" test
;;
build|*)
if "$SCRIPT_DIR/build-linux.sh" "$BUILD_TYPE" build; then
BUILD_RESULTS["linux"]="success"
((SUCCESSFUL_BUILDS++)) || true
else
BUILD_RESULTS["linux"]="failed"
fi
if [ "$RUN_TESTS" = true ]; then
log_info "Running Linux tests..."
"$SCRIPT_DIR/build-linux.sh" "$BUILD_TYPE" test || true
fi
;;
esac
}
# Print build summary
print_summary() {
echo ""
log_info "=== Build Summary ==="
echo ""
printf "%-12s | %-10s | %s\n" "Platform" "Status" "Details"
printf "%-12s-+-%-10s-+-%s\n" "------------" "----------" "-------"
for platform in "${!BUILD_RESULTS[@]}"; do
local status="${BUILD_RESULTS[$platform]}"
local status_symbol=""
case "$status" in
success)
status_symbol="✅"
;;
failed)
status_symbol="❌"
;;
skipped)
status_symbol="⏭️"
;;
esac
printf "%-12s | %-10s | %s\n" "$platform" "$status" "$status_symbol"
done
echo ""
echo "Total: $SUCCESSFUL_BUILDS / ${#BUILD_RESULTS[@]} platforms built successfully"
echo ""
}
# Main
echo "========================================"
echo " RSSuper Multi-Platform Build System"
echo "========================================"
echo ""
echo "Configuration:"
echo " Platforms: $PLATFORMS"
echo " Build Type: $BUILD_TYPE"
echo " Action: $ACTION"
echo " Run Tests: $RUN_TESTS"
echo ""
# Convert platforms string to array
IFS=',' read -ra PLATFORM_ARRAY <<< "$PLATFORMS"
# Build each platform
for platform in "${PLATFORM_ARRAY[@]}"; do
platform=$(echo "$platform" | xargs) # Trim whitespace
((TOTAL_PLATFORMS++)) || true
case "$platform" in
all)
build_ios
build_android
build_linux
((TOTAL_PLATFORMS+=2)) || true # Add extra platforms
;;
ios)
build_ios
;;
android)
build_android
;;
linux)
build_linux
;;
*)
log_error "Unknown platform: $platform"
exit 1
;;
esac
done
# Print summary
print_summary
# Exit with error if any builds failed
if [ "$SUCCESSFUL_BUILDS" -lt "${#BUILD_RESULTS[@]}" ]; then
# Filter out skipped builds
local actual_builds=0
for result in "${BUILD_RESULTS[@]}"; do
if [ "$result" != "skipped" ]; then
((actual_builds++)) || true
fi
done
if [ "$SUCCESSFUL_BUILDS" -lt "$actual_builds" ]; then
log_error "Some builds failed"
exit 1
fi
fi
log_success "All builds completed successfully!"