blob: 564aae5d9ff84a2514d5ecb83cd138b3bccc299d (
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
|
# Maintainer: Your Name <your.email@example.com>
pkgname=fex-emu-wine-git
pkgver=2510.r13141.ga2ea767b7
pkgrel=1
pkgdesc="FEX DLLs for enabling Wine's ARM64EC support"
arch=('aarch64')
url="https://fex-emu.com"
license=('MIT' 'Apache-2.0' 'BSD-3-Clause' 'GPL-2.0-only')
depends=('systemd-libs')
makedepends=('git' 'cmake' 'clang' 'lld' 'llvm' 'ninja' 'python' 'sed'
'libepoxy' 'sdl2' 'xxhash' 'alsa-lib' 'libdrm' 'libglvnd'
'libx11' 'libxrandr' 'openssl' 'wayland' 'zlib')
provides=('fex-emu-wine')
conflicts=('fex-emu-wine')
source=(
"FEX::git+https://github.com/FEX-Emu/FEX.git#commit=a2ea767b77e5ee07eb1709784fa5d6301d3ba660"
"https://github.com/bylaws/llvm-mingw/releases/download/20250920/llvm-mingw-20250920-ucrt-ubuntu-22.04-aarch64.tar.xz"
"Catch2::git+https://github.com/catchorg/Catch2.git#commit=8ac8190"
"cpp-optparse::git+https://github.com/Sonicadvance1/cpp-optparse.git#commit=9f94388"
"Vulkan-Headers::git+https://github.com/KhronosGroup/Vulkan-Headers.git#commit=cacef30"
"drm-headers::git+https://github.com/FEX-Emu/drm-headers.git#commit=0675d2f"
"fmt::git+https://github.com/fmtlib/fmt.git#commit=e424e3f"
"jemalloc::git+https://github.com/FEX-Emu/jemalloc.git#commit=ce24593"
"jemalloc-glibc::git+https://github.com/FEX-Emu/jemalloc.git#commit=8436195"
"range-v3::git+https://github.com/ericniebler/range-v3.git#commit=ca1388f"
"robin-map::git+https://github.com/FEX-Emu/robin-map.git#commit=d5683d9"
"tracy::git+https://github.com/wolfpld/tracy.git#commit=650c98e"
"vixl::git+https://github.com/FEX-Emu/vixl.git#commit=ed690c9"
"xxhash::git+https://github.com/Cyan4973/xxHash.git#commit=bbb27a5"
)
sha256sums=('SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP')
pkgver() {
cd "$srcdir/FEX"
printf "2510.r%s.g%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}
prepare() {
cd "$srcdir/FEX"
# Setup external dependencies
mkdir -p External/Catch2
cp -r "$srcdir/Catch2"/* External/Catch2/
mkdir -p Source/Common/cpp-optparse
cp -r "$srcdir/cpp-optparse"/* Source/Common/cpp-optparse/
mkdir -p External/Vulkan-Headers
cp -r "$srcdir/Vulkan-Headers"/* External/Vulkan-Headers/
mkdir -p External/drm-headers
cp -r "$srcdir/drm-headers"/* External/drm-headers/
mkdir -p External/fmt
cp -r "$srcdir/fmt"/* External/fmt/
mkdir -p External/jemalloc
cp -r "$srcdir/jemalloc"/* External/jemalloc/
mkdir -p External/jemalloc_glibc
cp -r "$srcdir/jemalloc-glibc"/* External/jemalloc_glibc/
mkdir -p External/range-v3
cp -r "$srcdir/range-v3"/* External/range-v3/
mkdir -p External/robin-map
cp -r "$srcdir/robin-map"/* External/robin-map/
mkdir -p External/tracy
cp -r "$srcdir/tracy"/* External/tracy/
mkdir -p External/vixl
cp -r "$srcdir/vixl"/* External/vixl/
mkdir -p External/xxhash
cp -r "$srcdir/xxhash"/* External/xxhash/
# Fix xxhash CMakeLists.txt for newer CMake versions
sed -i 's/cmake_minimum_required (VERSION 2.8.12 FATAL_ERROR)/cmake_minimum_required (VERSION 3.5 FATAL_ERROR)/' \
External/xxhash/cmake_unofficial/CMakeLists.txt
}
build() {
cd "$srcdir/FEX"
export CFLAGS="-O3 -g -pipe -Wall -Wextra"
export CXXFLAGS="$CFLAGS"
export LDFLAGS="-Wl,--gc-sections -static"
export PATH="$srcdir/llvm-mingw-20250920-ucrt-ubuntu-22.04-aarch64/bin:$PATH"
# Build ARM64EC variant
mkdir -p build-arm64ec
cd build-arm64ec
cmake -GNinja \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DCMAKE_CXX_FLAGS="$CFLAGS" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=/usr/lib/wine/aarch64-windows \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=../Data/CMake/toolchain_mingw.cmake \
-DENABLE_LTO=False \
-DTUNE_CPU=none \
-DMINGW_TRIPLE=arm64ec-w64-mingw32 \
-DBUILD_TESTING=False \
-DENABLE_JEMALLOC_GLIBC_ALLOC=False \
-DCMAKE_DISABLE_FIND_PACKAGE_fmt=ON \
..
sed -i 's/arm64ec-w64-mingw32-dlltool/llvm-dlltool -m arm64ec/g' build.ninja
ninja
cd ..
# Build WOW64 variant
mkdir -p build-wow64
cd build-wow64
cmake -GNinja \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DCMAKE_CXX_FLAGS="$CFLAGS" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=/usr/lib/wine/aarch64-windows \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=../Data/CMake/toolchain_mingw.cmake \
-DENABLE_LTO=False \
-DTUNE_CPU=none \
-DMINGW_TRIPLE=aarch64-w64-mingw32 \
-DBUILD_TESTING=False \
-DENABLE_JEMALLOC_GLIBC_ALLOC=OFF \
-DCMAKE_DISABLE_FIND_PACKAGE_fmt=ON \
..
sed -i 's/aarch64-w64-mingw32-dlltool/llvm-dlltool -m arm64/g' build.ninja
ninja
}
package() {
cd "$srcdir/FEX"
# Install ARM64EC build
cd build-arm64ec
DESTDIR="$pkgdir" ninja install
cd ..
# Install WOW64 build
cd build-wow64
DESTDIR="$pkgdir" ninja install
cd ..
# Remove unwanted files
rm -rf "$pkgdir/usr/include"
rm -rf "$pkgdir/usr/share"
# Install license
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
|