When assembling the command line for the various supported serial
monitors, MONITOR_CMD must match the name of one of the supported
commands to be recognized. Serial monitors given with leading path
components are not recognized, and a command like
make MONITOR_CMD=~/src/picocom/picocom monitor
errors out as the fallback monitor command is executed instead of the
picocom-specific one. However, sometimes it's necessary to specify a
supported serial monitor with its full path, because e.g. the user
wants to tests a freshly compiled version before installing it. Sure,
the user could just run the serial monitor directly, but that's
cumbersome because he has to pay attention to use the right baud rate
and USB port.
So strip all leading path components, if present, from MONITOR_CMD
using the 'nondir' make function before checking whether it's one of
the supported serial monitors. This way commands like the above would
just work.
While at it, remove the single quotes around 'putty': they are both
unnecessary and inconsistent with similar constructs throughout
Arduino.mk.
When assembling the command line for the various supported serial
monitors, MONITOR_CMD must match the name of one of the supported
commands to be recognized. Serial monitors given with leading path
components are not recognized, and a command like
make MONITOR_CMD=~/src/picocom/picocom monitor
errors out as the fallback monitor command is executed instead of the
picocom-specific one. However, sometimes it's necessary to specify a
supported serial monitor with its full path, because e.g. the user
wants to tests a freshly compiled version before installing it. Sure,
the user could just run the serial monitor directly, but that's
cumbersome because he has to pay attention to use the right baud rate
and USB port.
So strip all leading path components, if present, from MONITOR_CMD
using the 'nondir' make function before checking whether it's one of
the supported serial monitors. This way commands like the above would
just work.
While at it, remove the single quotes around 'putty': they are both
unnecessary and inconsistent with similar constructs throughout
Arduino.mk.
POSIX shells treat an unquoted [abcd] as a pattern bracket expression
and apply it for filename expansion. This kicks in and causes
troubles in the space_pad_to function when it's called to pad prefix
tags like '[AUTODETECT]', because the argument holding such a tag is
passed to a shell unquoted. The result is funny output when the
directory containing the Makefile also contains any files or
directories, whose name is a single upper-case character that can be
found in any prefix tags:
$ touch A B C D
$ make
-------------------------
Arduino.mk Configuration:
- A C D CURRENT_OS = LINUX
- [USER] ARDUINO_DIR = /home/szeder/src/arduino/arduino-1.8.1
- [USER] ARDMK_DIR = /home/szeder/src/arduino/Arduino-Makefile
- A C D ARDUINO_VERSION = 181
- A D ARCHITECTURE = avr
- A D ARDMK_VENDOR = arduino
- A D ARDUINO_SKETCHBOOK =
<snip>
Prevent this by quoting space_pad_to's parameter when passing it to a
shell.
Considering the number of project files spread in different locations
when developing an Arduino project, proper use of tags can be difficult;
resolving beyond local functions.
I've added automatic generation of a tags file, which includes:
* Standard ctags source in project dir (.c, .cpp, .h)
* Arduino source in project dir (.ide, .pde)
* Arduino core based on detected project core from Arduino install.
* Included Arduino libraries from user library folder.
As a Vim user I find this hugely useful and think it would be a useful
addtion for others. Target has been added as `make tags`.
The matching parentheses and | in sed expresssions need to be escaped
or sed will consider like normal characters.
Without this fix, make show_submenu was showing lines like this one:
pro.menu.cpu.8MHzatmega328 ATmega328 (3.3V, 8 MHz)
It now properly outputs lines like this:
pro 8MHzatmega328 ATmega328 (3.3V, 8 MHz)
This output is much less misleading to users especially newcomers.