diff options
| author | dankm <dan.mcgregor@usask.ca> | 2018-03-26 14:08:08 -0600 |
|---|---|---|
| committer | Jack Humbert <jack.humb@gmail.com> | 2018-03-26 16:08:08 -0400 |
| commit | 19a1fbaca2137a9d4cd529e363039a612a4f941d (patch) | |
| tree | 83f88e254ccb527b2272b012d982ffa80086fb5a /tmk_core/avr.mk | |
| parent | ae7284edb8bd8ed7fcab29415049bf03baf57f8d (diff) | |
| download | qmk_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.mk | 23 |
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 | ||
| 137 | DFU_PROGRAMMER ?= dfu-programmer | 137 | DFU_PROGRAMMER ?= dfu-programmer |
| 138 | GREP ?= grep | ||
| 138 | 139 | ||
| 139 | dfu: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size | 140 | dfu: $(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 | ||
| 163 | dfu-ee: $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep | 164 | dfu-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 | ||
| 171 | avrdude: $(BUILD_DIR)/$(TARGET).hex check-size | 172 | avrdude: $(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 | |||
| 252 | bootloader: | 253 | bootloader: |
| 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" |
