summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: d4e561bf6846046ec292f4b2466abe45392fe0ff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# Maintainer: Ali Mohammad Pur <totally@fakegmail.ch>

pkgname=('angle')
pkgver=7258
pkgrel=6
pkgdesc="A conformant OpenGL ES implementation for Windows, Mac, Linux, iOS and Android."
arch=('x86_64')
url="https://chromium.googlesource.com/angle/angle"
license=('BSD-3-Clause')
depends=('zlib' 'libglvnd' 'freetype2' 'expat' 'libpng' 'libjpeg-turbo' 'fontconfig' 'harfbuzz' 'gcc-libs' 'libwebp' 'glibc')
makedepends=('git' 'python' 'procps-ng' 'ninja' 'gn' 'patchelf' 'pciutils')
provides=(angle)
conflicts=(angle)
source=(
    "git+$url#branch=chromium/$pkgver"
    "angle.pc"
    "vk.patch"
    "gclient_args.gni"

    "build::git+https://chromium.googlesource.com/chromium/src/build.git#commit=169fcf699b64d2d5e75a391beaec8a7ad6e41a7f"
    "testing::git+https://chromium.googlesource.com/chromium/src/testing#commit=0d5210a4b1978e7e2c6b8623c719dff0a0994a8f"
    "abseil-cpp::git+https://chromium.googlesource.com/chromium/src/third_party/abseil-cpp#commit=e3d58ba1a2a04f85225c3c04fa4603bb64399b2c"
    "astc-encoder::git+https://chromium.googlesource.com/external/github.com/ARM-software/astc-encoder#commit=2319d9c4d4af53a7fc7c52985e264ce6e8a02a9b"
    "EGL-Registry::git+https://chromium.googlesource.com/external/github.com/KhronosGroup/EGL-Registry#commit=7dea2ed79187cd13f76183c4b9100159b9e3e071"
    "libdrm::git+https://chromium.googlesource.com/chromiumos/third_party/libdrm.git#commit=ad78bb591d02162d3b90890aa4d0a238b2a37cde"
    "jsoncpp::git+https://chromium.googlesource.com/chromium/src/third_party/jsoncpp#commit=f62d44704b4da6014aa231cfc116e7fd29617d2a"
    "jsoncpp_upstream::git+https://chromium.googlesource.com/external/github.com/open-source-parsers/jsoncpp.git"
    "OpenGL-Registry::git+https://chromium.googlesource.com/external/github.com/KhronosGroup/OpenGL-Registry#commit=200cea4030cb49d3e40677379e6368a5f0e8c27b"
    "rapidjson::git+https://chromium.googlesource.com/external/github.com/Tencent/rapidjson#commit=781a4e667d84aeedbeb8184b7b62425ea66ec59f"
    "spirv-headers::git+https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers#commit=2a611a970fdbc41ac2e3e328802aed9985352dca"
    "spirv-tools::git+https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools#commit=108b19e5c6979f496deffad4acbe354237afa7d3"
    "vulkan-headers::git+https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers#commit=10739e8e00a7b6f74d22dd0a547f1406ff1f5eb9"
    "vulkan-loader::git+https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader#commit=c8a2c8c9164a58ce71c1c77104e28e8de724539e"
    "vulkan-tools::git+https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools#commit=e3fc64396755191b3c51e5c57d0454872e7fa487"
    "vulkan_memory_allocator::git+https://chromium.googlesource.com/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator#commit=56300b29fbfcc693ee6609ddad3fdd5b7a449a21"
    "zlib::git+https://chromium.googlesource.com/chromium/src/third_party/zlib#commit=4028ebf8710ee39d2286cb0f847f9b95c59f84d8"
)
sha256sums=(
    'SKIP'
    'SKIP'
    'SKIP'
    'SKIP'

    'SKIP'
    'SKIP'
    'SKIP'
    'SKIP'
    'SKIP'
    'SKIP'
    'SKIP'
    'SKIP'
    'SKIP'
    'SKIP'
    'SKIP'
    'SKIP'
    'SKIP'
    'SKIP'
    'SKIP'
    'SKIP'
    'SKIP'
)

