214 lines
5.5 KiB
Bash
Executable File
214 lines
5.5 KiB
Bash
Executable File
#!/bin/sh -e
|
|
|
|
# build
|
|
# Simple wiringPi build and install script
|
|
#
|
|
# Copyright (c) 2012-2015 Gordon Henderson
|
|
#################################################################################
|
|
# This file is part of wiringPi:
|
|
# A "wiring" library for the Raspberry Pi
|
|
#
|
|
# wiringPi is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Lesser General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# wiringPi is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU Lesser General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Lesser General Public License
|
|
# along with wiringPi. If not, see <http://www.gnu.org/licenses/>.
|
|
#################################################################################
|
|
#
|
|
# wiringPi is designed to run on a Raspberry Pi only.
|
|
# However if you're clever enough to actually look at this script to
|
|
# see why it's not building for you, then good luck.
|
|
#
|
|
# To everyone else: Stop using cheap alternatives. Support the
|
|
# Raspberry Pi Foundation as they're the only ones putting money
|
|
# back into education!
|
|
#################################################################################
|
|
|
|
sudo=${WIRINGPI_SUDO-sudo}
|
|
make="make -j $(( $(nproc) + 1 ))"
|
|
hardware=$(fgrep -a Hardware /proc/cpuinfo | head -1 | awk '{ printf("%s %s %s\n", $3, $4, $5) }' | xargs)
|
|
[ "$hardware",, != *"odroid"* ] \
|
|
&& [ -f "/sys/firmware/devicetree/base/model" ] \
|
|
&& hardware=$(cat /sys/firmware/devicetree/base/model)
|
|
|
|
check_make_ok() {
|
|
if [ $? != 0 ]; then
|
|
echo ""
|
|
echo "Make Failed..."
|
|
echo "Please check the messages and fix any problems. If you're still stuck,"
|
|
echo "then please email all the output and as many details as you can to"
|
|
echo " projects@drogon.net"
|
|
echo ""
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
configure_gpiomem() {
|
|
[ $(env | grep DEB_BUILD | wc -l) -ne 0 ] && return
|
|
|
|
GPIOMEM="/dev/gpiomem"
|
|
|
|
if [ -z $1 ] && [ "$(stat -c "%a %G" "$GPIOMEM")" != "660"*"odroid" ]; then
|
|
echo "Configure /dev/gpiomem"
|
|
case "$(echo $hardware | tr [:upper:] [:lower:])" in
|
|
*xu4)
|
|
$sudo cp -f udev/rules.d/99-odroid-wiringpi-exynos.rules /etc/udev/rules.d/
|
|
;;
|
|
*c|*c1|*c2)
|
|
$sudo cp -f udev/rules.d/99-odroid-wiringpi-meson.rules /etc/udev/rules.d/
|
|
;;
|
|
*n2)
|
|
$sudo cp -f udev/rules.d/99-odroid-wiringpi-aml.rules /etc/udev/rules.d/
|
|
;;
|
|
*)
|
|
echo "This system seems not ODROID"
|
|
;;
|
|
esac
|
|
|
|
echo "Reload udev..."
|
|
[ -x "$(command -v udevadm)" ] \
|
|
&& $sudo udevadm trigger \
|
|
|| echo "udevadm not found. Please reboot to take effect"
|
|
elif [ "$1" = "uninstall" ]; then
|
|
echo "Deconfigure /dev/gpiomem"
|
|
$sudo rm -f /etc/udev/rules.d/99-odroid-wiringpi-*
|
|
else
|
|
echo "Not found $GPIOMEM"
|
|
echo "You will not be able to use WiringPi without root permission"
|
|
fi
|
|
}
|
|
|
|
install() {
|
|
echo "wiringPi Build script"
|
|
echo "====================="
|
|
echo
|
|
|
|
echo
|
|
echo "WiringPi Library"
|
|
cd wiringPi
|
|
# $sudo $make uninstall
|
|
if [ x$1 = "xstatic" ]; then
|
|
$make static
|
|
check_make_ok
|
|
$sudo $make install-static
|
|
else
|
|
$make
|
|
check_make_ok
|
|
$sudo $make install
|
|
fi
|
|
check_make_ok
|
|
|
|
echo
|
|
echo "WiringPi Devices Library"
|
|
cd ../devLib
|
|
$sudo $make uninstall
|
|
if [ x$1 = "xstatic" ]; then
|
|
$make static
|
|
check_make_ok
|
|
$sudo $make install-static
|
|
else
|
|
$make
|
|
check_make_ok
|
|
$sudo $make install
|
|
fi
|
|
check_make_ok
|
|
|
|
echo
|
|
echo "GPIO Utility"
|
|
cd ../gpio
|
|
$make
|
|
check_make_ok
|
|
$sudo $make install
|
|
check_make_ok
|
|
|
|
echo
|
|
cd ..
|
|
configure_gpiomem
|
|
|
|
echo
|
|
echo All Done.
|
|
echo ""
|
|
echo "NOTE: To compile programs with wiringPi, you need to add:"
|
|
echo " -lwiringPi"
|
|
echo " to your compile line(s) To use the Gertboard, MaxDetect, etc."
|
|
echo " code (the devLib), you need to also add:"
|
|
echo " -lwiringPiDev"
|
|
echo " to your compile line(s)."
|
|
echo ""
|
|
}
|
|
|
|
uninstall() {
|
|
cd wiringPi
|
|
echo -n "wiringPi: " ; $sudo $make uninstall
|
|
cd ../devLib
|
|
echo -n "DevLib: " ; $sudo $make uninstall
|
|
cd ../gpio
|
|
echo -n "gpio: " ; $sudo $make uninstall
|
|
cd ..
|
|
configure_gpiomem uninstall
|
|
echo
|
|
}
|
|
|
|
clean() {
|
|
cd wiringPi
|
|
echo -n "wiringPi: " ; $make clean
|
|
cd ../devLib
|
|
echo -n "DevLib: " ; $make clean
|
|
cd ../gpio
|
|
echo -n "gpio: " ; $make clean
|
|
cd ../examples
|
|
echo -n "Examples: " ; $make clean
|
|
cd Gertboard
|
|
echo -n "Gertboard: " ; $make clean
|
|
cd ../PiFace
|
|
echo -n "PiFace: " ; $make clean
|
|
cd ../q2w
|
|
echo -n "Quick2Wire: " ; $make clean
|
|
cd ../PiGlow
|
|
echo -n "PiGlow: " ; $make clean
|
|
cd ../scrollPhat
|
|
echo -n "scrollPhat: " ; $make clean
|
|
cd ../..
|
|
}
|
|
|
|
if [ x$1 = "xclean" ]; then
|
|
clean
|
|
exit
|
|
fi
|
|
|
|
if [ x$1 = "xuninstall" ]; then
|
|
uninstall
|
|
exit
|
|
fi
|
|
|
|
# Only if you know what you're doing!
|
|
if [ x$1 = "xdebian" ]; then
|
|
here=`pwd`
|
|
cd debian-template/wiringPi
|
|
rm -rf usr
|
|
cd $here/wiringPi
|
|
$make install-deb
|
|
cd $here/devLib
|
|
$make install-deb INCLUDE='-I. -I../wiringPi'
|
|
cd $here/gpio
|
|
$make install-deb INCLUDE='-I../wiringPi -I../devLib' LDFLAGS=-L../debian-template/wiringPi/usr/lib
|
|
cd $here/debian-template
|
|
fakeroot dpkg-deb --build wiringPi
|
|
mv wiringPi.deb odroid-wiringpi-`cat $here/VERSION`.deb
|
|
exit
|
|
fi
|
|
|
|
if [ x$1 != "x" ]; then
|
|
echo "Usage: $0 [clean | uninstall]"
|
|
exit 1
|
|
fi
|
|
|
|
uninstall; clean; install
|