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 libgit2-dev
24 )
25 $maysudo "$apt" install -y "${deps[@]}"
26 exit 0
27fi
28
29# Fedora, CentOS, RHEL, etc.
30# https://packages.fedoraproject.org/
31dnf=$(command -v dnf || true)
32if [[ -n $dnf ]]; then
33 deps=(
34 gcc
35 g++
36 alsa-lib-devel
37 fontconfig-devel
38 wayland-devel
39 libxkbcommon-x11-devel
40 openssl-devel
41 libzstd-devel
42 vulkan-loader
43 )
44
45 # libxkbcommon-x11-devel is in the crb repo on RHEL and CentOS, not needed for Fedora
46 if ! grep -q "Fedora" /etc/redhat-release; then
47 $maysudo "$dnf" config-manager --set-enabled crb
48 fi
49
50 $maysudo "$dnf" install -y "${deps[@]}"
51 exit 0
52fi
53
54# openSuse
55# https://software.opensuse.org/
56zyp=$(command -v zypper || true)
57if [[ -n $zyp ]]; then
58 deps=(
59 alsa-devel
60 fontconfig-devel
61 wayland-devel
62 libxkbcommon-x11-devel
63 openssl-devel
64 libzstd-devel
65 vulkan-loader
66 )
67 $maysudo "$zyp" install -y "${deps[@]}"
68 exit 0
69fi
70
71# Arch, Manjaro, etc.
72# https://archlinux.org/packages
73pacman=$(command -v pacman || true)
74if [[ -n $pacman ]]; then
75 deps=(
76 alsa-lib
77 fontconfig
78 wayland
79 libxkbcommon-x11
80 openssl
81 zstd
82 )
83 $maysudo "$pacman" -S --needed --noconfirm "${deps[@]}"
84 exit 0
85fi
86
87# Void
88# https://voidlinux.org/packages/
89xbps=$(command -v xbps-install || true)
90if [[ -n $xbps ]]; then
91 deps=(
92 alsa-lib-devel
93 fontconfig-devel
94 libxcb-devel
95 libxkbcommon-devel
96 libzstd-devel
97 openssl-devel
98 wayland-devel
99 vulkan-loader
100 )
101 $maysudo "$xbps" -Syu "${deps[@]}"
102 exit 0
103fi
104
105# Gentoo
106# https://packages.gentoo.org/
107emerge=$(command -v emerge || true)
108if [[ -n $emerge ]]; then
109 deps=(
110 app-arch/zstd
111 dev-libs/openssl
112 dev-libs/wayland
113 media-libs/alsa-lib
114 media-libs/fontconfig
115 media-libs/vulkan-loader
116 x11-libs/libxcb
117 x11-libs/libxkbcommon
118 )
119 $maysudo "$emerge" -u "${deps[@]}"
120 exit 0
121fi
122
123echo "Unsupported Linux distribution in script/linux"