# aliases all: tgo tgo: build/tgo .PHONY: all tgo run-test run-blinky run-blinky2 clean fmt gen-device gen-device-nrf gen-device-avr TARGET ?= unix ifeq ($(TARGET),unix) # Regular *nix system. else ifeq ($(TARGET),pca10040) # PCA10040: nRF52832 development board OBJCOPY = arm-none-eabi-objcopy TGOFLAGS += -target $(TARGET) else ifeq ($(TARGET),bluepill) # "blue pill" development board # See: https://wiki.stm32duino.com/index.php?title=Blue_Pill OBJCOPY = arm-none-eabi-objcopy TGOFLAGS += -target $(TARGET) else ifeq ($(TARGET),arduino) OBJCOPY = avr-objcopy TGOFLAGS += -target $(TARGET) else $(error Unknown target) endif run-test: build/test ./build/test run-blinky: run-blinky2 run-blinky2: build/blinky2 ./build/blinky2 ifeq ($(TARGET),pca10040) flash-%: build/%.hex nrfjprog -f nrf52 --sectorerase --program $< --reset else ifeq ($(TARGET),arduino) flash-%: build/%.hex avrdude -c arduino -p atmega328p -P /dev/ttyACM0 -U flash:w:$< else ifeq ($(TARGET),bluepill) flash-%: build/%.hex openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c 'program $< reset exit' endif clean: @rm -rf build fmt: @go fmt . ./compiler ./ir ./src/examples/* ./src/machine ./src/runtime ./src/sync gen-device: gen-device-nrf gen-device-avr gen-device-nrf: ./tools/gen-device-svd.py lib/nrfx/mdk/ src/device/nrf/ --source=https://github.com/NordicSemiconductor/nrfx/tree/master/mdk go fmt ./src/device/nrf gen-device-avr: ./tools/gen-device-avr.py lib/avr/packs/atmega src/device/avr/ go fmt ./src/device/avr gen-device-stm32: ./tools/gen-device-svd.py lib/cmsis-svd/data/STMicro/ src/device/stm32/ --source=https://github.com/posborne/cmsis-svd/tree/master/data/STMicro go fmt ./src/device/stm32 # Build the Go compiler. build/tgo: *.go compiler/*.go ir/*.go @mkdir -p build go build -o build/tgo -i . # Binary that can run on the host. build/%: src/examples/% src/examples/%/*.go build/tgo src/runtime/*.go ./build/tgo build $(TGOFLAGS) -size=short -o $@ $(subst src/,,$<) # ELF file that can run on a microcontroller. build/%.elf: src/examples/% src/examples/%/*.go build/tgo src/runtime/*.go ./build/tgo build $(TGOFLAGS) -size=short -o $@ $(subst src/,,$<) # Convert executable to Intel hex file (for flashing). build/%.hex: build/%.elf $(OBJCOPY) -O ihex $^ $@