1#!/usr/bin/bash
2
3set -e
4
5# install the wasm toolchain
6rustup target add wasm32-wasi
7
8# if sudo is not installed, define an empty alias
9maysudo=$(command -v sudo || command -v doas || true)
10
11# Ubuntu, Debian, etc.
12# https://packages.ubuntu.com/
13apt=$(command -v apt-get || true)
14if [[ -n $apt ]]; then
15 deps=(
16 libasound2-dev
17 libfontconfig-dev
18 libwayland-dev
19 libxkbcommon-x11-dev
20 libssl-dev
21 libzstd-dev
22 libvulkan1
23 )
24 $maysudo "$apt" install -y "${deps[@]}"
25 exit 0
26fi
27
28# Fedora, CentOS, RHEL, etc.
29# https://packages.fedoraproject.org/
30dnf=$(command -v dnf || true)
31if [[ -n $dnf ]]; then
32 deps=(
33 gcc
34 g++
35 alsa-lib-devel
36 fontconfig-devel
37 wayland-devel
38 libxkbcommon-x11-devel
39 openssl-devel
40 libzstd-devel
41 vulkan-loader
42 )
43
44 # libxkbcommon-x11-devel is in the crb repo on RHEL and CentOS, not needed for Fedora
45 if ! grep -q "Fedora" /etc/redhat-release; then
46 $maysudo "$dnf" config-manager --set-enabled crb
47 fi
48
49 $maysudo "$dnf" install -y "${deps[@]}"
50 exit 0
51fi
52
53# openSuse
54# https://software.opensuse.org/
55zyp=$(command -v zypper || true)
56if [[ -n $zyp ]]; then
57 deps=(
58 alsa-devel
59 fontconfig-devel
60 wayland-devel
61 libxkbcommon-x11-devel
62 openssl-devel
63 libzstd-devel
64 vulkan-loader
65 )
66 $maysudo "$zyp" install -y "${deps[@]}"
67 exit 0
68fi
69
70# Arch, Manjaro, etc.
71# https://archlinux.org/packages
72pacman=$(command -v pacman || true)
73if [[ -n $pacman ]]; then
74 deps=(
75 alsa-lib
76 fontconfig
77 wayland
78 libxkbcommon-x11
79 openssl
80 zstd
81 )
82 $maysudo "$pacman" -S --needed --noconfirm "${deps[@]}"
83 exit 0
84fi
85
86# Void
87# https://voidlinux.org/packages/
88xbps=$(command -v xbps-install || true)
89if [[ -n $xbps ]]; then
90 deps=(
91 alsa-lib-devel
92 fontconfig-devel
93 libxcb-devel
94 libxkbcommon-devel
95 libzstd-devel
96 openssl-devel
97 wayland-devel
98 vulkan-loader
99 )
100 $maysudo "$xbps" -Syu "${deps[@]}"
101 exit 0
102fi
103
104echo "Unsupported Linux distribution in script/linux"