diff options
Diffstat (limited to 'pkgs/development/libraries/libvpx/git.nix')
-rw-r--r-- | pkgs/development/libraries/libvpx/git.nix | 178 |
1 files changed, 80 insertions, 98 deletions
diff --git a/pkgs/development/libraries/libvpx/git.nix b/pkgs/development/libraries/libvpx/git.nix index fd7f9150e1d..31b1c197e9f 100644 --- a/pkgs/development/libraries/libvpx/git.nix +++ b/pkgs/development/libraries/libvpx/git.nix @@ -1,15 +1,10 @@ {stdenv, fetchgit, perl, yasm -, vp8Support ? true # VP8 , vp8DecoderSupport ? true # VP8 decoder , vp8EncoderSupport ? true # VP8 encoder -, vp9Support ? true # VP9 , 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) -, installBinsSupport ? true # install binaries (vpxdec & vpxenc) -, installLibsSupport ? true # install libraries -, installSrcsSupport ? false # install sources , debugSupport ? false # debug mode , gprofSupport ? false # gprof profiling instrumentation , gcovSupport ? false # gcov coverage instrumentation @@ -17,13 +12,10 @@ , optimizationsSupport ? true # compiler optimization flags , runtimeCpuDetectSupport ? true # detect cpu capabilities at runtime , thumbSupport ? false # build arm assembly in thumb mode -, libsSupport ? true # build librares , examplesSupport ? true # build examples (vpxdec & vpxenc are part of examples) , fastUnalignedSupport ? true # use unaligned accesses if supported by hardware -, codecSrcsSupport ? false # codec library source code , debugLibsSupport ? false # include debug version of each library , postprocSupport ? true # postprocessing -, vp9PostprocSupport ? true # VP9 specific postprocessing , multithreadSupport ? true # multithreaded decoding & encoding , internalStatsSupport ? false # output of encoder internal stats for debug, if supported (encoders) , memTrackerSupport ? false # track memory usage @@ -40,7 +32,6 @@ , encodePerfTestsSupport ? false # build encoder perf tests with unit tests , multiResEncodingSupport ? false # multiple-resolution encoding , temporalDenoisingSupport ? true # use temporal denoising instead of spatial denoising -, vp9TemporalDenoisingSupport ? true # VP9 specific temporal denoising , coefficientRangeCheckingSupport ? false # decoder checks if intermediate transform coefficients are in valid range , vp9HighbitdepthSupport ? true # 10/12 bit color support in VP9 , experimentalSupport ? false # experimental features @@ -50,118 +41,109 @@ , experimentalEmulateHardwareSupport ? false }: -assert (vp8Support || vp9Support); -assert (vp8DecoderSupport || vp8EncoderSupport || vp9DecoderSupport || vp9EncoderSupport); -assert vp8DecoderSupport -> vp8Support; -assert vp8EncoderSupport -> vp8Support; -assert vp9DecoderSupport -> vp9Support; -assert vp9EncoderSupport -> vp9Support; -assert installLibsSupport -> libsSupport; -# libvpx will not build binaries if examplesSupport is not enabled (ie. vpxdec & vpxenc) -assert installBinsSupport -> examplesSupport; -assert vp9PostprocSupport -> (vp9Support && postprocSupport); -assert (internalStatsSupport && vp9Support) -> vp9PostprocSupport; +let + inherit (stdenv) isi686 isx86_64 isArm is64bit isMips isDarwin isCygwin; + inherit (stdenv.lib) enableFeature optional optionals; +in + +assert isi686 || isx86_64 || isArm || isMips; # Requires ARM with floating point support + +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 (postprocVisualizerSupport && vp9Support) -> vp9PostprocSupport; -assert unitTestsSupport -> ((curl != null) && (coreutils != null)); -assert vp9TemporalDenoisingSupport -> (vp9Support && temporalDenoisingSupport); -assert vp9HighbitdepthSupport -> vp9Support; -assert (experimentalSpatialSvcSupport || experimentalFpMbStatsSupport || experimentalEmulateHardwareSupport) -> experimentalSupport; -assert stdenv.isCygwin -> (unitTestsSupport && webmIOSupport && libyuvSupport); +assert unitTestsSupport -> curl != null && coreutils != null; +assert vp9HighbitdepthSupport -> (vp9DecoderSupport || vp9EncoderSupport); +assert isCygwin -> unitTestsSupport && webmIOSupport && libyuvSupport; -let - mkFlag = optSet: flag: if optSet then "--enable-${flag}" else "--disable-${flag}"; -in - -with stdenv.lib; stdenv.mkDerivation rec { - name = "libvpx-git"; + name = "libvpx-git-${version}"; + version = "2015-2-12"; src = fetchgit { url = "https://chromium.googlesource.com/webm/libvpx"; /* DO NOT under any circumstance ever just bump the git commit without confirming changes have not been made to the configure system */ - rev = "f4c29ae9ea16c502c980a81ca9683327d5051929"; # 2015-2-12 + rev = "f4c29ae9ea16c502c980a81ca9683327d5051929"; sha256 = "1d5m3dryfdrsf3mi6bcbsndyhihzksqalzfvi21fbxxkk1imsb9x"; }; - patchPhase = '' - patchShebangs . - ''; - - nativeBuildInputs = [ perl yasm ]; - - buildInputs = [ ] - ++ optional unitTestsSupport coreutils - ++ optional unitTestsSupport curl; + patchPhase = ''patchShebangs .''; configureFlags = [ - (mkFlag vp8Support "vp8") - (mkFlag vp8EncoderSupport "vp8-encoder") - (mkFlag vp8DecoderSupport "vp8-decoder") - (mkFlag vp9Support "vp9") - (mkFlag vp9EncoderSupport "vp9-encoder") - (mkFlag vp9DecoderSupport "vp9-decoder") - (mkFlag extraWarningsSupport "extra-warnings") - (mkFlag werrorSupport "werror") + (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" - (mkFlag installBinsSupport "install-bins") - (mkFlag installLibsSupport "install-libs") - (mkFlag installSrcsSupport "install-srcs") - (mkFlag debugSupport "debug") - (mkFlag gprofSupport "gprof") - (mkFlag gcovSupport "gcov") + (enableFeature examplesSupport "install-bins") + "--enable-install-libs" + "--disable-install-srcs" + (enableFeature debugSupport "debug") + (enableFeature gprofSupport "gprof") + (enableFeature gcovSupport "gcov") # Required to build shared libraries - (mkFlag (!stdenv.isDarwin && !stdenv.isCygwin) "pic") - (mkFlag (stdenv.isi686 || stdenv.isx86_64) "use-x86inc") - (mkFlag optimizationsSupport "optimizations") - (mkFlag runtimeCpuDetectSupport "runtime-cpu-detect") - (mkFlag thumbSupport "thumb") - (mkFlag libsSupport "libs") - (mkFlag examplesSupport "examples") + (enableFeature (!isCygwin) "pic") + (enableFeature (isi686 || isx86_64) "use-x86inc") + (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 "") - (mkFlag fastUnalignedSupport "fast-unaligned") - (mkFlag codecSrcsSupport "codec-srcs") - (mkFlag debugLibsSupport "debug-libs") - (mkFlag stdenv.isMips "dequant-tokens") - (mkFlag stdenv.isMips "dc-recon") - (mkFlag postprocSupport "postproc") - (mkFlag vp9PostprocSupport "vp9-postproc") - (mkFlag multithreadSupport "multithread") - (mkFlag internalStatsSupport "internal-stats") - (mkFlag memTrackerSupport "mem-tracker") - (mkFlag spatialResamplingSupport "spatial-resampling") - (mkFlag realtimeOnlySupport "realtime-only") - (mkFlag ontheflyBitpackingSupport "onthefly-bitpacking") - (mkFlag errorConcealmentSupport "error-concealment") + (if sizeLimitSupport then "--size-limit=5120x3200" else null) + (enableFeature fastUnalignedSupport "fast-unaligned") + "--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 memTrackerSupport "mem-tracker") + (enableFeature spatialResamplingSupport "spatial-resampling") + (enableFeature realtimeOnlySupport "realtime-only") + (enableFeature ontheflyBitpackingSupport "onthefly-bitpacking") + (enableFeature errorConcealmentSupport "error-concealment") # Shared libraries are only supported on ELF platforms - (mkFlag (stdenv.isDarwin || stdenv.isCygwin) "static") - (mkFlag (!stdenv.isDarwin && !stdenv.isCygwin) "shared") - (mkFlag smallSupport "small") - (mkFlag postprocVisualizerSupport "postproc-visualizer") - (mkFlag unitTestsSupport "unit-tests") - (mkFlag webmIOSupport "webm-io") - (mkFlag libyuvSupport "libyuv") - (mkFlag decodePerfTestsSupport "decode-perf-tests") - (mkFlag encodePerfTestsSupport "encode-perf-tests") - (mkFlag multiResEncodingSupport "multi-res-encoding") - (mkFlag temporalDenoisingSupport "temporal-denoising") - (mkFlag vp9TemporalDenoisingSupport "vp9-temporal-denoising") - (mkFlag coefficientRangeCheckingSupport "coefficient-range-checking") - (mkFlag (vp9HighbitdepthSupport && !stdenv.isi686) "vp9-highbitdepth") - (mkFlag experimentalSupport "experimental") + (if isDarwin || isCygwin then + "--enable-static --disable-shared" + else + "--disable-static --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") # Experimental features - (mkFlag experimentalSpatialSvcSupport "spatial-svc") - (mkFlag experimentalFpMbStatsSupport "fp-mb-stats") - (mkFlag experimentalEmulateHardwareSupport "emulate-hardware") - ]; + ] ++ optional experimentalSpatialSvcSupport "--enable-spatial-svc" + ++ optional experimentalFpMbStatsSupport "--enable-fp-mb-stats" + ++ optional experimentalEmulateHardwareSupport "--enable-emulate-hardware"; + + nativeBuildInputs = [ perl yasm ]; + + buildInputs = [ ] + ++ optionals unitTestsSupport [ coreutils curl ]; enableParallelBuilding = true; @@ -193,7 +175,7 @@ stdenv.mkDerivation rec { ]; }; - meta = { + meta = with stdenv.lib; { description = "WebM VP8/VP9 codec SDK"; homepage = http://www.webmproject.org/; license = licenses.bsd3; |