Rev 1389 Rev 1399
1 ############################################################################### 1 ###############################################################################
2 # Makefile for the project Tykadlo 2 # Makefile for the project Tykadlo
3 ############################################################################### 3 ###############################################################################
4 # (c)miho www.mlab.cz 4 # (c)miho www.mlab.cz
5   -  
-   5 # 1.00 - new makefile
-   6 # 1.01 - solved problem with default rules (invalid target "Makefile")
6   7  
7 ## User Settings 8 ## User Settings
-   9 # Frequencies are in Hz, Callibration is usualy not needed
8 FREQUENCIES = 30000 32000 34000 36000 38000 40000 56000 10 FREQUENCIES = 30000 32000 34000 36000 38000 40000 56000
9 CALIBRATION = 0 11 CALIBRATION = 0
10   12  
11 ## Project 13 ## Project
-   14 # Main source file name, target platform, destination directory
12 PROJECT = Tykadlo 15 PROJECT = Tykadlo
13 MCU = attiny13 16 MCU = attiny13
14 TARGETDIR = BIN 17 TARGETDIR = BIN
15   18  
16 ## Variants - all supported frequences 19 ## Variants - all supported frequences
-   20 # Combine project name with all required frequencies
17 VARIANTS = $(foreach FREQ, $(FREQUENCIES), $(PROJECT)_$(FREQ)) 21 VARIANTS = $(foreach FREQ, $(FREQUENCIES), $(PROJECT)_$(FREQ))
18   22  
19 ## General Flags 23 ## General Flags
20 CC = avr-gcc 24 CC = avr-gcc
21   25  
22 ## Options common to compile, link and assembly rules 26 ## Options common to compile, link and assembly rules
23 COMMON = -mmcu=$(MCU) 27 COMMON = -mmcu=$(MCU)
24   28  
25 ## Compile options common for all C compilation units. 29 ## Compile options common for all C compilation units.
26 CFLAGS = $(COMMON) 30 CFLAGS = $(COMMON)
27 CFLAGS += -Wall -gdwarf-2 -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums 31 CFLAGS += -Wall -gdwarf-2 -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
28 CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d 32 CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d
29   33  
30 ## Linker flags 34 ## Linker flags
31 LDFLAGS = $(COMMON) 35 LDFLAGS = $(COMMON)
32 LDFLAGS += -Wl 36 LDFLAGS += -Wl
33   37  
34 ## Intel Hex file production flags 38 ## Intel Hex file production flags
35 HEX_FLASH_FLAGS = -R .fuse -R .lock -R .signature 39 HEX_FLASH_FLAGS = -R .fuse -R .lock -R .signature
36   40  
37 ## Build 41 ## Build
-   42  
-   43 # Tag targets that are not / do not require files
-   44 .PHONY: all allhex alllss clean Makefile
-   45  
38 .PHONY: all 46 # Main target
39 all: allhex 47 all: allhex
40   48  
41 .PHONY: allhex 49 # Subtarget - all variants hex files
42 allhex: $(foreach VAR, $(VARIANTS), $(VAR).hex) 50 allhex: $(foreach VAR, $(VARIANTS), $(VAR).hex)
43   51  
44 .PHONY: alllss 52 # Subtarget - all variants lss files
45 alllss: $(foreach VAR, $(VARIANTS), $(VAR).lss) 53 alllss: $(foreach VAR, $(VARIANTS), $(VAR).lss)
46   54  
-   55 # How to translate .o file - from .c with all possible frequencies
47 %.o: $(PROJECT).c 56 %.o: $(PROJECT).c
48 $(CC) $(INCLUDES) $(CFLAGS) -c $< -D CALIBRATION=$(CALIBRATION) -D IR_FREQUENCY=$(subst $(PROJECT)_,,$(@:.o=))UL -o $@ 57 $(CC) $(INCLUDES) $(CFLAGS) -c $< -D CALIBRATION=$(CALIBRATION) -D IR_FREQUENCY=$(subst $(PROJECT)_,,$(@:.o=))UL -o $@
49   58  
-   59 # How to link .elf - from .o
50 %.elf: %.o 60 %.elf: %.o
51 $(CC) $(LDFLAGS) $< $(LIBDIRS) $(LIBS) -o $@ 61 $(CC) $(LDFLAGS) $< $(LIBDIRS) $(LIBS) -o $@
52 rm $< 62 rm $<
53   63  
-   64 # How to generate .hex file - from .elf
54 %.hex: %.elf 65 %.hex: %.elf
55 avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $(TARGETDIR)/$@ 66 avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $(TARGETDIR)/$@
56   67  
-   68 # How to generate .lss file - from .elf
57 %.lss: %.elf 69 %.lss: %.elf
58 avr-objdump -h -S $< > $(TARGETDIR)/$@ 70 avr-objdump -h -S $< > $(TARGETDIR)/$@
59   71  
60 ## Clean target 72 ## Clean target
61 .PHONY: clean -  
62 clean: 73 clean:
63 -rm -rf $(PROJECT)*.o $(PROJECT)*.elf dep/* $(TARGETDIR)/$(PROJECT)*.hex $(TARGETDIR)/$(PROJECT)*.lss 74 -rm -rf $(PROJECT)*.o $(PROJECT)*.elf dep/* $(TARGETDIR)/$(PROJECT)*.hex $(TARGETDIR)/$(PROJECT)*.lss
64 -rmdir dep 75 -rmdir dep
65 -rmdir $(TARGETDIR) 76 -rmdir $(TARGETDIR)
66   77  
67 ## Other dependencies 78 ## Other dependencies
68 -include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*) 79 -include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)
69 -include $(shell mkdir $(TARGETDIR) 2>/dev/null) 80 -include $(shell mkdir $(TARGETDIR) 2>/dev/null)