diff options
Diffstat (limited to 'pkgs/development/libraries/libvpx/default.nix')
-rw-r--r-- | pkgs/development/libraries/libvpx/default.nix | 219 |
1 files changed, 0 insertions, 219 deletions
diff --git a/pkgs/development/libraries/libvpx/default.nix b/pkgs/development/libraries/libvpx/default.nix deleted file mode 100644 index ef0929a841d8..000000000000 --- a/pkgs/development/libraries/libvpx/default.nix +++ /dev/null @@ -1,219 +0,0 @@ -{ lib, stdenv, fetchFromGitHub, perl, yasm -, vp8DecoderSupport ? true # VP8 decoder -, vp8EncoderSupport ? true # VP8 encoder -, vp9DecoderSupport ? true # VP9 decoder -, vp9EncoderSupport ? true # VP9 encoder -, extraWarningsSupport ? false # emit non-fatal warnings -, werrorSupport ? false # treat warnings as errors (not available with all compilers) -, debugSupport ? false # debug mode -, gprofSupport ? false # gprof profiling instrumentation -, gcovSupport ? false # gcov coverage instrumentation -, sizeLimitSupport ? true # limit max size to allow in the decoder -, optimizationsSupport ? true # compiler optimization flags -, runtimeCpuDetectSupport ? true # detect cpu capabilities at runtime -, thumbSupport ? false # build arm assembly in thumb mode -, examplesSupport ? true # build examples (vpxdec & vpxenc are part of examples) -, debugLibsSupport ? false # include debug version of each library -, postprocSupport ? true # postprocessing -, multithreadSupport ? true # multithreaded decoding & encoding -, internalStatsSupport ? false # output of encoder internal stats for debug, if supported (encoders) -, spatialResamplingSupport ? true # spatial sampling (scaling) -, realtimeOnlySupport ? false # build for real-time encoding -, ontheflyBitpackingSupport ? false # on-the-fly bitpacking in real-time encoding -, errorConcealmentSupport ? false # decoder conceals losses -, smallSupport ? false # favor smaller binary over speed -, postprocVisualizerSupport ? false # macro block/block level visualizers -, unitTestsSupport ? false, curl ? null, coreutils ? null # unit tests -, webmIOSupport ? true # input from and output to webm container -, libyuvSupport ? true # libyuv -, decodePerfTestsSupport ? false # build decoder perf tests with unit tests -, encodePerfTestsSupport ? false # build encoder perf tests with unit tests -, multiResEncodingSupport ? false # multiple-resolution encoding -, temporalDenoisingSupport ? true # use temporal denoising instead of spatial denoising -, coefficientRangeCheckingSupport ? false # decoder checks if intermediate transform coefficients are in valid range -, vp9HighbitdepthSupport ? true # 10/12 bit color support in VP9 -# Experimental features -, experimentalSpatialSvcSupport ? false # Spatial scalable video coding -, experimentalFpMbStatsSupport ? false -, experimentalEmulateHardwareSupport ? false - -# for passthru.tests -, ffmpeg -, gst_all_1 -}: - -let - inherit (stdenv) is64bit isMips isDarwin isCygwin; - inherit (lib) enableFeature optional optionals; - - # libvpx darwin targets include darwin version (ie. ARCH-darwinXX-gcc, XX being the darwin version) - # See all_platforms: https://github.com/webmproject/libvpx/blob/master/configure - # Darwin versions: 10.4=8, 10.5=9, 10.6=10, 10.7=11, 10.8=12, 10.9=13, 10.10=14 - darwinVersion = - /**/ if stdenv.hostPlatform.osxMinVersion == "10.10" then "14" - else if stdenv.hostPlatform.osxMinVersion == "10.9" then "13" - else if stdenv.hostPlatform.osxMinVersion == "10.8" then "12" - else if stdenv.hostPlatform.osxMinVersion == "10.7" then "11" - else if stdenv.hostPlatform.osxMinVersion == "10.6" then "10" - else if stdenv.hostPlatform.osxMinVersion == "10.5" then "9" - else "8"; - - cpu = - /**/ if stdenv.hostPlatform.isArmv7 then "armv7" - else if stdenv.hostPlatform.isAarch64 then "arm64" - else if stdenv.hostPlatform.isx86_32 then "x86" - else stdenv.hostPlatform.parsed.cpu.name; - - kernel = - # Build system doesn't understand BSD, so pretend to be Linux. - /**/ if stdenv.isBSD then "linux" - else if stdenv.isDarwin then "darwin${darwinVersion}" - else stdenv.hostPlatform.parsed.kernel.name; - - isGeneric = - /**/ (stdenv.hostPlatform.isPower && stdenv.hostPlatform.isLittleEndian) - || stdenv.hostPlatform.parsed.cpu.name == "armv6l" - || stdenv.hostPlatform.isRiscV; - - target = - /**/ if (stdenv.isBSD || stdenv.hostPlatform != stdenv.buildPlatform) then - (if isGeneric then "generic-gnu" else "${cpu}-${kernel}-gcc") - else null; -in - -assert vp8DecoderSupport || vp8EncoderSupport || vp9DecoderSupport || vp9EncoderSupport; -assert internalStatsSupport && (vp9DecoderSupport || vp9EncoderSupport) -> postprocSupport; -/* If spatialResamplingSupport not enabled, build will fail with undeclared variable errors. - Variables called in vpx_scale/generic/vpx_scale.c are declared by vpx_scale/vpx_scale_rtcd.pl, - but is only executed if spatialResamplingSupport is enabled */ -assert spatialResamplingSupport; -assert postprocVisualizerSupport -> postprocSupport; -assert unitTestsSupport -> curl != null && coreutils != null; -assert vp9HighbitdepthSupport -> (vp9DecoderSupport || vp9EncoderSupport); -assert isCygwin -> unitTestsSupport && webmIOSupport && libyuvSupport; - -stdenv.mkDerivation rec { - pname = "libvpx"; - version = "1.14.1"; - - src = fetchFromGitHub { - owner = "webmproject"; - repo = pname; - rev = "v${version}"; - hash = "sha256-Pfg7g4y/dqn2VKDQU1LnTJQSj1Tont9/8Je6ShDb2GQ="; - }; - - postPatch = '' - patchShebangs --build \ - build/make/*.sh \ - build/make/*.pl \ - build/make/*.pm \ - test/*.sh \ - configure - - # When cross-compiling (for aarch64-multiplatform), the compiler errors out on these flags. - # Since they're 'just' warnings, it's fine to just remove them. - substituteInPlace configure \ - --replace "check_add_cflags -Wparentheses-equality" "" \ - --replace "check_add_cflags -Wunreachable-code-loop-increment" "" \ - --replace "check_cflags -Wshorten-64-to-32 && add_cflags_only -Wshorten-64-to-32" "" - ''; - - outputs = [ "bin" "dev" "out" ]; - setOutputFlags = false; - - configurePlatforms = []; - configureFlags = [ - (enableFeature (vp8EncoderSupport || vp8DecoderSupport) "vp8") - (enableFeature vp8EncoderSupport "vp8-encoder") - (enableFeature vp8DecoderSupport "vp8-decoder") - (enableFeature (vp9EncoderSupport || vp9DecoderSupport) "vp9") - (enableFeature vp9EncoderSupport "vp9-encoder") - (enableFeature vp9DecoderSupport "vp9-decoder") - (enableFeature extraWarningsSupport "extra-warnings") - (enableFeature werrorSupport "werror") - "--disable-install-docs" - (enableFeature examplesSupport "install-bins") - "--enable-install-libs" - "--disable-install-srcs" - (enableFeature debugSupport "debug") - (enableFeature gprofSupport "gprof") - (enableFeature gcovSupport "gcov") - # Required to build shared libraries - (enableFeature (!isCygwin) "pic") - (enableFeature optimizationsSupport "optimizations") - (enableFeature runtimeCpuDetectSupport "runtime-cpu-detect") - (enableFeature thumbSupport "thumb") - "--enable-libs" - (enableFeature examplesSupport "examples") - "--disable-docs" - "--as=yasm" - # Limit default decoder max to WHXGA - (if sizeLimitSupport then "--size-limit=5120x3200" else null) - "--disable-codec-srcs" - (enableFeature debugLibsSupport "debug-libs") - (enableFeature isMips "dequant-tokens") - (enableFeature isMips "dc-recon") - (enableFeature postprocSupport "postproc") - (enableFeature (postprocSupport && (vp9DecoderSupport || vp9EncoderSupport)) "vp9-postproc") - (enableFeature multithreadSupport "multithread") - (enableFeature internalStatsSupport "internal-stats") - (enableFeature spatialResamplingSupport "spatial-resampling") - (enableFeature realtimeOnlySupport "realtime-only") - (enableFeature ontheflyBitpackingSupport "onthefly-bitpacking") - (enableFeature errorConcealmentSupport "error-concealment") - # Shared libraries are only supported on ELF platforms - (if isDarwin || isCygwin then - "--enable-static --disable-shared" - else - "--enable-shared") - (enableFeature smallSupport "small") - (enableFeature postprocVisualizerSupport "postproc-visualizer") - (enableFeature unitTestsSupport "unit-tests") - (enableFeature webmIOSupport "webm-io") - (enableFeature libyuvSupport "libyuv") - (enableFeature decodePerfTestsSupport "decode-perf-tests") - (enableFeature encodePerfTestsSupport "encode-perf-tests") - (enableFeature multiResEncodingSupport "multi-res-encoding") - (enableFeature temporalDenoisingSupport "temporal-denoising") - (enableFeature (temporalDenoisingSupport && (vp9DecoderSupport || vp9EncoderSupport)) "vp9-temporal-denoising") - (enableFeature coefficientRangeCheckingSupport "coefficient-range-checking") - (enableFeature (vp9HighbitdepthSupport && is64bit) "vp9-highbitdepth") - (enableFeature (experimentalSpatialSvcSupport || - experimentalFpMbStatsSupport || - experimentalEmulateHardwareSupport) "experimental") - ] ++ optionals (target != null) [ - "--target=${target}" - (lib.optionalString stdenv.hostPlatform.isCygwin "--enable-static-msvcrt") - ] # Experimental features - ++ optional experimentalSpatialSvcSupport "--enable-spatial-svc" - ++ optional experimentalFpMbStatsSupport "--enable-fp-mb-stats" - ++ optional experimentalEmulateHardwareSupport "--enable-emulate-hardware"; - - nativeBuildInputs = [ perl yasm ]; - - buildInputs = [ ] - ++ optionals unitTestsSupport [ coreutils curl ]; - - NIX_LDFLAGS = [ - "-lpthread" # fixes linker errors - ]; - - enableParallelBuilding = true; - - postInstall = ''moveToOutput bin "$bin" ''; - - passthru.tests = { - inherit (gst_all_1) gst-plugins-good; - ffmpeg = ffmpeg.override { withVpx = true; }; - }; - - meta = with lib; { - description = "WebM VP8/VP9 codec SDK"; - homepage = "https://www.webmproject.org/"; - changelog = "https://github.com/webmproject/libvpx/raw/v${version}/CHANGELOG"; - license = licenses.bsd3; - maintainers = with maintainers; [ codyopel ]; - platforms = platforms.all; - }; -} |