# -*- shell-script -*- ## NEEDS: LIBRARY, SKETCH, ROOT, SOURCEDIR ## Should be included when the current directory is the dir of the Sketch. SKETCH="${SKETCH:-${DEFAULT_SKETCH}}" LIBRARY="${LIBRARY:-${SKETCH}}" ######## ######## Keyboard hardware definitions ######## BOARD="${BOARD:-model01}" MCU="${MCU:-atmega32u4}" if [ -z "${ARCH}" ]; then ARCH=$(echo "${FQBN}" | sed -n -e 's/^[^:]\+:\([^:]\+\).*/\1/p') fi if [ "${ARCH}" = "x86" ]; then FQBN="${FQBN:-keyboardio:x86:${BOARD}}" # Set the compiler path for virtual builds (x86) # if [ -z "${COMPILER_PATH}" ]; then COMPILER_PATH="/usr/bin" COMPILER_PREFIX="" fi else ARCH="avr" fi if [ -z "${FQBN}" ]; then FQBN="${FQBN:-keyboardio:avr:${BOARD}}" fi ######## ######## Host OS specific commands ######## ## Platform-specific overrides # Shamelessly stolen from git's Makefile uname_S=$(uname -s 2>/dev/null || echo not) find_max_prog_size() { VPIDS=$("${ARDUINO_BUILDER}" \ -hardware "${ARDUINO_PATH}/hardware" \ -hardware "${BOARD_HARDWARE_PATH}" \ ${ARDUINO_TOOLS_FLAG:+"${ARDUINO_TOOLS_FLAG}"} ${ARDUINO_TOOLS_PARAM:+"${ARDUINO_TOOLS_PARAM}"} \ -tools "${ARDUINO_PATH}/tools-builder" \ -fqbn "${FQBN}" \ -dump-prefs | grep "upload\.maximum_size=") MAX_PROG_SIZE=${MAX_PROG_SIZE:-$(echo "${VPIDS}" | grep upload.maximum_size | head -n 1 | cut -d= -f2)} } find_device_vid_pid() { VPIDS=$("${ARDUINO_BUILDER}" \ -hardware "${ARDUINO_PATH}/hardware" \ -hardware "${BOARD_HARDWARE_PATH}" \ ${ARDUINO_TOOLS_FLAG:+"${ARDUINO_TOOLS_FLAG}"} ${ARDUINO_TOOLS_PARAM:+"${ARDUINO_TOOLS_PARAM}"} \ -tools "${ARDUINO_PATH}/tools-builder" \ -fqbn "${FQBN}" \ -dump-prefs | grep "\.[vp]id=") VID=${VID:-$(echo "${VPIDS}" | grep build.vid= | cut -dx -f2)} SKETCH_PID=${SKETCH_PID:-$(echo "${VPIDS}" | grep build.pid= | cut -dx -f2)} BOOTLOADER_PID=${BOOTLOADER_PID:-$(echo "${VPIDS}" | grep bootloader.pid= | cut -dx -f2)} BOOTLOADER_VID=${BOOTLOADER_VID:-$(echo "${VPIDS}" | grep bootloader.vid= | cut -dx -f2)} } find_device_port() { find_device_vid_pid DIR=$(dirname "$(readlink -f "$0")") DEVICE_PORT_PROBER="${DIR}/find-device-port-linux-udev" DEVICE_PORT="$(perl ${DEVICE_PORT_PROBER} ${VID} ${SKETCH_PID})" } reset_device_cmd() { if [ -z ${NO_RESET} ]; then stty -F ${DEVICE_PORT} 1200 hupcl fi } find_bootloader_ports() { find_device_vid_pid DIR=$(dirname "$(readlink -f "$0")") BOOTLOADER_VID="${BOOTLOADER_VID:-${VID}}" DEVICE_PORT_PROBER="${DIR}/find-device-port-linux-udev" DEVICE_PORT_BOOTLOADER="$(perl ${DEVICE_PORT_PROBER} ${BOOTLOADER_VID} ${BOOTLOADER_PID})" } MD5="md5sum" if [ "${uname_S}" = "Darwin" ]; then find_device_port() { DIR=$(dirname "$0") DEVICE_PORT_PROBER="${DIR}/find-device-port-macos" DEVICE_PORT="$(perl ${DEVICE_PORT_PROBER})" } reset_device_cmd() { /bin/stty -f ${DEVICE_PORT} 1200 } ARDUINO_PATH="${ARDUINO_PATH:-/Applications/Arduino.app/Contents/Java/}" ARDUINO_PACKAGE_PATH="${ARDUINO_PACKAGE_PATH:-${HOME}/Library/Arduino15/packages}" ARDUINO_LOCAL_LIB_PATH="${ARDUINO_LOCAL_LIB_PATH:-${HOME}/Documents/Arduino}" MD5="md5" find_bootloader_ports() { DIR=$(dirname "$0") DEVICE_PORT_PROBER="${DIR}/find-device-port-macos" DEVICE_PORT_BOOTLOADER="$(perl ${DEVICE_PORT_PROBER})" } elif [ "${uname_S}" = "FreeBSD" ]; then find_device_port() { DIR=$(dirname "$0") DEVICE_PORT_PROBER="${DIR}/find-device-port-freebsd" DEVICE_PORT="$(perl ${DEVICE_PORT_PROBER})" } reset_device_cmd() { /bin/stty -f ${DEVICE_PORT} 1200 } MD5="md5" AVR_SIZE="${AVR_SIZE:-/usr/local/bin/avr-size}" AVR_NM="${AVR_NM:-/usr/local/bin/avr-nm}" AVR_OBJDUMP="${AVR_OBJDUMP:-/usr/local/bin/avr-objdump}" AVRDUDE="${AVRDUDE:-/usr/local/bin/avrdude}" AVRDUDE_CONF="${AVRDUDE_CONF:-/usr/local/etc/avrdude.conf}" find_bootloader_ports() { DIR=$(dirname "$0") DEVICE_PORT_PROBER="${DIR}/find-device-port-freebsd" DEVICE_PORT_BOOTLOADER="$(perl ${DEVICE_PORT_PROBER})" } fi ###### ###### Arduino tools configuration ###### ARDUINO_PATH="${ARDUINO_PATH:-/usr/local/arduino}" ARDUINO_LOCAL_LIB_PATH="${ARDUINO_LOCAL_LIB_PATH:-${HOME}/Arduino}" ARDUINO_TOOLS_PATH="${ARDUINO_TOOLS_PATH:-${ARDUINO_PATH}/hardware/tools}" ARDUINO_PACKAGE_PATH="${ARDUINO_PACKAGE_PATH:-${HOME}/.arduino15/packages}" ARDUINO_BUILDER="${ARDUINO_BUILDER:-${ARDUINO_PATH}/arduino-builder}" ARDUINO_IDE_VERSION="10607" ###### ###### Executable paths ###### # Allow the compiler path to be empty for x86 builds COMPILER_PATH="${COMPILER_PATH-${ARDUINO_TOOLS_PATH}/avr/bin/}" # Allow the compiler prefix to be empty for x86 builds COMPILER_PREFIX="${COMPILER_PREFIX-avr-}" AVR_SIZE="${AVR_SIZE:-${COMPILER_PATH}/${COMPILER_PREFIX}size}" AVR_SIZE_FLAGS="${AVR_SIZE_FLAGS:--C --mcu=${MCU}}" AVR_OBJDUMP="${AVR_OBJDUMP:-${COMPILER_PATH}/${COMPILER_PREFIX}objdump}" AVR_OBJCOPY="${AVR_OBJCOPY:-${COMPILER_PATH}/${COMPILER_PREFIX}objcopy}" AVR_NM="${AVR_NM:-${COMPILER_PATH}/${COMPILER_PREFIX}nm}" AVR_AR="${AVR_AR:-${COMPILER_PATH}/${COMPILER_PREFIX}ar}" AVR_GCC="${AVR_GCC:-${COMPILER_PATH}/${COMPILER_PREFIX}gcc}" AVR_GPLUSPLUS="${AVR_GCC:-${COMPILER_PATH}/${COMPILER_PREFIX}g++}" AVRDUDE="${AVRDUDE:-${ARDUINO_TOOLS_PATH}/avr/bin/avrdude}" AVRDUDE_CONF="${AVRDUDE_CONF:-${ARDUINO_TOOLS_PATH}/avr/etc/avrdude.conf}" ###### ###### Source files and dependencies ###### BOARD_HARDWARE_PATH="${BOARD_HARDWARE_PATH:-${ARDUINO_LOCAL_LIB_PATH}/hardware}" BOOTLOADER_PATH="${BOOTLOADER_PATH:-${BOARD_HARDWARE_PATH}/keyboardio/avr/bootloaders/caterina/Caterina.hex}" if [ ! -z "${ARDUINO_TOOLS_PATH}" ]; then ARDUINO_TOOLS_PARAM="${ARDUINO_TOOLS_PATH}" ARDUINO_TOOLS_FLAG="-tools" fi if [ ! -z "${AVR_GCC_PREFIX}" ]; then ARDUINO_AVR_GCC_PREFIX_PARAM="-prefs \"runtime.tools.avr-gcc.path=${AVR_GCC_PREFIX}\"" fi