1#!/usr/bin/env bash
2
3set -ex
4
5# install the wasm toolchain
6which rustup > /dev/null 2>&1 || curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
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 gcc
17 g++
18 libasound2-dev
19 libfontconfig-dev
20 libwayland-dev
21 libxkbcommon-x11-dev
22 libssl-dev
23 libzstd-dev
24 libvulkan1
25 libgit2-dev
26 )
27 $maysudo "$apt" install -y "${deps[@]}"
28 exit 0
29fi
30
31# Fedora, CentOS, RHEL, etc.
32# https://packages.fedoraproject.org/
33dnf=$(command -v dnf || true)
34if [[ -n $dnf ]]; then
35 deps=(
36 gcc
37 g++
38 alsa-lib-devel
39 fontconfig-devel
40 wayland-devel
41 libxkbcommon-x11-devel
42 openssl-devel
43 libzstd-devel
44 # Perl dependencies are needed for openssl-sys crate see https://docs.rs/openssl/latest/openssl/
45 perl-FindBin
46 perl-IPC-Cmd
47 perl-File-Compare
48 perl-File-Copy
49 vulkan-loader
50 )
51
52 # libxkbcommon-x11-devel is in the crb repo on RHEL and CentOS, not needed for Fedora
53 if ! grep -q "Fedora" /etc/redhat-release; then
54 $maysudo "$dnf" config-manager --set-enabled crb
55 fi
56
57 $maysudo "$dnf" install -y "${deps[@]}"
58 exit 0
59fi
60
61# openSUSE
62# https://software.opensuse.org/
63zyp=$(command -v zypper || true)
64if [[ -n $zyp ]]; then
65 deps=(
66 alsa-devel
67 fontconfig-devel
68 wayland-devel
69 libxkbcommon-x11-devel
70 openssl-devel
71 libzstd-devel
72 libvulkan1
73 )
74 $maysudo "$zyp" install -y "${deps[@]}"
75 exit 0
76fi
77
78# Arch, Manjaro, etc.
79# https://archlinux.org/packages
80pacman=$(command -v pacman || true)
81if [[ -n $pacman ]]; then
82 deps=(
83 alsa-lib
84 fontconfig
85 wayland
86 libxkbcommon-x11
87 openssl
88 zstd
89 pkgconf
90 )
91 $maysudo "$pacman" -S --needed --noconfirm "${deps[@]}"
92 exit 0
93fi
94
95# Void
96# https://voidlinux.org/packages/
97xbps=$(command -v xbps-install || true)
98if [[ -n $xbps ]]; then
99 deps=(
100 alsa-lib-devel
101 fontconfig-devel
102 libxcb-devel
103 libxkbcommon-devel
104 libzstd-devel
105 openssl-devel
106 wayland-devel
107 vulkan-loader
108 )
109 $maysudo "$xbps" -Syu "${deps[@]}"
110 exit 0
111fi
112
113# Gentoo
114# https://packages.gentoo.org/
115emerge=$(command -v emerge || true)
116if [[ -n $emerge ]]; then
117 deps=(
118 app-arch/zstd
119 dev-libs/openssl
120 dev-libs/wayland
121 media-libs/alsa-lib
122 media-libs/fontconfig
123 media-libs/vulkan-loader
124 x11-libs/libxcb
125 x11-libs/libxkbcommon
126 )
127 $maysudo "$emerge" -u "${deps[@]}"
128 exit 0
129fi
130
131echo "Unsupported Linux distribution in script/linux"