platform neutral examples and manual cherry-pick merge of https://github.com/alissa-huskey/Arduino-Makefile/tree/test_fixes

This commit is contained in:
John Whittington 2020-08-06 19:21:23 +02:00
parent 185a1e9e35
commit bf319c49b7
27 changed files with 90 additions and 51 deletions
.travis.ymlCommon.mkSam.mk
examples
ATtinyBlink
AnalogInOutSerial
Blink
Blink3rdPartyLib
BlinkChipKIT
BlinkInAVRC
BlinkNetworkRPi
BlinkOpenCM
BlinkOpenCR
BlinkTeensy
BlinkWithoutDelay
DueBlink
Fade
HelloWorld
MZeroBlink
SerialPrint
TinySoftWareSerial
WebServer
ZeroBlink
master_reader
toneMelody
tests/script

View file

@ -1,4 +1,5 @@
sudo: required
os: linux
dist: xenial
language: c
compiler:
- gcc
@ -9,3 +10,6 @@ addons:
packages:
- "python3"
- "python3-pip"
env:
global:
- ARDMK_DIR=$TRAVIS_BUILD_DIR

View file

@ -48,20 +48,20 @@ $(call arduino_output,$(call ardmk_include) Configuration:)
ifeq ($(OS),Windows_NT)
CURRENT_OS = WINDOWS
GREP_CMD := grep
GREP_CMD = grep
else
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Linux)
CURRENT_OS = LINUX
GREP_CMD := grep
GREP_CMD = grep
endif
ifeq ($(UNAME_S),Darwin)
CURRENT_OS = MAC
ifeq (, $(shell which ggrep))
echo $(info Using macOS BSD grep, please install GNU grep to avoid warnings)
GREP_CMD := grep
GREP_CMD = grep
else
GREP_CMD := ggrep
GREP_CMD = ggrep
endif
endif
endif
@ -73,14 +73,18 @@ $(call show_config_variable,CURRENT_OS,[AUTODETECTED])
ifneq ($(TEST),)
DEPENDENCIES_DIR = /var/tmp/Arduino-Makefile-testing-dependencies
DEPENDENCIES_MPIDE_DIR = $(DEPENDENCIES_DIR)/mpide-0023-linux64-20130817-test
DEPENDENCIES_MPIDE_DIR := $(shell find $(DEPENDENCIES_DIR) -name 'mpide-0023-*' -type d -exec ls -dt {} + | head -n 1)
ifeq ($(MPIDE_DIR),)
MPIDE_DIR = $(DEPENDENCIES_MPIDE_DIR)
endif
ifndef ARDUINO_IDE_DIR
ARDUINO_IDE_DIR := $(shell basename $(basename $(basename $(lastword $(wildcard $(DEPENDENCIES_DIR)/arduino*)))))
# ARDUINO_IDE_DIR := arduino
ifeq ($(CURRENT_OS),MAC)
ARDUINO_IDE_DIR = Arduino.app/Contents/Resources/Java
else
ARDUINO_IDE_DIR := $(shell basename $(basename $(basename $(lastword $(wildcard $(DEPENDENCIES_DIR)/arduino*)))))
endif
endif
DEPENDENCIES_ARDUINO_DIR = $(DEPENDENCIES_DIR)/$(ARDUINO_IDE_DIR)
ifeq ($(ARDUINO_DIR),)

2
Sam.mk
View file

@ -38,7 +38,7 @@ ifneq ($(TEST),)
ALTERNATE_CORE_PATH = $(DEPENDENCIES_DIR)/samd
CMSIS_DIR = $(DEPENDENCIES_DIR)/CMSIS/CMSIS
CMSIS_ATMEL_DIR = $(DEPENDENCIES_DIR)/CMSIS-Atmel/CMSIS
ARM_TOOLS_DIR = $(basename $(basename $(firstword $(wildcard $(DEPENDENCIES_DIR)/gcc-arm-none-eabi*))))
ARM_TOOLS_DIR := $(basename $(basename $(firstword $(wildcard $(DEPENDENCIES_DIR)/gcc-arm-none-eabi*))))
endif
ifndef ARDUINO_PACKAGE_DIR

View file

