aboutsummaryrefslogtreecommitdiff
path: root/tmk_core/avr.mk
diff options
context:
space:
mode:
authordankm <dan.mcgregor@usask.ca>2018-03-26 14:08:08 -0600
committerJack Humbert <jack.humb@gmail.com>2018-03-26 16:08:08 -0400
commit19a1fbaca2137a9d4cd529e363039a612a4f941d (patch)
tree83f88e254ccb527b2272b012d982ffa80086fb5a /tmk_core/avr.mk
parentae7284edb8bd8ed7fcab29415049bf03baf57f8d (diff)
downloadqmk_firmware-19a1fbaca2137a9d4cd529e363039a612a4f941d.tar.gz
qmk_firmware-19a1fbaca2137a9d4cd529e363039a612a4f941d.zip
Better non-Linux support (#2524)
* grep -> $(GREP) Some UNIXy systems (FreeBSD for example) don't use GNU grep by default. Allow the user to specify which grep implementation to use so that GNU grep can be specified. * Allow using versioned avr-gcc command Don't hardcode "avr-gcc", and allow strings such as "avr-gcc8", or "avr-gcc-7.3.0" to match checks for "avr-gcc".
Diffstat (limited to 'tmk_core/avr.mk')
-rw-r--r--tmk_core/avr.mk23
1 files changed, 12 insertions, 11 deletions
diff --git a/tmk_core/avr.mk b/tmk_core/avr.mk
index 10b043caa..eb55dba95 100644
--- a/tmk_core/avr.mk
+++ b/tmk_core/avr.mk
@@ -135,13 +135,14 @@ flip: $(BUILD_DIR)/$(TARGET).hex check-size
135 $(BATCHISP) -hardware usb -device $(MCU) -operation start reset 0 135 $(BATCHISP) -hardware usb -device $(MCU) -operation start reset 0
136 136
137DFU_PROGRAMMER ?= dfu-programmer 137DFU_PROGRAMMER ?= dfu-programmer
138GREP ?= grep
138 139
139dfu: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size 140dfu: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size
140 until $(DFU_PROGRAMMER) $(MCU) get bootloader-version; do\ 141 until $(DFU_PROGRAMMER) $(MCU) get bootloader-version; do\
141 echo "Error: Bootloader not found. Trying again in 5s." ;\ 142 echo "Error: Bootloader not found. Trying again in 5s." ;\
142 sleep 5 ;\ 143 sleep 5 ;\
143 done 144 done
144 if $(DFU_PROGRAMMER) --version 2>&1 | grep -q 0.7 ; then\ 145 if $(DFU_PROGRAMMER) --version 2>&1 | $(GREP) -q 0.7 ; then\
145 $(DFU_PROGRAMMER) $(MCU) erase --force;\ 146 $(DFU_PROGRAMMER) $(MCU) erase --force;\
146 else\ 147 else\
147 $(DFU_PROGRAMMER) $(MCU) erase;\ 148 $(DFU_PROGRAMMER) $(MCU) erase;\
@@ -161,7 +162,7 @@ flip-ee: $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep
161 $(REMOVE) $(BUILD_DIR)/$(TARGET)eep.hex 162 $(REMOVE) $(BUILD_DIR)/$(TARGET)eep.hex
162 163
163dfu-ee: $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep 164dfu-ee: $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep
164 if $(DFU_PROGRAMMER) --version 2>&1 | grep -q 0.7 ; then\ 165 if $(DFU_PROGRAMMER) --version 2>&1 | $(GREP) -q 0.7 ; then\
165 $(DFU_PROGRAMMER) $(MCU) flash --eeprom $(BUILD_DIR)/$(TARGET).eep;\ 166 $(DFU_PROGRAMMER) $(MCU) flash --eeprom $(BUILD_DIR)/$(TARGET).eep;\
166 else\ 167 else\
167 $(DFU_PROGRAMMER) $(MCU) flash-eeprom $(BUILD_DIR)/$(TARGET).eep;\ 168 $(DFU_PROGRAMMER) $(MCU) flash-eeprom $(BUILD_DIR)/$(TARGET).eep;\
@@ -169,7 +170,7 @@ dfu-ee: $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep
169 $(DFU_PROGRAMMER) $(MCU) reset 170 $(DFU_PROGRAMMER) $(MCU) reset
170 171
171avrdude: $(BUILD_DIR)/$(TARGET).hex check-size 172avrdude: $(BUILD_DIR)/$(TARGET).hex check-size
172 if grep -q -s Microsoft /proc/version; then \ 173 if $(GREP) -q -s Microsoft /proc/version; then \
173 echo 'ERROR: AVR flashing cannot be automated within the Windows Subsystem for Linux (WSL) currently. Instead, take the .hex file generated and flash it using AVRDUDE, AVRDUDESS, or XLoader.'; \ 174 echo 'ERROR: AVR flashing cannot be automated within the Windows Subsystem for Linux (WSL) currently. Instead, take the .hex file generated and flash it using AVRDUDE, AVRDUDESS, or XLoader.'; \
174 else \ 175 else \
175 printf "Detecting USB port, reset your controller now."; \ 176 printf "Detecting USB port, reset your controller now."; \
@@ -178,12 +179,12 @@ avrdude: $(BUILD_DIR)/$(TARGET).hex check-size
178 sleep 0.5; \ 179 sleep 0.5; \
179 printf "."; \ 180 printf "."; \
180 ls /dev/tty* > /tmp/2; \ 181 ls /dev/tty* > /tmp/2; \
181 USB=`comm -13 /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \ 182 USB=`comm -13 /tmp/1 /tmp/2 | $(GREP) -o '/dev/tty.*'`; \
182 mv /tmp/2 /tmp/1; \ 183 mv /tmp/2 /tmp/1; \
183 done; \ 184 done; \
184 echo ""; \ 185 echo ""; \
185 echo "Detected controller on USB port at $$USB"; \ 186 echo "Detected controller on USB port at $$USB"; \
186 if grep -q -s 'MINGW\|MSYS' /proc/version; then \ 187 if $(GREP) -q -s 'MINGW\|MSYS' /proc/version; then \
187 USB=`echo "$$USB" | perl -pne 's/\/dev\/ttyS(\d+)/COM.($$1+1)/e'`; \ 188 USB=`echo "$$USB" | perl -pne 's/\/dev\/ttyS(\d+)/COM.($$1+1)/e'`; \
188 echo "Remapped MSYS2 USB port to $$USB"; \ 189 echo "Remapped MSYS2 USB port to $$USB"; \
189 fi; \ 190 fi; \
@@ -252,12 +253,12 @@ extcoff: $(BUILD_DIR)/$(TARGET).elf
252bootloader: 253bootloader:
253 make -C lib/lufa/Bootloaders/DFU/ clean 254 make -C lib/lufa/Bootloaders/DFU/ clean
254 echo -e "#ifndef QMK_KEYBOARD\n#define QMK_KEYBOARD\n" > lib/lufa/Bootloaders/DFU/Keyboard.h 255 echo -e "#ifndef QMK_KEYBOARD\n#define QMK_KEYBOARD\n" > lib/lufa/Bootloaders/DFU/Keyboard.h
255 echo -e `grep "MANUFACTURER" $(ALL_CONFIGS) -h | tail -1` >> lib/lufa/Bootloaders/DFU/Keyboard.h 256 echo -e `$(GREP) "MANUFACTURER" $(ALL_CONFIGS) -h | tail -1` >> lib/lufa/Bootloaders/DFU/Keyboard.h
256 echo -e `grep "PRODUCT" $(ALL_CONFIGS) -h | tail -1` Bootloader >> lib/lufa/Bootloaders/DFU/Keyboard.h 257 echo -e `$(GREP) "PRODUCT" $(ALL_CONFIGS) -h | tail -1` Bootloader >> lib/lufa/Bootloaders/DFU/Keyboard.h
257 echo -e `grep "QMK_ESC_OUTPUT" $(ALL_CONFIGS) -h | tail -1` >> lib/lufa/Bootloaders/DFU/Keyboard.h 258 echo -e `$(GREP) "QMK_ESC_OUTPUT" $(ALL_CONFIGS) -h | tail -1` >> lib/lufa/Bootloaders/DFU/Keyboard.h
258 echo -e `grep "QMK_ESC_INPUT" $(ALL_CONFIGS) -h | tail -1` >> lib/lufa/Bootloaders/DFU/Keyboard.h 259 echo -e `$(GREP) "QMK_ESC_INPUT" $(ALL_CONFIGS) -h | tail -1` >> lib/lufa/Bootloaders/DFU/Keyboard.h
259 echo -e `grep "QMK_LED" $(ALL_CONFIGS) -h | tail -1` >> lib/lufa/Bootloaders/DFU/Keyboard.h 260 echo -e `$(GREP) "QMK_LED" $(ALL_CONFIGS) -h | tail -1` >> lib/lufa/Bootloaders/DFU/Keyboard.h
260 echo -e `grep "QMK_SPEAKER" $(ALL_CONFIGS) -h | tail -1` >> lib/lufa/Bootloaders/DFU/Keyboard.h 261 echo -e `$(GREP) "QMK_SPEAKER" $(ALL_CONFIGS) -h | tail -1` >> lib/lufa/Bootloaders/DFU/Keyboard.h
261 echo -e "\n#endif" >> lib/lufa/Bootloaders/DFU/Keyboard.h 262 echo -e "\n#endif" >> lib/lufa/Bootloaders/DFU/Keyboard.h
262 make -C lib/lufa/Bootloaders/DFU/ 263 make -C lib/lufa/Bootloaders/DFU/
263 echo -e "BootloaderDFU.hex copied to $(TARGET)_bootloader.hex" 264 echo -e "BootloaderDFU.hex copied to $(TARGET)_bootloader.hex"