Skip to content

Commit b695642

Browse files
authored
fix(binding): early return when input images are optimized (#28)
* fix(binding): early return when input images are optimized * ci: fix builds * Fix build * target feature * Remove inline * Thin lto * Use GCC
1 parent 8359de1 commit b695642

File tree

11 files changed

+1340
-1260
lines changed

11 files changed

+1340
-1260
lines changed

.cargo/config.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1+
[target.i686-pc-windows-msvc]
2+
rustflags = ["-C", "target-feature=+sse4.2"]
3+
[target.x86_64-unknown-linux-gnu]
4+
rustflags = ["-C", "target-feature=+sse4.2"]
15
[target.x86_64-unknown-linux-musl]
26
rustflags = ["-C", "target-feature=-crt-static"]
37
[target.aarch64-unknown-linux-gnu]
4-
linker = "aarch64-linux-gnu-gcc"
8+
rustflags = ["-C", "target-feature=+crc"]
59
[target.aarch64-unknown-linux-musl]
610
linker = "aarch64-linux-musl-gcc"
711
rustflags = ["-C", "target-feature=-crt-static"]

.github/workflows/CI.yml

Lines changed: 40 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,27 @@ jobs:
3636
choco install meson -y
3737
yarn workspace @napi-rs/image build --features with_simd
3838
target: x86_64-pc-windows-msvc
39-
- host: windows-2022-xl
39+
- host: ubuntu-latest
40+
setup: |
41+
sudo apt update
42+
sudo apt install meson -y
43+
cargo install cargo-xwin
4044
build: |
41-
$Env:PATH="C:\Cargo\bin;$Env:PATH"
42-
$Env:LIBAVIF_CROSS_WIN32=1
45+
export XWIN_ARCH=x86
46+
export CFLAGS="-msse4.2"
47+
export CXXFLAGS="-msse4.2"
4348
yarn workspace @napi-rs/image build --features with_simd --target i686-pc-windows-msvc
44-
node -e "console.log(process.arch)"
45-
yarn test
4649
target: i686-pc-windows-msvc
4750
- host: ubuntu-latest
4851
target: x86_64-unknown-linux-gnu
49-
architecture: x64
5052
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian
51-
build: |
52-
set -e && \
53-
apt install meson -y && \
54-
yarn workspace @napi-rs/image build --features with_simd --target x86_64-unknown-linux-gnu && \
55-
strip packages/*/*.node
53+
build: >-
54+
set -e &&
55+
apt-get update &&
56+
apt-get install meson -y &&
57+
unset LDFLAGS &&
58+
CXX_x86_64_unknown_linux_gnu=g++ CC_x86_64_unknown_linux_gnu=gcc yarn workspace @napi-rs/image build --features with_simd --target x86_64-unknown-linux-gnu &&
59+
llvm-strip packages/*/*.node
5660
- host: ubuntu-latest
5761
target: x86_64-unknown-linux-musl
5862
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
@@ -73,17 +77,17 @@ jobs:
7377
brew install meson
7478
yarn workspace @napi-rs/image build --features with_simd
7579
strip -x packages/*/*.node
76-
- host: ubuntu-18.04
77-
architecture: x64
80+
- host: ubuntu-latest
7881
target: aarch64-unknown-linux-gnu
79-
setup: |
80-
sudo apt-get update
81-
sudo apt-get install meson g++-aarch64-linux-gnu gcc-aarch64-linux-gnu -y
82-
build: |
83-
yarn workspace @napi-rs/image build --features with_simd
84-
aarch64-linux-gnu-strip packages/*/*.node
82+
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64
83+
build: >-
84+
set -e &&
85+
export LDFLAGS="-L/usr/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/4.8.5" &&
86+
export CFLAGS="-fuse-ld=lld -mcrc -B/usr/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/4.8.5 --sysroot=/usr/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot" &&
87+
export CXXFLAGS="-fuse-ld=lld -mcrc -B/usr/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/4.8.5 --sysroot=/usr/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot" &&
88+
yarn workspace @napi-rs/image build --features with_simd --target aarch64-unknown-linux-gnu &&
89+
llvm-strip packages/*/*.node
8590
- host: ubuntu-18.04
86-
architecture: x64
8791
target: armv7-unknown-linux-gnueabihf
8892
setup: |
8993
sudo apt-get update
@@ -92,34 +96,22 @@ jobs:
9296
yarn workspace @napi-rs/image build --features oxipng_libdeflater
9397
arm-linux-gnueabihf-strip packages/*/*.node
9498
- host: ubuntu-latest
95-
architecture: x64
9699
target: aarch64-linux-android
97100
build: |
98101
sudo apt update
99102
sudo apt install meson -y
100-
export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang"
101-
export CC="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang"
102-
export CXX="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang++"
103-
export AR="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar"
104-
export PATH="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:${PATH}"
105103
yarn workspace @napi-rs/image build --features with_simd
106104
${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip packages/*/*.node
107105
- host: ubuntu-latest
108-
architecture: x64
109106
target: armv7-linux-androideabi
110107
build: |
111108
sudo apt update
112109
sudo apt install meson -y
113-
export CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang"
114-
export CC="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang"
115-
export CXX="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang++"
116-
export AR="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar"
117-
export PATH="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:${PATH}"
118-
export C_INCLUDE_PATH="${ANDROID_NDK_LATEST_HOME}/sources/android/cpufeatures";
110+
export C_INCLUDE_PATH="${ANDROID_NDK_LATEST_HOME}/sources/android/cpufeatures";
111+
export CMAKE_TOOLCHAIN_FILE_armv7_linux_androideabi="${ANDROID_NDK_LATEST_HOME}/build/cmake/android.toolchain.cmake";
119112
yarn workspace @napi-rs/image build --features oxipng_libdeflater
120113
${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip packages/*/*.node
121114
- host: ubuntu-latest
122-
architecture: x64
123115
target: aarch64-unknown-linux-musl
124116
downloadTarget: aarch64-unknown-linux-musl
125117
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
@@ -148,7 +140,6 @@ jobs:
148140
if: matrix.settings.target == 'x86_64-pc-windows-msvc' || matrix.settings.target == 'x86_64-apple-darwin' || matrix.settings.target == 'i686-pc-windows-msvc'
149141
- name: Install
150142
uses: actions-rs/toolchain@v1
151-
if: matrix.settings.target != 'i686-pc-windows-msvc'
152143
with:
153144
profile: minimal
154145
override: true
@@ -163,29 +154,22 @@ jobs:
163154
~/.cargo/git/db/
164155
.cargo-cache
165156
target/
166-
key: ${{ matrix.settings.target }}-cargo-registry
167-
- name: Cache NPM dependencies
168-
uses: actions/cache@v3
157+
key: ${{ matrix.settings.target }}-cargo-cache
158+
- uses: goto-bus-stop/setup-zig@v2
159+
if: ${{ matrix.settings.target == 'aarch64-unknown-linux-gnu' }}
169160
with:
170-
path: .yarn/cache
171-
key: npm-cache-${{ matrix.settings.target }}-node@16
161+
version: 0.10.0
162+
- name: Install LLVM and Clang
163+
uses: KyleMayes/install-llvm-action@v1
164+
if: ${{ matrix.settings.target == 'i686-pc-windows-msvc' }}
165+
with:
166+
version: '15'
172167
- name: Setup toolchain
173168
run: ${{ matrix.settings.setup }}
174169
if: ${{ matrix.settings.setup }}
175170
shell: bash
176-
- name: Setup node x86 install settings
177-
if: matrix.settings.target == 'i686-pc-windows-msvc'
178-
run: yarn config set supportedArchitectures.cpu --json '["x86", "x64"]'
179-
shell: bash
180171
- name: Install dependencies
181172
run: yarn install --immutable --mode=skip-build
182-
- name: Setup node x86
183-
uses: actions/setup-node@v3
184-
if: matrix.settings.target == 'i686-pc-windows-msvc'
185-
with:
186-
node-version: 16
187-
check-latest: true
188-
architecture: x86
189173
- name: Build in docker
190174
uses: addnab/docker-run-action@v3
191175
if: ${{ matrix.settings.docker }}
@@ -195,14 +179,10 @@ jobs:
195179
run: ${{ matrix.settings.build }}
196180
- name: Build
197181
run: ${{ matrix.settings.build }}
198-
if: ${{ !matrix.settings.docker && matrix.settings.target != 'i686-pc-windows-msvc' }}
182+
if: ${{ !matrix.settings.docker }}
199183
shell: bash
200-
- name: Build
201-
run: ${{ matrix.settings.build }}
202-
if: matrix.settings.target == 'i686-pc-windows-msvc'
203-
shell: powershell
204184
- name: Upload artifact
205-
uses: actions/upload-artifact@v2
185+
uses: actions/upload-artifact@v3
206186
with:
207187
name: bindings-${{ matrix.settings.target }}
208188
path: packages/*/*.node
@@ -214,7 +194,7 @@ jobs:
214194
- uses: actions/checkout@v3
215195
- name: Build
216196
id: build
217-
uses: vmactions/freebsd-vm@v0.2.3
197+
uses: vmactions/freebsd-vm@v0
218198
env:
219199
DEBUG: napi:*
220200
RUSTUP_HOME: /usr/local/rustup
@@ -225,7 +205,7 @@ jobs:
225205
usesh: true
226206
mem: 3000
227207
prepare: |
228-
pkg install -y curl cmake nasm node16 python2 perl5
208+
pkg install -y curl cmake nasm node perl5
229209
curl -qL https://www.npmjs.com/install.sh | sh
230210
npm install --location=global --ignore-scripts yarn
231211
curl https://sh.rustup.rs -sSf --output rustup.sh
@@ -252,7 +232,7 @@ jobs:
252232
rm -rf node_modules
253233
rm -rf target
254234
- name: Upload artifact
255-
uses: actions/upload-artifact@v2
235+
uses: actions/upload-artifact@v3
256236
with:
257237
name: bindings-freebsd
258238
path: packages/*/*.node
@@ -482,11 +462,6 @@ jobs:
482462
node-version: 16
483463
check-latest: true
484464
cache: yarn
485-
- name: Cache NPM dependencies
486-
uses: actions/cache@v3
487-
with:
488-
path: .yarn/cache
489-
key: npm-cache-ubuntu-latest-publish
490465
- name: Install dependencies
491466
run: yarn install --immutable --mode=skip-build
492467
- name: Download all artifacts

0 commit comments

Comments
 (0)