]> git.cryptolib.org Git - avr-crypto-lib.git/blob - Makefile
arcfour got its own testsuit now + some modifications of the build process
[avr-crypto-lib.git] / Makefile
1 # Makefile for the micro-crypt project
2 # author: Daniel Otte
3
4 BLOCK_CIPHERS  := 
5 STREAM_CIPHERS := 
6 HASHES         :=
7 MACS           :=
8 PRNGS          := 
9
10
11 include avr-makefile.inc
12 include *.mk
13
14 ALGORITHMS = $(BLOCK_CIPHERS) $(STREAM_CIPHERS) $(HASHES) $(PRNGS) $(MACS)
15 ALGORITHMS_OBJ = $(patsubst %,%_OBJ, $(ALGORITHMS))
16 ALGORITHMS_OBJ_IMM = $(foreach a, $(ALGORITHMS_OBJ), $($(a)))
17 ALGORITHMS_TEST_BIN = $(patsubst %,%_TEST_BIN, $(ALGORITHMS))
18 ALGORITHMS_TEST_BIN_MAIN = $(foreach a, $(ALGORITHMS_TEST_BIN), $(firstword $($(a))))
19 ALGORITHMS_TEST_BIN_MAIN_ELF = $(patsubst %.o, %.elf, $(ALGORITHMS_TEST_BIN_MAIN))
20 ALGORITHMS_TEST_BIN_MAIN_HEX = $(patsubst %.o, %.hex, $(ALGORITHMS_TEST_BIN_MAIN))
21
22 ALGORITHMS_TEST_BIN_IMM =  $(foreach a, $(ALGORITHMS_TEST_BIN), $($(a)))
23 ALGORITHMS_NESSIE_TEST = $(patsubst %,%_NESSIE_TEST, $(ALGORITHMS))
24 ALGORITHMS_PERFORMANCE_TEST = $(patsubst %,%_PERORMANCE_TEST, $(ALGORITHMS))
25
26 PRG = remove_me
27
28 #Multi_OBJ              = main.o debug.o uart.o serial-tools.o sha256-asm.o xtea-asm.o arcfour-asm.o prng.o cast5.o
29
30 #OBJ = $(SERPENT_OBJ)
31
32 DEFS       =
33 LIBS       =
34
35 define BLA_TEMPLATE2
36 $(2): $(3)
37         echo $$@
38         echo $$^
39         $(CC) $(CFLAGS) $(LDFLAGS)$(patsubst %.elf,%.map,$(2)) -o \
40         $(2) \
41         $(3) \
42         $(LIBS)
43 endef
44
45 $(foreach algo, $(ALGORITHMS), $(eval $(call BLA_TEMPLATE2, $(algo), $(patsubst %.o,%.elf,$(firstword $($(algo)_TEST_BIN))), $($(algo)_TEST_BIN) )))
46
47 .PHONY: info
48 info:
49         @echo "infos on micro-crypt:"
50         @echo "  block ciphers:"
51         @echo "    $(BLOCK_CIPHERS)"
52         @echo "  stream ciphers:"
53         @echo "    $(STREAM_CIPHERS)"
54         @echo "  hash functions:"
55         @echo "    $(HASHES)"
56         @echo "  MAC functions:"
57         @echo "    $(MACS)"
58         @echo "  PRNG functions:"
59         @echo "    $(PRNGS)"
60 #       echo $(ALGORITHMS_TEST_BIN_MAIN)
61 #       echo $(ALGORITHMS)
62 #       echo $(firstword $(XTEA_TEST_BIN))
63 #       echo $(patsubst %.o,%.elf,$(firstword $(XTEA_TEST_BIN)))
64 #       echo $(ALGORITHMS_OBJ)
65 #       echo $(ALGORITHMS_OBJ_IMM)
66 #       echo $(ALGORITHMS_TEST_BIN)
67 #       echo $(ALGORITHMS_NESSIE_TEST)
68 #       echo $(ALGORITHMS_PERFORMANCE_TEST)
69
70 bc:     $(ALGORITHMS_OBJ)
71
72 tests: $(ALGORITHMS_TEST_BIN) \
73        $(ALGORITHMS_TEST_BIN_MAIN_ELF) \
74        $(ALGORITHMS_TEST_BIN_MAIN_HEX)
75
76
77 $(ALGORITHMS_OBJ):  $(ALGORITHMS_OBJ_IMM)
78 $(ALGORITHMS_TEST_BIN): $(ALGORITHMS_TEST_BIN_IMM)
79
80 #$(ALGORITHMS):  
81         
82 .PHONY: all
83 all: $(PRG).elf lst text eeprom
84
85
86 .PHONY: clean
87 clean:
88         rm -rf *.o *.elf *.eps *.png *.pdf *.bak 
89         rm -rf *.lst *.map $(EXTRA_CLEAN_FILES)
90
91 flash:
92         $(ERASECMD)
93         $(FLASHCMD)
94         
95 lst:  $(PRG).lst
96
97 %.lst: %.elf
98         $(OBJDUMP) -h -S $< > $@
99
100 # Rules for building the .text rom images
101
102 text: hex bin srec
103
104 hex:  $(PRG).hex
105 bin:  $(PRG).bin
106 srec: $(PRG).srec
107
108 %.hex: %.elf
109         $(OBJCOPY) -j .text -j .data -O ihex $< $@
110
111 %.srec: %.elf
112         $(OBJCOPY) -j .text -j .data -O srec $< $@
113
114 %.bin: %.elf
115         $(OBJCOPY) -j .text -j .data -O binary $< $@
116
117 # Rules for building the .eeprom rom images
118
119 eeprom: ehex ebin esrec
120
121 ehex:  $(PRG)_eeprom.hex
122 ebin:  $(PRG)_eeprom.bin
123 esrec: $(PRG)_eeprom.srec
124
125 %_eeprom.hex: %.elf
126         $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@
127
128 %_eeprom.srec: %.elf
129         $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O srec $< $@
130
131 %_eeprom.bin: %.elf
132         $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O binary $< $@
133
134 %_size.txt: %.o
135         $(SIZE)  $< > $@
136         
137         
138         
139 # Every thing below here is used by avr-libc's build system and can be ignored
140 # by the casual user.
141
142 FIG2DEV          = fig2dev
143 EXTRA_CLEAN_FILES       = *.hex *.bin *.srec
144
145 dox: eps png pdf
146
147 eps: $(PRG).eps
148 png: $(PRG).png
149 pdf: $(PRG).pdf
150
151
152 %.eps: %.fig
153         $(FIG2DEV) -L eps $< $@
154
155 %.pdf: %.fig
156         $(FIG2DEV) -L pdf $< $@
157
158 %.png: %.fig
159         $(FIG2DEV) -L png $< $@