Skip to content

asset_jpegxl

asset_jpegxl #6

Workflow file for this run

name: asset_jpegxl
on:
workflow_dispatch:
permissions:
contents: write
jobs:
prepare:
runs-on: ubuntu-22.04
steps:
- name: Cache # the post step for this will upload jpegxl.tar if not hit
id: cache
uses: actions/cache@v4
with:
enableCrossOsArchive: true
key: "asset_jpegxl_8835f5d_2"
path: jpegxl.tar
- name: Build
if: steps.cache.outputs.cache-hit != 'true'
run: |
curl -L https://github.com/libjxl/libjxl/archive/8835f5dfc4857f46277f6c703e47ac7817bd7aed.tar.gz | tar -zx
mv libjxl-* jpegxl
cd jpegxl
sed -i.bak -e 's|download_github testdata|#|' deps.sh
./deps.sh
cat <<EOF >tools/multicall.cc
#include <stddef.h>
#include <string.h>
#include "jxlinfo.c"
#include "cjxl_main.cc"
#include "djxl_main.cc"
#include "cjpegli.cc"
#include "djpegli.cc"
#if defined(WIN32) || defined(_WIN32)
#define PATH_SEPARATOR '\\\\'
#else
#define PATH_SEPARATOR '/'
#endif
int main(int argc, const char *argv[]) {
if (argc <= 0) {
return 1;
}
const char *argv0 = strrchr(argv[0], PATH_SEPARATOR);
if (argv0 == NULL) {
argv0 = argv[0];
} else {
argv0++;
}
before:
if (argc <= 0) {
return 1;
} else if (strcmp(argv0, "jxlinfo") == 0) {
return cmd_jxlinfo_main(argc, argv);
} else if (strcmp(argv0, "cjxl") == 0) {
return cmd_cjxl_main(argc, argv);
} else if (strcmp(argv0, "djxl") == 0) {
return cmd_djxl_main(argc, argv);
} else if (strcmp(argv0, "cjpegli") == 0) {
return cmd_cjpegli_main(argc, argv);
} else if (strcmp(argv0, "djpegli") == 0) {
return cmd_djpegli_main(argc, argv);
} else {
argv++;
argc--;
if (argc <= 0) {
return 1;
}
argv0 = strrchr(argv[0], PATH_SEPARATOR);
if (argv0 == NULL) {
argv0 = argv[0];
} else {
argv0++;
}
goto before;
}
return 0;
}
EOF
sed -i.bak -e 's|name = malloc|name = (char*)malloc|g' tools/jxlinfo.c
sed -i.bak -e 's|int main(|int cmd_jxlinfo_main(int argc, const char** argv){//|' tools/jxlinfo.c
sed -i.bak -e 's|int main(|int cmd_cjxl_main(int argc, const char** argv){//|' tools/cjxl_main.cc
sed -i.bak -e 's|int main(|int cmd_djxl_main(int argc, const char** argv){//|' tools/djxl_main.cc
sed -i.bak -e 's|int main(|int cmd_cjpegli_main(|' -e 's|namespace {|namespace cjpegli{|' -e 's|::CJpegliMain|::cjpegli::CJpegliMain|' tools/cjpegli.cc
sed -i.bak -e 's|int main(|int cmd_djpegli_main(|' -e 's|namespace {|namespace djpegli{|' -e 's|::DJpegliMain|::djpegli::DJpegliMain|' tools/djpegli.cc
sed -i.bak -e 's|# Main compressor.|add_executable\(multicall multicall.cc\)\ntarget_link_libraries\(multicall jxl jxl_extras_codec jxl_extras-internal jxl_threads jxl_tool\)\nendif\(\)\nif\(0\)|' tools/CMakeLists.txt
cd ..
tar -cf jpegxl.tar --dereference jpegxl
linux-x64:
needs: prepare
runs-on: ubuntu-22.04
steps:
- name: Restore Cache Tar
uses: actions/cache/restore@v4
with:
enableCrossOsArchive: true
key: "asset_jpegxl_8835f5d_2"
path: jpegxl.tar
- name: Build
run: |
tar -xf jpegxl.tar --strip-components 1
sudo apt update
sudo apt install -y build-essential pkg-config cmake ninja-build libgif-dev libjpeg-dev libpng-dev
sed -i.bak -e 's|string(APPEND CMAKE_EXE_LINKER_FLAGS " -static")||' -e 's|string(APPEND CMAKE_EXE_LINKER_FLAGS " -static-libgcc -static-libstdc++")||' -e 's|CMAKE_USE_PTHREADS_INIT|0|' CMakeLists.txt
to_bak(){ sudo mv $1 $1.bak ;}
to_bak /usr/lib/x86_64-linux-gnu/libz.a
to_bak /usr/lib/x86_64-linux-gnu/libpthread.a
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DJPEGXL_STATIC=ON -DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_DOXYGEN=OFF -DJPEGXL_ENABLE_MANPAGES=OFF -DJPEGXL_ENABLE_JNI=OFF -DJPEGXL_ENABLE_SJPEG=OFF -DJPEGXL_ENABLE_OPENEXR=OFF -DJPEGXL_ENABLE_AVX512=OFF
cmake --build build
mv build/tools/multicall ./jpegxl
strip ./jpegxl
zip -9 linux-x64.zip jpegxl
- name: Verify
run: |
uname -a
ldd --version
ldd ./jpegxl || true
./jpegxl cjxl -V
- name: Release
uses: softprops/action-gh-release@v2
with:
prerelease: true
body: "`github.workflow_sha = ${{ github.workflow_sha }}`"
tag_name: "${{ 'asset_jpegxl_8835f5d_' }}${{ github.run_id }}"
files: linux-x64.zip
mac-arm64:
needs: prepare
runs-on: macos-14
steps:
- name: Restore Cache Tar
uses: actions/cache/restore@v4
with:
enableCrossOsArchive: true
key: "asset_jpegxl_8835f5d_2"
path: jpegxl.tar
- name: Build
run: |
tar -xf jpegxl.tar --strip-components 1
( unset CI ; brew install ninja giflib jpeg-turbo libpng )
to_bak(){ sudo mv $1 $1.bak ;}
to_bak /Library/Frameworks/Mono.framework/Versions/6.12.0/include/gif_lib.h # WHAT THE FUCK
to_bak /opt/homebrew/lib/libpng.dylib # static lib instead of dylib
to_bak /opt/homebrew/lib/libjpeg.dylib
to_bak /opt/homebrew/lib/libgif.dylib
sed -i.bak -e 's|string(APPEND CMAKE_EXE_LINKER_FLAGS " -static")||' -e 's|string(APPEND CMAKE_EXE_LINKER_FLAGS " -static-libgcc -static-libstdc++")||' CMakeLists.txt
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DJPEGXL_STATIC=ON -DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_DOXYGEN=OFF -DJPEGXL_ENABLE_MANPAGES=OFF -DJPEGXL_ENABLE_JNI=OFF -DJPEGXL_ENABLE_SJPEG=OFF -DJPEGXL_ENABLE_OPENEXR=OFF -DJPEGXL_ENABLE_AVX512=OFF
cmake --build build
mv build/tools/multicall ./jpegxl
strip ./jpegxl
zip -9 mac-arm64.zip jpegxl
- name: Verify
run: |
uname -a
otool -L ./jpegxl || true
./jpegxl cjxl -V
- name: Release
uses: softprops/action-gh-release@v2
with:
prerelease: true
body: "`github.workflow_sha = ${{ github.workflow_sha }}`"
tag_name: "${{ 'asset_jpegxl_8835f5d_' }}${{ github.run_id }}"
files: mac-arm64.zip
win-x64:
needs: prepare
runs-on: windows-2022
steps:
- name: Restore Cache Tar
uses: actions/cache/restore@v4
with:
enableCrossOsArchive: true
key: "asset_jpegxl_8835f5d_2"
path: jpegxl.tar
- name: Build
shell: C:\msys64\msys2_shell.cmd -mingw64 -defterm -here -no-start -e {0}
run: |
tar -xf jpegxl.tar --strip-components 1
pacman -S --noconfirm mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc zip mingw-w64-x86_64-libpng mingw-w64-x86_64-libjpeg mingw-w64-x86_64-giflib
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DJPEGXL_STATIC=ON -DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_DOXYGEN=OFF -DJPEGXL_ENABLE_MANPAGES=OFF -DJPEGXL_ENABLE_JNI=OFF -DJPEGXL_ENABLE_SJPEG=OFF -DJPEGXL_ENABLE_OPENEXR=OFF -DJPEGXL_ENABLE_DEVTOOLS=OFF -DJPEGXL_ENABLE_AVX512=OFF
cmake --build build
mv build/tools/multicall.exe ./jpegxl.exe
strip ./jpegxl.exe
zip -9 win-x64.zip jpegxl.exe
- name: Verify
run: |
uname -a
ldd ./jpegxl.exe || true
./jpegxl.exe cjxl -V
- name: Release
uses: softprops/action-gh-release@v2
with:
prerelease: true
body: "`github.workflow_sha = ${{ github.workflow_sha }}`"
tag_name: "${{ 'asset_jpegxl_8835f5d_' }}${{ github.run_id }}"
files: win-x64.zip