mirror of
https://github.com/GoogleChromeLabs/squoosh.git
synced 2025-11-13 01:07:18 +00:00
79 lines
2.1 KiB
Nix
79 lines
2.1 KiB
Nix
{
|
|
inputs = {
|
|
nixpkgs.url = "github:nixos/nixpkgs/24.05";
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
mozjpeg-src = {
|
|
url = "github:mozilla/mozjpeg/v3.3.1";
|
|
flake = false;
|
|
};
|
|
};
|
|
outputs =
|
|
{
|
|
self,
|
|
nixpkgs,
|
|
flake-utils,
|
|
mozjpeg-src,
|
|
}:
|
|
flake-utils.lib.eachDefaultSystem (
|
|
system:
|
|
let
|
|
pkgs = nixpkgs.legacyPackages.${system};
|
|
inherit (pkgs) callPackage stdenv lib;
|
|
|
|
buildSquooshCppCodec = callPackage (import ../../nix/squoosh-cxx-builder) {};
|
|
mkInstallable = callPackage (import ../../nix/mk-installable) {};
|
|
|
|
in
|
|
mkInstallable {
|
|
packages = rec {
|
|
|
|
default = mozjpeg-squoosh;
|
|
mozjpeg-squoosh = buildSquooshCppCodec {
|
|
name = "mozjpeg-squoosh";
|
|
src = lib.sources.sourceByRegex ./. ["Makefile" "enc(/.+)?"];
|
|
MOZJPEG = mozjpeg;
|
|
|
|
dontConfigure = true;
|
|
decoder = null;
|
|
};
|
|
|
|
mozjpeg = stdenv.mkDerivation {
|
|
name = "mozjpeg";
|
|
src = mozjpeg-src;
|
|
nativeBuildInputs = [
|
|
pkgs.autoconf
|
|
pkgs.automake
|
|
pkgs.libtool
|
|
pkgs.emscripten
|
|
pkgs.pkg-config
|
|
];
|
|
configurePhase = ''
|
|
# $HOME is required for Emscripten to work.
|
|
# See: https://nixos.org/manual/nixpkgs/stable/#emscripten
|
|
export HOME=$TMPDIR
|
|
autoreconf -ifv
|
|
emconfigure ./configure \
|
|
--disable-shared \
|
|
--without-turbojpeg \
|
|
--without-simd \
|
|
--without-arith-enc \
|
|
--without-arith-dec \
|
|
--with-build-date=squoosh \
|
|
--prefix=$out
|
|
'';
|
|
buildPhase = ''
|
|
export HOME=$TMPDIR
|
|
emmake make V=1 -j$(nproc) --trace
|
|
'';
|
|
installPhase = ''
|
|
make install
|
|
cp *.h $out/include
|
|
cp rdswitch.o $out/lib
|
|
'';
|
|
dontFixup = true;
|
|
};
|
|
};
|
|
}
|
|
);
|
|
}
|