107 lines
3.3 KiB
Nix
107 lines
3.3 KiB
Nix
{
|
|
lib,
|
|
cmake,
|
|
fetchFromGitHub,
|
|
libglut,
|
|
libGL,
|
|
libheif,
|
|
libjpeg,
|
|
darwin,
|
|
pkg-config,
|
|
stdenv,
|
|
enableHEIFCodec ? true,
|
|
enableJPGCodec ? true,
|
|
enableOpenGL ? true,
|
|
}:
|
|
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
pname = "jasper";
|
|
version = "4.2.4";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "jasper-software";
|
|
repo = "jasper";
|
|
rev = "version-${finalAttrs.version}";
|
|
hash = "sha256-YliWVuNEtq/Rgra+WnorSOFoAYwYmPmPRv0r734FJ1c=";
|
|
};
|
|
|
|
outputs = [
|
|
"out"
|
|
"dev"
|
|
"doc"
|
|
"lib"
|
|
"man"
|
|
];
|
|
|
|
nativeBuildInputs = [
|
|
cmake
|
|
pkg-config
|
|
];
|
|
|
|
buildInputs =
|
|
[
|
|
]
|
|
++ lib.optionals enableHEIFCodec [
|
|
libheif
|
|
]
|
|
++ lib.optionals enableJPGCodec [
|
|
libjpeg
|
|
]
|
|
++ lib.optionals enableOpenGL [
|
|
libglut
|
|
libGL
|
|
]
|
|
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
|
darwin.apple_sdk.frameworks.Cocoa
|
|
];
|
|
|
|
# Since "build" already exists and is populated, cmake tries to use it,
|
|
# throwing uncomprehensible error messages...
|
|
cmakeBuildDir = "build-directory";
|
|
cmakeFlags = [
|
|
(lib.cmakeBool "ALLOW_IN_SOURCE_BUILD" true)
|
|
(lib.cmakeBool "JAS_ENABLE_HEIC_CODEC" enableHEIFCodec)
|
|
(lib.cmakeBool "JAS_INCLUDE_HEIC_CODEC" enableHEIFCodec)
|
|
(lib.cmakeBool "JAS_ENABLE_JPG_CODEC" enableJPGCodec)
|
|
(lib.cmakeBool "JAS_INCLUDE_JPG_CODEC" enableJPGCodec)
|
|
(lib.cmakeBool "JAS_ENABLE_MIF_CODEC" false) # Dangerous!
|
|
(lib.cmakeBool "JAS_ENABLE_OPENGL" enableOpenGL)
|
|
];
|
|
|
|
strictDeps = true;
|
|
|
|
# The value of __STDC_VERSION__ cannot be automatically determined when cross-compiling
|
|
# https://github.com/jasper-software/jasper/blob/87668487/CMakeLists.txt#L415
|
|
# workaround taken from
|
|
# https://github.com/openembedded/meta-openembedded/blob/907b9c0a/meta-oe/recipes-graphics/jasper/jasper_4.1.1.bb#L16
|
|
preConfigure = lib.optionalString (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
|
|
cmakeFlagsArray+=(-DJAS_STDC_VERSION="$(echo __STDC_VERSION__ | $CXX -E -P -)")
|
|
'';
|
|
|
|
meta = {
|
|
homepage = "https://jasper-software.github.io/jasper/";
|
|
description = "Image processing/coding toolkit";
|
|
longDescription = ''
|
|
JasPer is a software toolkit for the handling of image data. The software
|
|
provides a means for representing images, and facilitates the manipulation
|
|
of image data, as well as the import/export of such data in numerous
|
|
formats (e.g., JPEG-2000 JP2, JPEG, PNM, BMP, Sun Rasterfile, and
|
|
PGX). The import functionality supports the auto-detection (i.e.,
|
|
automatic determination) of the image format, eliminating the need to
|
|
explicitly identify the format of coded input data. A simple color
|
|
management engine is also provided in order to allow the accurate
|
|
representation of color. Partial support is included for the ICC color
|
|
profile file format, an industry standard for specifying color.
|
|
|
|
The JasPer software consists of a library and several application
|
|
programs. The code is written in the C programming language. This language
|
|
was chosen primarily due to the availability of C development environments
|
|
for most computing platforms when JasPer was first developed, circa 1999.
|
|
'';
|
|
license = with lib.licenses; [ mit ];
|
|
mainProgram = "jasper";
|
|
maintainers = with lib.maintainers; [ ];
|
|
platforms = lib.platforms.unix;
|
|
};
|
|
})
|
|
# TODO: investigate opengl support
|