prepare() {
    rm -fr angle/build; ln -s "${srcdir}/build" angle/build
    rm -fr angle/testing; ln -s "${srcdir}/testing" angle/testing
    rm -fr angle/third_party/abseil-cpp; ln -s "${srcdir}/abseil-cpp" angle/third_party/abseil-cpp
    rm -fr angle/third_party/astc-encoder/src; ln -s "${srcdir}/astc-encoder" angle/third_party/astc-encoder/src
    rm -fr angle/third_party/EGL-Registry/src; ln -s "${srcdir}/EGL-Registry" angle/third_party/EGL-Registry/src
    rm -fr angle/third_party/libdrm/src; ln -s "${srcdir}/libdrm" angle/third_party/libdrm/src
    rm -fr angle/third_party/jsoncpp; ln -s "${srcdir}/jsoncpp" angle/third_party/jsoncpp
    rm -fr angle/third_party/jsoncpp/source; ln -s "${srcdir}/jsoncpp_upstream" angle/third_party/jsoncpp/source
    rm -fr angle/third_party/OpenGL-Registry/src; ln -s "${srcdir}/OpenGL-Registry" angle/third_party/OpenGL-Registry/src
    rm -fr angle/third_party/rapidjson/src; ln -s "${srcdir}/rapidjson" angle/third_party/rapidjson/src
    rm -fr angle/third_party/spirv-headers/src; ln -s "${srcdir}/spirv-headers" angle/third_party/spirv-headers/src
    rm -fr angle/third_party/spirv-tools/src; ln -s "${srcdir}/spirv-tools" angle/third_party/spirv-tools/src
    rm -fr angle/third_party/vulkan-headers/src; ln -s "${srcdir}/vulkan-headers" angle/third_party/vulkan-headers/src
    rm -fr angle/third_party/vulkan-loader/src; ln -s "${srcdir}/vulkan-loader" angle/third_party/vulkan-loader/src
    rm -fr angle/third_party/vulkan-tools/src; ln -s "${srcdir}/vulkan-tools" angle/third_party/vulkan-tools/src
    rm -fr angle/third_party/vulkan_memory_allocator; ln -s "${srcdir}/vulkan_memory_allocator" angle/third_party/vulkan_memory_allocator
    rm -fr angle/third_party/zlib; ln -s "${srcdir}/zlib" angle/third_party/zlib

    cp gclient_args.gni angle/build/config
    cd angle
    patch src/libANGLE/renderer/vulkan/vk_cache_utils.cpp <"$srcdir/vk.patch"
    gn gen out/Release --args="
        angle_build_tests=false
        angle_enable_abseil=true
        angle_enable_renderdoc=false
        angle_enable_swiftshader=false
        angle_enable_vulkan=true
        angle_enable_wgpu=false
        angle_expose_non_conformant_extensions_and_versions=true
        angle_use_wayland=true
        angle_use_x11=false
        build_angle_deqp_tests=false
        build_with_chromium=false
        chrome_pgo_phase=0
        is_cfi=false
        is_component_build=false
        is_clang=false
        is_debug=false
        is_official_build=true
        treat_warnings_as_errors=false
        use_custom_libcxx=false
        use_safe_libstdcxx=true
        use_siso=false
        use_sysroot=false
    "
}

build() {
    cd angle
    ninja -C ./out/Release
}

package() {
    cd "$srcdir/angle"

    # License
    install -D -m644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"

    # Library
    libs=(
	libEGL
        libEGL_vulkan_secondaries
        libGLESv1_CM
        libGLESv2
        libGLESv2_vulkan_secondaries
        libGLESv2_with_capture
        libVkICD_mock_icd
        libfeature_support
    )
    for lib in "${libs[@]}"; do
        patchelf --set-rpath "/opt/angle/usr/lib" "out/Release/$lib.so"
        install -D -m644 "out/Release/$lib.so" "$pkgdir/opt/angle/usr/lib/$lib.so"
    done

    # Headers
    find include -type f -and -name "*.h" -exec install -v -D -m644 {} "$pkgdir/opt/angle/usr/"{} \; -print

    install -D -m644 "$srcdir/angle.pc" "$pkgdir/usr/lib/pkgconfig/angle.pc"

    git reset --hard origin/main
}