############################################################################### # Makefile for the project Radiopulseshaper ############################################################################### ## General Flags - change F_CPU and RBAUD to suit your project ## Begin user editable section PROJECT = Radiopulseshaper MCU = atmega168 TARGET = Radiopulseshaper.elf CC = avr-gcc.exe F_CPU=16000000UL RBAUD=300 CBAUD=4800 programmerinstallation=C:\WinAVR-20070525\bin\avrdude projectroot= programmerarguments=-p m168 -b 19200 -c avr911 -e -P com7 -U flash:w:${projectroot}Radiopulseshaper.hex:i -v ## For other programmers change the -c flag and the -P flag ## End user editable section ## Options common to compile, link and assembly rules COMMON = -mmcu=$(MCU) ## Compile options common for all C compilation units. CFLAGS = $(COMMON) CFLAGS += -Wall -gdwarf-2 -DF_CPU=${F_CPU} -DRBAUD=${RBAUD} -DCBAUD=${CBAUD} -Os -funsigned-char -funsigned-bitfields CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d ## Assembly specific flags ASMFLAGS = $(COMMON) ASMFLAGS += $(CFLAGS) ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2 ## Linker flags LDFLAGS = $(COMMON) LDFLAGS += -Wl,-Map=radio.map ## Intel Hex file production flags HEX_FLASH_FLAGS = -R .eeprom HEX_EEPROM_FLAGS = -j .eeprom HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load" HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings ## Libraries LIBS = -lc -lm -lprintf_flt -lprintf_min -lscanf_flt -lscanf_min ## Objects that must be built in order to link OBJECTS = Radiopulseshaper.o buffer.o timerx8.o uart.o ## Objects explicitly added by the user LINKONLYOBJECTS = ## Build all: $(TARGET) Radiopulseshaper.hex Radiopulseshaper.eep Radiopulseshaper.lss size ## Header production code table.h: tabletool ${F_CPU} ${RBAUD} ${CBAUD} ## run the programmer Radiopulseshaper.hex: ${programmerinstallation} ${programmerargument} ## Compile Radiopulseshaper.o: ../Radiopulseshaper.c table.h $(CC) $(INCLUDES) $(CFLAGS) -c $< buffer.o: ../buffer.c $(CC) $(INCLUDES) $(CFLAGS) -c $< timerx8.o: ../timerx8.c $(CC) $(INCLUDES) $(CFLAGS) -c $< uart.o: ../uart.c $(CC) $(INCLUDES) $(CFLAGS) -c $< ##Link $(TARGET): $(OBJECTS) $(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET) %.hex: $(TARGET) avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $@ %.eep: $(TARGET) -avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@ || exit 0 %.lss: $(TARGET) avr-objdump -h -S $< > $@ size: ${TARGET} @echo @avr-size -C --mcu=${MCU} ${TARGET} ## Clean target .PHONY: clean clean: -rm -rf $(OBJECTS) Radiopulseshaper.elf dep/* Radiopulseshaper.hex Radiopulseshaper.eep Radiopulseshaper.lss Radiopulseshaper.map table.h ## Other dependencies -include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)