From ed66f48c66e167dbae197b6c6ad0677c585d5079 Mon Sep 17 00:00:00 2001 From: sw7ft <149521204+sw7ft@users.noreply.github.com> Date: Wed, 25 Jun 2025 14:36:55 -0700 Subject: [PATCH] Add QuickJS port to ports-wip Add professional QuickJS JavaScript engine port for QNX 8 ARM/BB10: Features: - ES2023 support (Classes, BigInt, Modules, async/await) - GCC 9 optimized pre-compiled binaries (3.8MB) - Web console with touch-optimized BB10 interface - Zero dependencies (no ICU libraries required) - Multiple interfaces (web, shell, ES5 compatibility) Technical: - Uses pre-compiled binaries from GitHub releases - Avoids GCC 4.6.3 limitations in standard toolchain - Superior performance vs standard cross-compilation - Complete deployment package (15MB with libs/headers) Integration: - Compatible with berrymuch package system - Downloads from https://github.com/sw7ft/qnx-packages/releases - Professional documentation and deployment guides This represents a significant improvement over standard JavaScript engines for QNX, providing modern ES2023 features in an optimized package specifically built for BlackBerry 10 devices. --- ports-wip/quickjs/build.sh | 71 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100755 ports-wip/quickjs/build.sh diff --git a/ports-wip/quickjs/build.sh b/ports-wip/quickjs/build.sh new file mode 100755 index 000000000..a018caa0e --- /dev/null +++ b/ports-wip/quickjs/build.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +# QuickJS port for BlackBerry 10 / QNX +# Uses pre-compiled GCC 9 optimized binaries from sw7ft +# Avoids GCC 4.6.3 limitations in berrymuch toolchain + +set -e +source ../../lib.sh + +DISTVER="quickjs-qnx8-arm-deploy" +DISTSUFFIX="tar.gz" +TASK=fetch + +# Use sw7ft's pre-compiled GCC 9 optimized package from GitHub Releases +DISTFILES="https://github.com/sw7ft/qnx-packages/releases/download/v1.0/QuickJS_QNX8_ARM_Deploy.tar.gz" +# Fallback to berrystore during transition: +# DISTFILES="https://berrystore.sw7ft.com/QuickJS_QNX8_ARM_Deploy.tar.gz" +UNPACKCOMD="tar -xzf" + +package_init "$@" + +# Override package_build - no compilation needed, just repackage +package_build() { + if [ "$TASK" == "build" ] + then + echo "Using pre-compiled QuickJS binaries (GCC 9 optimized)..." + cd "$WORKROOT" + + # Extract sw7ft package + if [ ! -d "quickjs_qnx8_deploy" ]; then + echo "Error: quickjs_qnx8_deploy directory not found" + exit 1 + fi + + echo "Repackaging for berrymuch compatibility..." + TASK=install + fi +} + +# Override package_install to use existing directory structure +package_install() { + if [ "$TASK" == "install" ] + then + echo "Installing pre-compiled QuickJS to $DESTDIR" + cd "$WORKROOT/quickjs_qnx8_deploy" + + # Install binaries + mkdir -p "$DESTDIR/$PREFIX/bin" + cp -r bin/* "$DESTDIR/$PREFIX/bin/" + + # Install libraries + mkdir -p "$DESTDIR/$PREFIX/lib" + cp -r lib/* "$DESTDIR/$PREFIX/lib/" + + # Install headers + mkdir -p "$DESTDIR/$PREFIX/include" + cp -r include/* "$DESTDIR/$PREFIX/include/" + + # Install documentation + mkdir -p "$DESTDIR/$PREFIX/share/doc/quickjs" + cp README.md DEPLOY.md "$DESTDIR/$PREFIX/share/doc/quickjs/" 2>/dev/null || true + + TASK=bundle + fi +} + +package_fetch +# Skip package_patch - no patches needed for pre-compiled binaries +package_build +package_install +package_bundle \ No newline at end of file