summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 7b76f220ba8d89235df3296209b502f2c8dfb9c7 (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
# Maintainer: Dylan Sandall <dsandalledu@gmail.com>
pkgname=smi-usbdisplay
pkgver=2.24.8.0
pkgrel=1
pkgdesc="Silicon Motion SMI USB Display driver (userspace daemon for 090c:0768)"
arch=('x86_64')
url="https://www.siliconmotion.com"
license=('custom')
depends=('evdi-dkms-git' 'libusb')
optdepends=('xorg-server: Xorg display config is installed')
install="smi-usbdisplay.install"
source=(
  "SMI-USB-Display-for-Linux-v${pkgver}.zip::https://www.siliconmotion.com/downloads/SMI-USB-Display-for-Linux-v${pkgver}.zip"
  "smiusbdisplay.service"
  "99-smiusbdisplay.rules"
  "smi-udev.sh"
  "20-smi.conf"
)
noextract=("SMI-USB-Display-for-Linux-v${pkgver}.zip")
sha256sums=(
  'bb22458b526471b79af41874712247ae12dfdcaefca638d1e2c78103751fe07f'
  'b95a0d56fe93a10ce5177e7a6a5cb52a8e2cca014a35f3976fbecb3e2b1b089a'
  'b8e1f7313cf088ad8682f534311558d095e6d47fc8824a6854c6683ddf0baa52'
  '058241b06c90232588c49d1b84b7b75cc6ddd0a0ed678d9ae124ac5517b3d86a'
  '47258acba683691c75ae897b8e5d7d2ca418a4b4f78c4359c7aca4cbde19dc35'
)

prepare() {
  unzip -o "SMI-USB-Display-for-Linux-v${pkgver}.zip"
  chmod +x "SMIUSBDisplay-driver.${pkgver}.run"
  "./SMIUSBDisplay-driver.${pkgver}.run" --noexec --target "$srcdir/smi-src"
}

package() {
  cd "$srcdir/smi-src"

  # Binary
  install -Dm755 x64/SMIUSBDisplayManager "$pkgdir/opt/siliconmotion/SMIUSBDisplayManager"

  # Firmware
  install -Dm644 Bootloader0.bin  "$pkgdir/opt/siliconmotion/Bootloader0.bin"
  install -Dm644 Bootloader1.bin  "$pkgdir/opt/siliconmotion/Bootloader1.bin"
  install -Dm644 firmware0.bin    "$pkgdir/opt/siliconmotion/firmware0.bin"
  install -Dm644 USBDisplay.bin   "$pkgdir/opt/siliconmotion/USBDisplay.bin"
  install -Dm644 USBDisplay770.bin "$pkgdir/opt/siliconmotion/USBDisplay770.bin"

  # smi-installer symlink target
  install -Dm755 install.sh "$pkgdir/opt/siliconmotion/install.sh"
  install -dm755 "$pkgdir/usr/bin"
  ln -s /opt/siliconmotion/install.sh "$pkgdir/usr/bin/smi-installer"

  # udev bootstrap script
  install -Dm744 "$srcdir/smi-udev.sh" "$pkgdir/opt/siliconmotion/smi-udev.sh"

  # Systemd service
  install -Dm644 "$srcdir/smiusbdisplay.service" \
    "$pkgdir/usr/lib/systemd/system/smiusbdisplay.service"

  # udev rules
  install -Dm644 "$srcdir/99-smiusbdisplay.rules" \
    "$pkgdir/etc/udev/rules.d/99-smiusbdisplay.rules"

  # Xorg config
  install -Dm644 "$srcdir/20-smi.conf" \
    "$pkgdir/usr/share/X11/xorg.conf.d/20-smi.conf"

  # Module autoload + options
  install -Dm644 /dev/stdin "$pkgdir/etc/modules-load.d/evdi.conf" <<< "evdi"
  install -Dm644 /dev/stdin "$pkgdir/etc/modprobe.d/evdi.conf" \
    <<< "options evdi initial_device_count=4"

  # Log directory
  install -dm755 "$pkgdir/var/log/SMIUSBDisplay"

  # License
  install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}