93 строки
		
	
	
	
		
			2,3 КиБ
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			93 строки
		
	
	
	
		
			2,3 КиБ
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| 
 | |
| # 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
 | |
| 	@go fmt ./testdata/*.go
 | |
| 
 | |
| test:
 | |
| 	@go test .
 | |
| 
 | |
| 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 $^ $@
 | 
