diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/libaom')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/libaom/default.nix | 90 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/libaom/outputs.patch | 69 |
2 files changed, 159 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/libaom/default.nix b/nixpkgs/pkgs/development/libraries/libaom/default.nix new file mode 100644 index 000000000000..30d3c0d81b55 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/libaom/default.nix @@ -0,0 +1,90 @@ +{ lib, stdenv, fetchzip, yasm, perl, cmake, pkg-config, python3 +, enableButteraugli ? true, libjxl +, enableVmaf ? true, libvmaf +, gitUpdater +}: + +let + isCross = stdenv.buildPlatform != stdenv.hostPlatform; +in +stdenv.mkDerivation rec { + pname = "libaom"; + version = "3.7.0"; + + src = fetchzip { + url = "https://aomedia.googlesource.com/aom/+archive/v${version}.tar.gz"; + hash = "sha256-Zf0g/CMI73O9Dkn9o7aIvwZ/8wh3lCmVY8nZaPwBp68="; + stripRoot = false; + }; + + patches = [ ./outputs.patch ]; + + nativeBuildInputs = [ + yasm perl cmake pkg-config python3 + ]; + + propagatedBuildInputs = lib.optional enableButteraugli libjxl + ++ lib.optional enableVmaf libvmaf; + + preConfigure = '' + # build uses `git describe` to set the build version + cat > $NIX_BUILD_TOP/git << "EOF" + #!${stdenv.shell} + echo v${version} + EOF + chmod +x $NIX_BUILD_TOP/git + export PATH=$NIX_BUILD_TOP:$PATH + ''; + + # Configuration options: + # https://aomedia.googlesource.com/aom/+/refs/heads/master/build/cmake/aom_config_defaults.cmake + + cmakeFlags = [ + "-DBUILD_SHARED_LIBS=ON" + "-DENABLE_TESTS=OFF" + ] ++ lib.optionals enableButteraugli [ + "-DCONFIG_TUNE_BUTTERAUGLI=1" + ] ++ lib.optionals enableVmaf [ + "-DCONFIG_TUNE_VMAF=1" + ] ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [ + # CPU detection isn't supported on Darwin and breaks the aarch64-darwin build: + "-DCONFIG_RUNTIME_CPU_DETECT=0" + ] ++ lib.optionals (isCross && !stdenv.hostPlatform.isx86) [ + "-DCMAKE_ASM_COMPILER=${stdenv.cc.targetPrefix}as" + ] ++ lib.optionals stdenv.isAarch32 [ + # armv7l-hf-multiplatform does not support NEON + # see lib/systems/platform.nix + "-DENABLE_NEON=0" + ]; + + postFixup = '' + moveToOutput lib/libaom.a "$static" + '' + lib.optionalString stdenv.hostPlatform.isStatic '' + ln -s $static $out + ''; + + outputs = [ "out" "bin" "dev" "static" ]; + + passthru = { + updateScript = gitUpdater { + url = "https://aomedia.googlesource.com/aom"; + rev-prefix = "v"; + ignoredVersions = "(alpha|beta|rc).*"; + }; + }; + + meta = with lib; { + description = "Alliance for Open Media AV1 codec library"; + longDescription = '' + Libaom is the reference implementation of the AV1 codec from the Alliance + for Open Media. It contains an AV1 library as well as applications like + an encoder (aomenc) and a decoder (aomdec). + ''; + homepage = "https://aomedia.org/av1-features/get-started/"; + changelog = "https://aomedia.googlesource.com/aom/+/refs/tags/v${version}/CHANGELOG"; + maintainers = with maintainers; [ primeos kiloreux dandellion ]; + platforms = platforms.all; + outputsToInstall = [ "bin" ]; + license = licenses.bsd2; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/libaom/outputs.patch b/nixpkgs/pkgs/development/libraries/libaom/outputs.patch new file mode 100644 index 000000000000..bbf660aaa5c9 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/libaom/outputs.patch @@ -0,0 +1,69 @@ +diff --git a/build/cmake/aom_install.cmake b/build/cmake/aom_install.cmake +index 0bd2bf035..5cf5acea8 100644 +--- a/build/cmake/aom_install.cmake ++++ b/build/cmake/aom_install.cmake +@@ -42,8 +42,8 @@ macro(setup_aom_install_targets) + -DAOM_ROOT=${AOM_ROOT} + -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} + -DCMAKE_INSTALL_BINDIR=${CMAKE_INSTALL_BINDIR} +- -DCMAKE_INSTALL_INCLUDEDIR=${CMAKE_INSTALL_INCLUDEDIR} +- -DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR} ++ -DCMAKE_INSTALL_FULL_INCLUDEDIR=${CMAKE_INSTALL_FULL_INCLUDEDIR} ++ -DCMAKE_INSTALL_FULL_LIBDIR=${CMAKE_INSTALL_FULL_LIBDIR} + -DCMAKE_PROJECT_NAME=${CMAKE_PROJECT_NAME} + -DCONFIG_MULTITHREAD=${CONFIG_MULTITHREAD} + -DCONFIG_TUNE_VMAF=${CONFIG_TUNE_VMAF} +@@ -84,12 +84,12 @@ macro(setup_aom_install_targets) + # Setup the install rules. install() will automatically prepend + # CMAKE_INSTALL_PREFIX to relative paths + install(FILES ${AOM_INSTALL_INCS} +- DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/aom") ++ DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}/aom") + install(FILES "${AOM_PKG_CONFIG_FILE}" +- DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") ++ DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig") + install(TARGETS ${AOM_INSTALL_LIBS};${AOM_INSTALL_BINS} +- RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" +- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" +- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") ++ RUNTIME DESTINATION "${CMAKE_INSTALL_FULL_BINDIR}" ++ LIBRARY DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}" ++ ARCHIVE DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}") + endif() + endmacro() +diff --git a/build/cmake/pkg_config.cmake b/build/cmake/pkg_config.cmake +index e8fff2e77..b8a73aad4 100644 +--- a/build/cmake/pkg_config.cmake ++++ b/build/cmake/pkg_config.cmake +@@ -11,8 +11,8 @@ + cmake_minimum_required(VERSION 3.5) + + set(REQUIRED_ARGS "AOM_ROOT" "AOM_CONFIG_DIR" "CMAKE_INSTALL_PREFIX" +- "CMAKE_INSTALL_BINDIR" "CMAKE_INSTALL_INCLUDEDIR" +- "CMAKE_INSTALL_LIBDIR" "CMAKE_PROJECT_NAME" ++ "CMAKE_INSTALL_BINDIR" "CMAKE_INSTALL_FULL_INCLUDEDIR" ++ "CMAKE_INSTALL_FULL_LIBDIR" "CMAKE_PROJECT_NAME" + "CONFIG_MULTITHREAD" "HAVE_PTHREAD_H") + + foreach(arg ${REQUIRED_ARGS}) +@@ -35,15 +35,15 @@ else() + endif() + + # Write pkg-config info. +-set(prefix "${CMAKE_INSTALL_PREFIX}") +-set(bindir "${CMAKE_INSTALL_BINDIR}") +-set(includedir "${CMAKE_INSTALL_INCLUDEDIR}") +-set(libdir "${CMAKE_INSTALL_LIBDIR}") ++get_filename_component(prefix "${CMAKE_INSTALL_FULL_INCLUDEDIR}" DIRECTORY) ++get_filename_component(exec_prefix "${CMAKE_INSTALL_FULL_LIBDIR}" DIRECTORY) ++get_filename_component(includedir "${CMAKE_INSTALL_FULL_INCLUDEDIR}" NAME) ++get_filename_component(libdir "${CMAKE_INSTALL_FULL_LIBDIR}" NAME) + set(pkgconfig_file "${AOM_CONFIG_DIR}/aom.pc") + string(TOLOWER ${CMAKE_PROJECT_NAME} pkg_name) + file(WRITE "${pkgconfig_file}" "# libaom pkg-config.\n") + file(APPEND "${pkgconfig_file}" "prefix=${prefix}\n") +-file(APPEND "${pkgconfig_file}" "exec_prefix=\${prefix}\n") ++file(APPEND "${pkgconfig_file}" "exec_prefix=${exec_prefix}\n") + file(APPEND "${pkgconfig_file}" "includedir=\${prefix}/${includedir}\n") + file(APPEND "${pkgconfig_file}" "libdir=\${exec_prefix}/${libdir}\n\n") + file(APPEND "${pkgconfig_file}" "Name: ${pkg_name}\n") |