Commit ea0ebb6
feature: add libjpeg-turbo and enable JPEG codec in libtiff/GDAL (#57)
* feature: add libjpeg-turbo and enable JPEG codec in libtiff/GDAL
Build libjpeg-turbo 3.1.4.1 statically with emscripten as the
@cpp.js/package-jpegturbo (and -wasm) workspace package, then
wire it into libtiff via -Djpeg=ON + JPEG_INCLUDE_DIR /
JPEG_LIBRARY, and into GDAL via -DGDAL_USE_JPEG=ON +
JPEG_INCLUDE_DIR / JPEG_LIBRARY_RELEASE.
This lets libtiff's JPEG codec resolve at runtime, so GeoTIFFs
with Compression=JPEG decode correctly instead of failing with
"Cannot open TIFF file due to missing codec JPEG".
Verification: libtiff.a contains tif_jpeg.c.o, tif_jpeg_12.c.o,
and tif_ojpeg.c.o (JPEG codec compiled in). GDAL wasm builds
successfully with the JPEG driver active.
Changes (19 files, +275/-6):
- New packages under cppjs-packages/cppjs-package-jpegturbo/
(version 2.0.0-beta.12, nativeVersion 3.1.4.1):
* meta sub-package: package.json, cppjs.config.js, README.md,
CHANGELOG.md, LICENSE, .npmignore
* -wasm sub-package: package.json, cppjs.config.js, cppjs.build.js
- root package.json: include @cpp.js/package-jpegturbo in
scripts.build:packages before tiff (preserves dependency order).
- cppjs-package-tiff-wasm:
* cppjs.build.js: add -Djpeg=ON, JPEG_INCLUDE_DIR, JPEG_LIBRARY
* cppjs.config.js: add jpegturboWasm to dependencies
* package.json: add @cpp.js/package-jpegturbo-wasm workspace dep
- cppjs-package-geotiff-wasm:
* cppjs.build.js: minor adjustment for jpeg path forwarding
* cppjs.config.js: add jpegturboWasm to dependencies
(libgeotiff itself does not call libjpeg, but configure's
link test against libtiff requires the jpeg path on wasm)
* package.json: add @cpp.js/package-jpegturbo-wasm workspace dep
- cppjs-package-gdal-wasm:
* cppjs.build.js: add -DGDAL_USE_JPEG=ON, JPEG_INCLUDE_DIR,
JPEG_LIBRARY_RELEASE
* cppjs.config.js: add jpegturboWasm to dependencies
* package.json: add @cpp.js/package-jpegturbo-wasm workspace dep
libjpeg-turbo cmake flags:
-DENABLE_SHARED=OFF -DENABLE_STATIC=ON -DWITH_TURBOJPEG=OFF
WITH_TURBOJPEG=OFF: GDAL only uses the standard libjpeg API,
so the TurboJPEG wrapper (libturbojpeg.a) would be dead code in
the final wasm — skipping it saves build time and intermediate
output size.
WITH_SIMD is left at cmake default. libjpeg-turbo's cmake
auto-disables SIMD on wasm32 since no hand-written backend
exists for that target. If upstream adds a wasm32 SIMD backend
later, this build will pick it up automatically.
* Update pnpm-lock.yaml with jpegturbo-related packages
---------
Co-authored-by: shyu_yoga <shyu@ictway.co.kr>1 parent 6fc0292 commit ea0ebb6
20 files changed
Lines changed: 300 additions & 6 deletions
File tree
- cppjs-packages
- cppjs-package-gdal/cppjs-package-gdal-wasm
- cppjs-package-geotiff/cppjs-package-geotiff-wasm
- cppjs-package-jpegturbo
- cppjs-package-jpegturbo-wasm
- cppjs-package-jpegturbo
- cppjs-package-tiff/cppjs-package-tiff-wasm
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
| 54 | + | |
54 | 55 | | |
55 | 56 | | |
56 | 57 | | |
| |||
Lines changed: 2 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
5 | 6 | | |
6 | 7 | | |
7 | 8 | | |
| |||
15 | 16 | | |
16 | 17 | | |
17 | 18 | | |
| 19 | + | |
18 | 20 | | |
19 | 21 | | |
20 | 22 | | |
| |||
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
| 27 | + | |
27 | 28 | | |
28 | 29 | | |
29 | 30 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
| 6 | + | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| |||
Lines changed: 2 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
| 4 | + | |
4 | 5 | | |
5 | 6 | | |
6 | 7 | | |
7 | 8 | | |
8 | 9 | | |
9 | 10 | | |
| 11 | + | |
10 | 12 | | |
11 | 13 | | |
12 | 14 | | |
| |||
Lines changed: 2 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | | - | |
| 25 | + | |
| 26 | + | |
26 | 27 | | |
27 | 28 | | |
28 | 29 | | |
| |||
Lines changed: 9 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
Lines changed: 18 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
Lines changed: 29 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
Lines changed: 6 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
0 commit comments