@ -54,6 +54,6 @@ BOARD_TAG = attiny85
# ------------------------------------------------------------------ #
# Path to the Arduino Makefile
include /usr/share/arduino/Arduino.mk
include $(ARDMK_DIR)/Arduino.mk
# !!! Important. You have to use 'make ispload' when using an ISP.

View file

@ -1,4 +1,4 @@
BOARD_TAG = uno
ARDUINO_LIBS =
include ../../Arduino.mk
include $(ARDMK_DIR)/Arduino.mk

View file

@ -1,7 +1,7 @@
# Arduino Make file. Refer to https://github.com/sudar/Arduino-Makefile
BOARD_TAG = uno
include ../../Arduino.mk
include $(ARDMK_DIR)/Arduino.mk

View file

@ -15,7 +15,7 @@ TOGGLE_ARCHIVE = build-$(BOARD_TAG)/libtoggle.a
CXXFLAGS += -IToggle
OTHER_OBJS = Toggle/$(TOGGLE_ARCHIVE)
include ../../Arduino.mk
include $(ARDMK_DIR)/Arduino.mk
Toggle/$(TOGGLE_ARCHIVE):
$(MAKE) -C Toggle $(TOGGLE_ARCHIVE)

View file

@ -8,7 +8,7 @@
# and archived into the build-$(BOARD_TAG)/libtoggle.a target.
include ../board.mk
include ../../../Arduino.mk
include $(ARDMK_DIR)/Arduino.mk
build-$(BOARD_TAG)/libtoggle.a: $(LOCAL_OBJS)
$(AR) rcs $@ $(LOCAL_OBJS)

View file

@ -1,5 +1,5 @@
BOARD_TAG = mega_pic32
ARDUINO_LIBS =
include ../../chipKIT.mk
include $(ARDMK_DIR)/chipKIT.mk

View file

@ -11,6 +11,6 @@ F_CPU = 8000000L
ISP_PROG = stk500v1
AVRDUDE_ISP_BAUDRATE = 19200
include ../../Arduino.mk
include $(ARDMK_DIR)/Arduino.mk
# !!! Important. You have to use make ispload to upload when using ISP programmer

View file

@ -16,7 +16,7 @@ AVRDUDE_CONF=/usr/local/etc/avrdude.conf
FORCE_MONITOR_PORT=true
MONITOR_PORT=/dev/spidev0.0
include ../../Arduino.mk
include $(ARDMK_DIR)/Arduino.mk
# Additional rules to use a remote Raspberry Pi programmer

View file

@ -4,4 +4,4 @@ ARDUINO_LIBS =
#MONITOR_PORT = /dev/ttyACM0
#OPENCMIDE_DIR = /where/you/installed/robotis_opencm
include ../../OpenCM.mk
include $(ARDMK_DIR)/OpenCM.mk

View file

@ -5,4 +5,4 @@ ARDUINO_LIBS =
#MONITOR_PORT = /dev/ttyACM0
include ../../OpenCR.mk
include $(ARDMK_DIR)/OpenCR.mk

View file

@ -1,4 +1,4 @@
BOARD_TAG = teensy31
ARDUINO_LIBS =
include ../../Teensy.mk
include $(ARDMK_DIR)/Teensy.mk

View file

@ -1,4 +1,4 @@
BOARD_TAG = uno
ARDUINO_LIBS =
include ../../Arduino.mk
include $(ARDMK_DIR)/Arduino.mk

View file

@ -16,4 +16,4 @@ ARCHITECTURE = sam
# Windows
#ARDUINO_PACKAGE_DIR := "C:/Users/$(USER)/AppData/Local/Arduino15/packages"
include ../../Sam.mk
include $(ARDMK_DIR)/Sam.mk

View file

@ -1,4 +1,4 @@
BOARD_TAG = uno
ARDUINO_LIBS =
include ../../Arduino.mk
include $(ARDMK_DIR)/Arduino.mk

View file

@ -1,4 +1,4 @@
BOARD_TAG = uno
ARDUINO_LIBS = LiquidCrystal
include ../../Arduino.mk
include $(ARDMK_DIR)/Arduino.mk

View file

