Skip to content

Commit 9ef9144

Browse files
authored
Refactor mupdf-sys build script (#136)
* Refactor mupdf-sys build script * Only use sys-libs if requested * Don't use cfg for msvc check * Don't use "Small" with msbuild * Disable system-fonts feature on wasm * Fix wrong msbuild library search path * Update msbuild search path * Set OutDir on windows and create build dir * Copy files to build directory * Remove semicolon * Fix linking issue and reapply NAN patch * Use include_bytes to allow running tests in WASM * Satisfy Rust 1.87 clippy * Specify runner emscripten for CI * Also include_bytes! data from serde tests * Update actions/checkout to v4 to use node 20 * Use node 22 * Link to stdc++ when using tesseract * Change c++ link flags
1 parent ed1d471 commit 9ef9144

18 files changed

+844
-583
lines changed

.github/workflows/CI.yml

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
name: Check
1818
runs-on: ubuntu-latest
1919
steps:
20-
- uses: actions/checkout@v3
20+
- uses: actions/checkout@v4
2121
with:
2222
submodules: "recursive"
2323
fetch-depth: 500
@@ -33,30 +33,40 @@ jobs:
3333
matrix:
3434
os: [ubuntu-latest, macos-latest, windows-2019, windows-2022, windows-2025]
3535
steps:
36-
- uses: actions/checkout@v3
36+
- uses: actions/checkout@v4
3737
with:
3838
submodules: "recursive"
3939
fetch-depth: 500
4040
- uses: dtolnay/rust-toolchain@stable
41+
4142
- run: sudo apt-get -y install libfontconfig1-dev
4243
if: matrix.os == 'ubuntu-latest'
43-
- name: Install LLVM
44-
if: matrix.os == 'windows-2019'
45-
run: choco install -y llvm
46-
- name: Setup msbuild
47-
if: matrix.os == 'windows-2019'
48-
uses: microsoft/setup-msbuild@v1.3.1
49-
- run: cargo test --features serde
50-
timeout-minutes: 20
51-
if: matrix.os == 'windows-2019'
52-
env:
53-
LIBCLANG_PATH: "C:\\Program Files\\LLVM\\bin"
44+
5445
- run: cargo test --features serde
55-
if: matrix.os != 'windows-2019'
46+
5647
- name: Test package mupdf-sys
5748
if: matrix.os == 'ubuntu-latest'
5849
run: cargo package --manifest-path mupdf-sys/Cargo.toml
5950

51+
test-wasm:
52+
name: Test Suite (Emscripten)
53+
runs-on: ubuntu-latest
54+
steps:
55+
- uses: actions/checkout@v4
56+
with:
57+
submodules: "recursive"
58+
fetch-depth: 500
59+
- uses: actions/setup-node@v4
60+
with:
61+
node-version: 22
62+
63+
- uses: dtolnay/rust-toolchain@stable
64+
with:
65+
targets: wasm32-unknown-emscripten
66+
- uses: mymindstorm/setup-emsdk@v14
67+
68+
- run: cargo test --target wasm32-unknown-emscripten --config "target.wasm32-unknown-emscripten.runner = 'node'" --features serde
69+
6070
test-msys:
6171
name: Test Suite (MSYS2)
6272
runs-on: windows-2019
@@ -76,7 +86,7 @@ jobs:
7686
msystem: ${{matrix.sys}}
7787
install: mingw-w64-${{matrix.env}}-rust mingw-w64-${{matrix.env}}-clang base base-devel unzip git
7888

79-
- uses: actions/checkout@v3
89+
- uses: actions/checkout@v4
8090
with:
8191
submodules: "recursive"
8292
fetch-depth: 500
@@ -88,7 +98,7 @@ jobs:
8898
name: Address Sanitizer
8999
runs-on: ubuntu-latest
90100
steps:
91-
- uses: actions/checkout@v3
101+
- uses: actions/checkout@v4
92102
with:
93103
submodules: "recursive"
94104
fetch-depth: 500
@@ -107,7 +117,7 @@ jobs:
107117
name: Valgrind
108118
runs-on: ubuntu-latest
109119
steps:
110-
- uses: actions/checkout@v3
120+
- uses: actions/checkout@v4
111121
with:
112122
submodules: "recursive"
113123
fetch-depth: 500
@@ -122,7 +132,7 @@ jobs:
122132
name: Rustfmt
123133
runs-on: ubuntu-latest
124134
steps:
125-
- uses: actions/checkout@v3
135+
- uses: actions/checkout@v4
126136
- uses: dtolnay/rust-toolchain@stable
127137
with:
128138
components: rustfmt

Cargo.toml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,15 @@ libarchive = ["mupdf-sys/libarchive"]
5858
serde = ["dep:serde"]
5959

6060
[dependencies]
61-
mupdf-sys = { version = "0.5.0", path = "mupdf-sys" }
61+
mupdf-sys = { version = "0.5.0", path = "mupdf-sys", features = ["zerocopy"] }
6262
once_cell = "1.3.1"
6363
num_enum = "0.7.0"
6464
bitflags = "2.0.2"
6565
serde = { version = "1.0.201", features = ["derive"], optional = true }
6666
zerocopy = { version = "0.8.17", features = ["derive"] }
6767

68-
[dependencies.font-kit]
69-
version = "0.14.1"
70-
optional = true
68+
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
69+
font-kit = { version = "0.14.1", optional = true }
7170

7271
[workspace]
7372
members = [

mupdf-sys/Cargo.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,14 @@ tesseract = []
9797
zxingcpp = []
9898
libarchive = []
9999

100+
zerocopy = ["dep:zerocopy"]
101+
100102
[build-dependencies]
101103
bindgen = { version = "0.71", default-features = false, features = ["runtime"] }
102104
cc = "1.0.50"
103105
pkg-config = "0.3"
104106
regex = "1.11"
105107

106108
[dependencies]
107-
zerocopy = { version = "0.8.17", features = ["derive"] }
109+
zerocopy = { version = "0.8.17", features = ["derive"], optional = true }
110+

0 commit comments

Comments
 (0)