diff --git a/.cargo/config.toml b/.cargo/config.toml index 817b564..4afff66 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -2,3 +2,5 @@ rustflags = ["-C", "target-feature=-crt-static"] [target.aarch64-unknown-linux-musl] rustflags = ["-C", "target-feature=-crt-static"] +[target.arm-unknown-linux-musleabihf] +rustflags = ["-C", "target-feature=-crt-static"] diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dc83872..a9184a1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -107,7 +107,7 @@ jobs: strategy: fail-fast: false matrix: - target: [x86_64-unknown-linux-gnu, x86_64-unknown-linux-musl, aarch64-unknown-linux-gnu, aarch64-unknown-linux-musl] + target: [x86_64-unknown-linux-gnu, x86_64-unknown-linux-musl, aarch64-unknown-linux-gnu, aarch64-unknown-linux-musl, arm-unknown-linux-gnueabihf, arm-unknown-linux-musleabihf] runs-on: ubuntu-latest permissions: contents: write diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 0a0aef7..a6fd893 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -84,7 +84,7 @@ jobs: name: Builds (other platforms) strategy: matrix: - target: [x86_64-unknown-linux-gnu, x86_64-unknown-linux-musl, aarch64-unknown-linux-gnu, aarch64-unknown-linux-musl] + target: [x86_64-unknown-linux-gnu, x86_64-unknown-linux-musl, aarch64-unknown-linux-gnu, aarch64-unknown-linux-musl, arm-unknown-linux-gnueabihf, arm-unknown-linux-musleabihf] runs-on: ubuntu-latest permissions: contents: write diff --git a/index.js b/index.js index 253d7e9..9af6ba5 100644 --- a/index.js +++ b/index.js @@ -1,7 +1,7 @@ "use strict"; const { load, currentTarget } = require("@neon-rs/load"); -const { familySync, GLIBC } = require("detect-libc"); +const { familySync, GLIBC, MUSL } = require("detect-libc"); function requireNative() { if (process.env.LIBSQL_JS_DEV) { @@ -11,14 +11,18 @@ function requireNative() { // Workaround for Bun, which reports a musl target, but really wants glibc... if (familySync() == GLIBC) { switch (target) { - case "linux-x64-musl": - target = "linux-x64-gnu"; - break; - case "linux-arm64-musl": - target = "linux-arm64-gnu"; - break; + case "linux-x64-musl": + target = "linux-x64-gnu"; + break; + case "linux-arm64-musl": + target = "linux-arm64-gnu"; + break; } } + // @neon-rs/load doesn't detect arm musl + if (target === "linux-arm-gnueabihf" && familySync() == MUSL) { + target = "linux-arm-musleabihf"; + } return require(`@libsql/${target}`); } diff --git a/package.json b/package.json index cbe6cb6..3d35092 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ "cpu": [ "x64", "arm64", - "wasm32" + "wasm32", + "arm" ], "main": "index.js", "types": "types/index.d.ts", @@ -50,7 +51,9 @@ "x86_64-apple-darwin": "@libsql/darwin-x64", "x86_64-pc-windows-msvc": "@libsql/win32-x64-msvc", "x86_64-unknown-linux-gnu": "@libsql/linux-x64-gnu", - "x86_64-unknown-linux-musl": "@libsql/linux-x64-musl" + "x86_64-unknown-linux-musl": "@libsql/linux-x64-musl", + "arm-unknown-linux-gnueabihf": "@libsql/linux-arm-gnueabihf", + "arm-unknown-linux-musleabihf": "@libsql/linux-arm-musleabihf" } }, "repository": { diff --git a/promise.js b/promise.js index c5b02e3..487bb89 100644 --- a/promise.js +++ b/promise.js @@ -1,7 +1,7 @@ "use strict"; const { load, currentTarget } = require("@neon-rs/load"); -const { familySync, GLIBC } = require("detect-libc"); +const { familySync, GLIBC, MUSL } = require("detect-libc"); // Static requires for bundlers. if (0) { @@ -25,13 +25,17 @@ function requireNative() { // Workaround for Bun, which reports a musl target, but really wants glibc... if (familySync() == GLIBC) { switch (target) { - case "linux-x64-musl": - target = "linux-x64-gnu"; - break; - case "linux-arm64-musl": - target = "linux-arm64-gnu"; - break; - } + case "linux-x64-musl": + target = "linux-x64-gnu"; + break; + case "linux-arm64-musl": + target = "linux-arm64-gnu"; + break; + } + } + // @neon-rs/load doesn't detect arm musl + if (target === "linux-arm-gnueabihf" && familySync() == MUSL) { + target = "linux-arm-musleabihf"; } return require(`@libsql/${target}`); }