@ -21,4 +21,4 @@ BOARD_TAG = mzero_pro_bl_dbg
# Windows
# ARDUINO_PACKAGE_DIR := "C:/Users/$(USER)/AppData/Local/Arduino15/packages"
include ../../Sam.mk
include $(ARDMK_DIR)/Sam.mk

View file

@ -2,4 +2,4 @@
BOARD_TAG = uno
include ../../Arduino.mk
include $(ARDMK_DIR)/Arduino.mk

View file

@ -17,4 +17,4 @@ F_CPU = 16000000L
ARDUINO_LIBS = SoftwareSerial
include /usr/share/arduino/Arduino.mk
include $(ARDMK_DIR)/Arduino.mk

View file

@ -3,4 +3,4 @@
BOARD_TAG = uno
ARDUINO_LIBS = Ethernet SPI
include ../../Arduino.mk
include $(ARDMK_DIR)/Arduino.mk

View file

@ -27,4 +27,4 @@ BOARD_TAG = arduino_zero_native
# Windows
#ARDUINO_PACKAGE_DIR := "C:/Users/$(USER)/AppData/Local/Arduino15/packages"
include ../../Sam.mk
include $(ARDMK_DIR)/Sam.mk

View file

@ -3,4 +3,4 @@
BOARD_TAG = uno
ARDUINO_LIBS = Wire
include ../../Arduino.mk
include $(ARDMK_DIR)/Arduino.mk

View file

@ -1,4 +1,4 @@
BOARD_TAG = uno
ARDUINO_LIBS =
include ../../Arduino.mk
include $(ARDMK_DIR)/Arduino.mk

View file

@ -168,8 +168,6 @@ if [ -z $COMMON_SOURCED ]; then
if ! command -v pip3 >/dev/null 2>&1; then
echo "Installing Pip..."
_install "python3-pip"
$SUDO_CMD easy_install3 pip3
fi
PIP_SUDO_CMD=

View file

@ -1,9 +1,41 @@
#!/usr/bin/env bash
SCRIPTS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
TESTS_DIR=examples
export ARDMK_DIR="${ARDMK_DIR:-$SCRIPTS_DIR/../..}"
failures=()
if [[ "$1" == "-q" ]]; then
QUIET=1
fi
runtest() {
if [[ $QUIET ]]; then
make $* TEST=1 > /dev/null 2>&1
else
output=`make $* TEST=1`
fi
}
run() {
if [[ $QUIET ]]; then
"$@" > /dev/null 2>&1
else
"$@"
fi
}
info() {
if [[ $QUIET ]]; then
return
fi
echo "$@"
}
run pushd $SCRIPTS_DIR/../..
# These examples cannot be tested easily at the moment as they require
# alternate cores. The MakefileExample doesn't actually contain any source code
# to compile.
@ -22,46 +54,47 @@ do
done
if ! $example_is_testable; then
echo "Skipping non-testable example $example..."
info "Skipping non-testable example $example..."
continue
fi
pushd $dir
echo "Compiling $example..."
make_output=`make clean TEST=1`
make_output=`make TEST=1`
run pushd $dir
info "Compiling $example..."
runtest clean
runtest
if [[ $? -ne 0 ]]; then
failures+=("$example")
echo "Example $example failed"
info "Example $example failed"
fi
make_output=`make disasm TEST=1`
runtest disasm
if [[ $? -ne 0 ]]; then
failures+=("$example disasm")
echo "Example $example disasm failed"
info "Example $example disasm failed"
fi
make_output=`make generate_assembly TEST=1`
runtest generate_assembly
if [[ $? -ne 0 ]]; then
failures+=("$example generate_assembly")
echo "Example $example generate_assembly failed"
info "Example $example generate_assembly failed"
fi
make_output=`make symbol_sizes TEST=1`
runtest symbol_sizes
if [[ $? -ne 0 ]]; then
failures+=("$example symbol_sizes")
echo "Example $example symbol_sizes failed"
info "Example $example symbol_sizes failed"
fi
popd
done
for failure in "${failures[@]}"; do
echo "Example $failure failed"
run popd
done
if [[ ${#failures[@]} -eq 0 ]]; then
echo "All tests passed."
else
exit 1
for failure in "${failures[@]}"; do
echo "Example $failure failed"
done
exit 1
fi