69 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| PROJECT = main
 | |
| LOCAL_SOURCE_DIR = src
 | |
| BUILD_DIR = build
 | |
| 
 | |
| MCU = attiny24
 | |
| LFUSE = 0xc4
 | |
| HFUSE = 0xdf
 | |
| EFUSE = 0xff
 | |
| 
 | |
| FORMAT = ihex
 | |
| 
 | |
| LOCAL_SOURCES = $(wildcard $(LOCAL_SOURCE_DIR)/*.c)
 | |
| 
 | |
| CFLAGS = -mmcu=$(MCU) -Wall -Wstrict-prototypes -gstabs -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Os -lm
 | |
| 
 | |
| RM = rm -f
 | |
| CC = avr-gcc
 | |
| NM = avr-nm
 | |
| AVRDUDE = avrdude
 | |
| OBJCOPY = avr-objcopy
 | |
| OBJDUMP = avr-objdump
 | |
| SIZE = avr-size
 | |
| 
 | |
| LOCAL_OBJECTS = $(patsubst $(LOCAL_SOURCE_DIR)/%.c, $(BUILD_DIR)/%.o, $(LOCAL_SOURCES))
 | |
| OBJECTS = $(LOCAL_OBJECTS)
 | |
| LOCAL_DEPENDS = $(patsubst $(LOCAL_SOURCE_DIR)/%.c, $(BUILD_DIR)/%.d, $(LOCAL_SOURCES))
 | |
| 
 | |
| .DEFAULT_GOAL = all
 | |
| .DELETE_ON_ERROR:
 | |
| 
 | |
| $(LOCAL_OBJECTS): $(BUILD_DIR)/%.o: $(LOCAL_SOURCE_DIR)/%.c
 | |
| 	$(CC) $^ -c -o $@ $(CFLAGS)
 | |
| 
 | |
| $(LOCAL_DEPENDS): $(BUILD_DIR)/%.d: $(LOCAL_SOURCE_DIR)/%.c
 | |
| 	@set -e; rm -f $@; $(CC) -MM $(CFLAGS) $< > $@.$$$$; sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; rm -f $@.$$$$
 | |
| 
 | |
| include $(LOCAL_DEPENDS) 
 | |
| 
 | |
| $(BUILD_DIR)/$(PROJECT).elf: $(OBJECTS) | $(BUILD_DIR)
 | |
| 	$(CC) $(OBJECTS) $(CFLAGS) --output $@
 | |
| 
 | |
| $(BUILD_DIR)/$(PROJECT).hex: $(BUILD_DIR)/$(PROJECT).elf | $(BUILD_DIR)
 | |
| 	$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
 | |
| 
 | |
| $(BUILD_DIR)/$(PROJECT).eep: $(BUILD_DIR)/$(PROJECT).elf | $(BUILD_DIR)
 | |
| 	-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 -O $(FORMAT) $< $@
 | |
| 
 | |
| $(BUILD_DIR)/$(PROJECT).lss: $(BUILD_DIR)/$(PROJECT).elf | $(BUILD_DIR)
 | |
| 	$(OBJDUMP) -h -S $< > $@
 | |
| 
 | |
| $(BUILD_DIR)/$(PROJECT).sym: $(BUILD_DIR)/$(PROJECT).elf | $(BUILD_DIR)
 | |
| 	$(NM) -n $< > $@
 | |
| 
 | |
| $(LOCAL_DEPENDS): | $(BUILD_DIR)
 | |
| $(BUILD_DIR):
 | |
| 	if [ ! -d "$(BUILD_DIR)" ]; then mkdir "$(BUILD_DIR)"; fi
 | |
| 
 | |
| .PHONY: all
 | |
| all: $(BUILD_DIR) $(OBJECTS) $(BUILD_DIR)/$(PROJECT).elf $(BUILD_DIR)/$(PROJECT).hex $(BUILD_DIR)/$(PROJECT).eep $(BUILD_DIR)/$(PROJECT).lss $(BUILD_DIR)/$(PROJECT).sym
 | |
| 	$(SIZE) $(BUILD_DIR)/$(PROJECT).elf
 | |
| 
 | |
| .PHONY: program
 | |
| program: $(BUILD_DIR)/$(PROJECT).hex
 | |
| 	avrdude -c usbasp -p $(MCU) -U flash:w:$(BUILD_DIR)/$(PROJECT).hex -U lfuse:w:$(LFUSE):m -U hfuse:w:$(HFUSE):m -U efuse:w:$(EFUSE):m 
 | |
| 	# avrdude -c usbasp -p $(MCU) -U flash:w:$(BUILD_DIR)/$(PROJECT).hex -U eeprom:w:$(BUILD_DIR)/$(PROJECT).eep -U lfuse:w:$(LFUSE):m -U hfuse:w:$(HFUSE):m -U efuse:w:$(EFUSE):m 
 | |
| 
 | |
| .PHONY: clean
 | |
| clean:
 | |
| 	$(RM) $(BUILD_DIR)/*
 |