|
|
|
#!/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 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
|