qmk-firmware/util/install_dependencies.sh
2017-08-20 11:17:19 -04:00

119 lines
3 KiB
Bash
Executable file

#!/usr/bin/env bash
# This script will attempt to setup the Linux dependencies for compiling QMK/TMK
# This could probably go much lower, but since we are including an Arch vagrant,
# making it the first match makes sense
if [[ -n "$(type -P pacman )" ]]; then
# Arch linux and derivatives like Apricity
# Future improvements:
# Allow user to speed up package installs using powerpill/wget tweaks
# Always run the pacman mirror update script if possible when vagrant comes up
# This will ensure that users never get stalled on a horribly slow mirror
pacman -Syyu --needed --noconfirm
pacman -S --needed --noconfirm \
base-devel \
avr-gcc \
avr-binutils \
avr-libc \
dfu-util \
arm-none-eabi-gcc \
arm-none-eabi-binutils \
arm-none-eabi-newlib \
git \
diffutils
elif [[ -n "$(type -P apt-get)" ]]; then
# Debian and derivatives
# This block performs completely non-interactive updates {{
export DEBIAN_FRONTEND=noninteractive
export DEBCONF_NONINTERACTIVE_SEEN=true
echo "grub-pc hold" | dpkg --set-selections
apt-get -y update
apt-get -y --allow-unauthenticated upgrade \
-o Dpkg::Options::="--force-confdef" \
-o Dpkg::Options::="--force-confold"
# }}
apt-get install -y \
build-essential \
gcc \
unzip \
wget \
zip \
gcc-avr \
binutils-avr \
avr-libc \
dfu-programmer \
dfu-util \
gcc-arm-none-eabi \
binutils-arm-none-eabi \
libnewlib-arm-none-eabi \
git \
diffutils
elif [[ -n "$(type -P yum)" ]]; then
# Fedora, CentOS or RHEL and derivatives
yum -y makecache && yum -y update
yum -y install \
gcc \
glibc-headers \
kernel-devel \
kernel-headers \
make \
perl \
git \
wget \
avr-binutils \
avr-gcc \
avr-libc \
dfu-programmer \
dfu-util \
arm-none-eabi-gcc-cs \
arm-none-eabi-newlib \
git \
diffutils
# The listed eabi pacackes do unfortunately not exist for CentOS,
# But at least in Fedora they do, so try to install them anyway
# TODO: Build them from sources, if the installation fails
elif [[ -n "$(type -P zypper)" ]]; then
# openSUSE
zypper --non-interactive refresh && zypper --non-interactive update
zypper --non-interactive install \
git \
make \
gcc \
kernel-devel \
patch \
wget \
dfu-programmer \
git \
diffutils
# TODO: The avr and eabi tools are not available as default packages, so we need
# another way to install them
elif [[ -n "$(type -P pkg)" ]]; then
# FreeBSD
pkg update
pkg install -y \
git \
wget \
gmake \
gcc \
zip \
unzip \
avr-binutils \
avr-gcc \
avr-libc \
dfu-programmer \
dfu-util \
arm-none-eabi-gcc \
arm-none-eabi-binutils \
arm-none-eabi-newlib \
diffutils
elif [[ -n "$(type -P emerge)" ]]; then
echo 'Please check that your gcc is built with the multilib use flag enabled.'
emerge -vq sys-devel/crossdev
USE="-openmp -hardened -sanitize -vtv" crossdev -s4 --stable --g =4.9.4 --portage --verbose --target avr
fi