summaryrefslogtreecommitdiff
path: root/apps/desktop/script
diff options
context:
space:
mode:
Diffstat (limited to 'apps/desktop/script')
-rw-r--r--apps/desktop/script/setup110
-rw-r--r--apps/desktop/script/setup.ps127
2 files changed, 137 insertions, 0 deletions
diff --git a/apps/desktop/script/setup b/apps/desktop/script/setup
new file mode 100644
index 00000000..3152a080
--- /dev/null
+++ b/apps/desktop/script/setup
@@ -0,0 +1,110 @@
+#!/usr/bin/env bash
+
+# Installs the native system libraries GPUI needs to compile on Linux/macOS.
+# Run script/setup-rust first if you don't have Rust installed yet.
+
+set -euo pipefail
+
+if [ "$(id -u)" -eq 0 ]; then
+ maysudo=''
+else
+ maysudo="$(command -v sudo || command -v doas || true)"
+fi
+
+# Ubuntu, Debian, Mint, Pop!_OS, Kali, Raspbian, etc.
+apt=$(command -v apt-get || true)
+if [[ -n $apt ]]; then
+ deps=(
+ curl
+ build-essential
+ pkg-config
+ gcc
+ g++
+ make
+ libasound2-dev
+ libfontconfig-dev
+ libglib2.0-dev
+ libssl-dev
+ libva-dev
+ libvulkan1
+ libwayland-dev
+ libx11-xcb-dev
+ libxkbcommon-x11-dev
+ libzstd-dev
+ libsqlite3-dev
+ )
+
+ $maysudo "$apt" update
+ $maysudo "$apt" install -y "${deps[@]}"
+ echo "Desktop native dependencies installed."
+ exit 0
+fi
+
+# Fedora, RHEL, CentOS, Alma, etc.
+dnf=$(command -v dnf || true)
+if [[ -n $dnf ]]; then
+ deps=(
+ gcc
+ gcc-c++
+ make
+ pkg-config
+ alsa-lib-devel
+ fontconfig-devel
+ glib2-devel
+ openssl-devel
+ libva-devel
+ vulkan-loader
+ wayland-devel
+ libxcb-devel
+ libxkbcommon-x11-devel
+ libzstd-devel
+ sqlite-devel
+ curl
+ )
+
+ $maysudo "$dnf" install -y "${deps[@]}"
+ echo "Desktop native dependencies installed."
+ exit 0
+fi
+
+# Arch, Manjaro, etc.
+pacman=$(command -v pacman || true)
+if [[ -n $pacman ]]; then
+ deps=(
+ gcc
+ make
+ pkgconf
+ alsa-lib
+ fontconfig
+ glib2
+ openssl
+ libva
+ vulkan-loader
+ wayland
+ libxcb
+ libxkbcommon-x11
+ zstd
+ sqlite
+ curl
+ )
+
+ $maysudo "$pacman" -Syu --needed --noconfirm "${deps[@]}"
+ echo "Desktop native dependencies installed."
+ exit 0
+fi
+
+# macOS
+if [[ "$(uname)" == "Darwin" ]]; then
+ if ! xcode-select -p &> /dev/null; then
+ echo "Installing Xcode Command Line Tools..."
+ xcode-select --install
+ echo "Re-run this script after the Xcode install completes."
+ exit 0
+ fi
+
+ echo "Desktop native dependencies installed."
+ exit 0
+fi
+
+echo "Unsupported platform. See apps/desktop/README.md for manual setup instructions."
+exit 1
diff --git a/apps/desktop/script/setup.ps1 b/apps/desktop/script/setup.ps1
new file mode 100644
index 00000000..63f7fd1a
--- /dev/null
+++ b/apps/desktop/script/setup.ps1
@@ -0,0 +1,27 @@
+# Installs the native build tools GPUI needs to compile on Windows.
+# Run script/setup-rust.ps1 first if you don't have Rust installed yet.
+
+$ErrorActionPreference = "Stop"
+
+function Check-VSBuildTools {
+ $vswhere = "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"
+
+ if (-not (Test-Path $vswhere)) {
+ return $false
+ }
+
+ $result = & $vswhere -latest -requires Microsoft.VisualStudio.Workload.NativeDesktop -property installationPath
+ return $result -and $result.Trim().Length -gt 0
+}
+
+if (-not (Check-VSBuildTools)) {
+ Write-Output ""
+ Write-Output "Visual Studio Build Tools with 'Desktop development with C++' not found."
+ Write-Output ""
+ Write-Output "Install it from: https://visualstudio.microsoft.com/visual-cpp-build-tools/"
+ Write-Output "Check the 'Desktop development with C++' workload during setup, then re-run this script."
+ Write-Output ""
+ exit 1
+}
+
+Write-Output "Desktop native dependencies ready."