diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 5d56bfa..c4328f4 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -36,8 +36,9 @@ jobs: brew install meson llvm build: | export PATH="/opt/homebrew/opt/llvm/bin:$PATH" - export cc=clang - export cxx=clang++ + export CC=clang + export CXX=clang++ + export CMAKE_BUILD_PARALLEL_LEVEL=2 clang --version yarn workspace @napi-rs/image build --target x86_64-apple-darwin --features with_simd - host: windows-latest @@ -86,12 +87,18 @@ jobs: export LIB_AOM_PKG_CONFIG_PATH=/usr/lib/pkgconfig && yarn workspace @napi-rs/image build --target x86_64-unknown-linux-musl --features with_simd && chmod -R 777 target - - host: macos-latest + - host: macos-14 target: aarch64-apple-darwin setup: | - brew install meson + brew install meson llvm build: | - MACOSX_DEPLOYMENT_TARGET=11.0 yarn workspace @napi-rs/image build --target aarch64-apple-darwin --features with_simd + export PATH="/opt/homebrew/opt/llvm/bin:$PATH" + export MACOSX_DEPLOYMENT_TARGET='11.0' + export CMAKE_BUILD_PARALLEL_LEVEL=2 + export CC=clang + export CXX=clang++ + clang --version + yarn workspace @napi-rs/image build --target aarch64-apple-darwin --features with_simd - host: ubuntu-latest target: aarch64-unknown-linux-gnu docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64 @@ -115,6 +122,7 @@ jobs: build: | sudo apt update sudo apt install meson -y + export LDFLAGS="--target=aarch64-linux-android24" yarn workspace @napi-rs/image build --target aarch64-linux-android --features with_simd - host: ubuntu-latest target: aarch64-unknown-linux-musl @@ -134,6 +142,7 @@ jobs: tar -xvf wasi-sdk-21.0-macos.tar.gz build: | export WASI_SDK_PATH="$(pwd)/wasi-sdk-21.0" + export CMAKE_BUILD_PARALLEL_LEVEL=2 yarn workspace @napi-rs/image build --target wasm32-wasi-preview1-threads name: stable - ${{ matrix.settings.target }} - node@20 diff --git a/package.json b/package.json index 49568ce..ff10573 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "website" ], "devDependencies": { - "@napi-rs/cli": "^3.0.0-alpha.40", + "@napi-rs/cli": "^3.0.0-alpha.41", "@taplo/cli": "^0.7.0", "@types/node": "^20.11.16", "@types/sharp": "^0.31.1", diff --git a/packages/binding/index.js b/packages/binding/index.js index beb9a3a..9d35b58 100644 --- a/packages/binding/index.js +++ b/packages/binding/index.js @@ -88,7 +88,7 @@ switch (platform) { } break default: - throw new Error(`Unsupported architecture on Android ${arch}`) + loadError = new Error(`Unsupported architecture on Android ${arch}`) } break case 'win32': @@ -136,7 +136,7 @@ switch (platform) { } break default: - throw new Error(`Unsupported architecture on Windows: ${arch}`) + loadError = new Error(`Unsupported architecture on Windows: ${arch}`) } break case 'darwin': @@ -177,22 +177,37 @@ switch (platform) { } break default: - throw new Error(`Unsupported architecture on macOS: ${arch}`) + loadError = new Error(`Unsupported architecture on macOS: ${arch}`) } break case 'freebsd': - if (arch !== 'x64') { - throw new Error(`Unsupported architecture on FreeBSD: ${arch}`) - } - localFileExisted = existsSync(join(__dirname, 'image.freebsd-x64.node')) - try { - if (localFileExisted) { - nativeBinding = require('./image.freebsd-x64.node') - } else { - nativeBinding = require('@napi-rs/image-freebsd-x64') - } - } catch (e) { - loadError = e + switch (arch) { + case 'x64': + localFileExisted = existsSync(join(__dirname, 'image.freebsd-x64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./image.freebsd-x64.node') + } else { + nativeBinding = require('@napi-rs/image-freebsd-x64') + } + } catch (e) { + loadError = e + } + break + case 'arm64': + localFileExisted = existsSync(join(__dirname, 'image.freebsd-arm64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./image.freebsd-arm64.node') + } else { + nativeBinding = require('@napi-rs/image-freebsd-arm64') + } + } catch (e) { + loadError = e + } + break + default: + loadError = new Error(`Unsupported architecture on FreeBSD: ${arch}`) } break case 'linux': @@ -313,11 +328,11 @@ switch (platform) { } break default: - throw new Error(`Unsupported architecture on Linux: ${arch}`) + loadError = new Error(`Unsupported architecture on Linux: ${arch}`) } break default: - throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`) + loadError = new Error(`Unsupported OS: ${platform}, architecture: ${arch}`) } if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) { diff --git a/packages/binding/package.json b/packages/binding/package.json index e170043..c96a4d7 100644 --- a/packages/binding/package.json +++ b/packages/binding/package.json @@ -64,7 +64,7 @@ }, "repository": "git@github.com:Brooooooklyn/Image.git", "devDependencies": { - "@napi-rs/cli": "^3.0.0-alpha.40", + "@napi-rs/cli": "^3.0.0-alpha.41", "@napi-rs/wasm-runtime": "^0.1.1" } } diff --git a/yarn.lock b/yarn.lock index 8a39d61..3c3d00a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -540,9 +540,9 @@ __metadata: languageName: node linkType: hard -"@napi-rs/cli@npm:^3.0.0-alpha.40": - version: 3.0.0-alpha.40 - resolution: "@napi-rs/cli@npm:3.0.0-alpha.40" +"@napi-rs/cli@npm:^3.0.0-alpha.41": + version: 3.0.0-alpha.41 + resolution: "@napi-rs/cli@npm:3.0.0-alpha.41" dependencies: "@napi-rs/cross-toolchain": "npm:^0.0.14" "@octokit/rest": "npm:^20.0.2" @@ -570,7 +570,7 @@ __metadata: bin: napi: dist/cli.js napi-raw: cli.mjs - checksum: 10c0/0eaa113258b7429794253c7f27866944018dfe05abc85681f6db969101b75acb583189ce4523d0e1863e735648af317a646c3f3914895a0ae951879de135e135 + checksum: 10c0/49e0b1536944e272252f05dcb2fcc85c8e25daa2883d7515ce622474787de2c71252fb8465bf24eb19c1cb4bde9c366b49ebb5a0309fcf1f416946cb1c1a0979 languageName: node linkType: hard @@ -615,7 +615,7 @@ __metadata: version: 0.0.0-use.local resolution: "@napi-rs/image@workspace:packages/binding" dependencies: - "@napi-rs/cli": "npm:^3.0.0-alpha.40" + "@napi-rs/cli": "npm:^3.0.0-alpha.41" "@napi-rs/wasm-runtime": "npm:^0.1.1" languageName: unknown linkType: soft @@ -5543,7 +5543,7 @@ __metadata: version: 0.0.0-use.local resolution: "image@workspace:." dependencies: - "@napi-rs/cli": "npm:^3.0.0-alpha.40" + "@napi-rs/cli": "npm:^3.0.0-alpha.41" "@taplo/cli": "npm:^0.7.0" "@types/node": "npm:^20.11.16" "@types/sharp": "npm:^0.31.1"