Files
nixpkgs/pkgs/by-name/an/angle/package.nix
Dark Steveneq 646b892680
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
push sheeet
2025-10-09 14:15:47 +02:00

192 lines
4.8 KiB
Nix

{
stdenv,
gn,
ninja,
llvmPackages_21,
gclient2nix,
pkg-config,
glib,
python3,
symlinkJoin,
lib,
xorg,
wayland,
pciutils,
libGL,
apple-sdk_15,
xcbuild,
}:
let
llvmPackages = llvmPackages_21;
llvmMajorVersion = lib.versions.major llvmPackages.llvm.version;
arch = stdenv.hostPlatform.parsed.cpu.name;
triplet = lib.getAttr arch {
"x86_64" = "x86_64-unknown-linux-gnu";
"aarch64" = "aarch64-unknown-linux-gnu";
};
clang = symlinkJoin {
name = "angle-clang-llvm-join";
paths = [
llvmPackages.llvm
llvmPackages.clang
];
postBuild =
if stdenv.isDarwin then
''
mkdir -p $out/lib/clang/${llvmMajorVersion}/lib/darwin
ln -s $out/resource-root/lib/darwin/libclang_rt.osx.a \
$out/lib/clang/${llvmMajorVersion}/lib/darwin/libclang_rt.osx.a
ln -s $out/resource-root/lib/darwin/libclang_rt.osx.a \
$out/lib/clang/${llvmMajorVersion}/lib/darwin/libclang_rt.osx-${arch}.a
''
else
''
mkdir -p $out/lib/clang/${llvmMajorVersion}/lib/
ln -s $out/resource-root/lib/linux \
$out/lib/clang/${llvmMajorVersion}/lib/${triplet}
'';
};
in
stdenv.mkDerivation (finalAttrs: {
pname = "angle";
version = "7258";
gclientDeps = gclient2nix.importGclientDeps ./info.json;
sourceRoot = "src";
strictDeps = true;
nativeBuildInputs = [
gn
ninja
gclient2nix.gclientUnpackHook
pkg-config
python3
llvmPackages.bintools
]
++ lib.optionals stdenv.isDarwin [
xcbuild
];
buildInputs =
lib.optionals stdenv.isLinux [
glib
xorg.libxcb.dev
xorg.libX11.dev
xorg.libXext.dev
xorg.libXi
wayland.dev
pciutils
libGL
]
++ lib.optionals stdenv.isDarwin [
apple-sdk_15
];
gnFlags = [
"is_debug=false"
"use_sysroot=false"
"clang_base_path=\"${clang}\""
"angle_build_tests=false"
"concurrent_links=1"
"use_custom_libcxx=true"
"angle_enable_swiftshader=false"
"angle_enable_wgpu=false"
# On darwin during linking:
# clang++: error: argument unused during compilation: '-stdlib=libc++'
"treat_warnings_as_errors=false"
];
patches = [
# https://issues.chromium.org/issues/432275627
# https://chromium-review.googlesource.com/c/chromium/src/+/6761936/2/build/config/compiler/BUILD.gn
./fix-uninitialized-const-pointer-error-001.patch
];
postPatch = ''
substituteInPlace build/config/clang/BUILD.gn \
--replace-fail \
"_dir = \"${triplet}\"" \
"_dir = \"${triplet}\"
_suffix = \"-${arch}\""
# Don't precompile Metal shaders, because the compiler is non-free.
substituteInPlace src/libANGLE/renderer/metal/metal_backend.gni \
--replace-fail \
"metal_internal_shader_compilation_supported =" \
"metal_internal_shader_compilation_supported = false &&"
cat > build/config/gclient_args.gni <<EOF
# Generated from 'DEPS'
checkout_angle_internal = false
checkout_angle_mesa = false
checkout_angle_restricted_traces = false
generate_location_tags = false
EOF
# For sandboxed build on darwin.
patchShebangs build/toolchain/apple
'';
installPhase = ''
runHook preInstall
install -v -m755 -D \
*${stdenv.hostPlatform.extensions.sharedLibrary}* \
-t "$out/lib"
install -v -m755 -D \
angle_shader_translator \
gaussian_distribution_gentables \
-t "$out/bin"
cp -rv ../../include "$out"
mkdir -p $out/lib/pkgconfig
cat > $out/lib/pkgconfig/angle.pc <<EOF
prefix=${placeholder "out"}
exec_prefix=''${prefix}
libdir=''${prefix}/lib
includedir=''${prefix}/include
Name: angle
Description: ${finalAttrs.meta.description}
URL: ${finalAttrs.meta.homepage}
Version: ${lib.versions.major finalAttrs.version}
Libs: -L''${libdir} -l${
lib.concatStringsSep " -l" [
"EGL"
"EGL_vulkan_secondaries"
"GLESv1_CM"
"GLESv2"
"GLESv2_vulkan_secondaries"
"GLESv2_with_capture"
"VkICD_mock_icd"
"feature_support"
]
}
Cflags: -I''${includedir}
EOF
runHook postInstall
'';
meta = {
description = "Conformant OpenGL ES implementation for Windows, Mac, Linux, iOS and Android";
longDescription = ''
The goal of ANGLE is to allow users of multiple operating systems
to seamlessly run WebGL and other OpenGL ES content by translating
OpenGL ES API calls to one of the hardware-supported APIs available
for that platform.
'';
homepage = "https://angleproject.org";
maintainers = with lib.maintainers; [
jess
jk
];
license = lib.licenses.bsd3;
platforms = lib.platforms.linux ++ lib.platforms.darwin;
};
})