AVR Bootloader (avrboot cleanup)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

652 lines
15 KiB

  1. # Hey Emacs, this is a -*- makefile -*-
  2. #
  3. # Makefile for the AVRProg-compatible Bootloader
  4. #
  5. # based on the
  6. # WinAVR Sample makefile written by Eric B. Weddington, Jörg Wunsch, et al.
  7. # Released to the Public Domain
  8. # Please read the make user manual!
  9. #
  10. # Additional material for this makefile was submitted by:
  11. # Tim Henigan
  12. # Peter Fleury
  13. # Reiner Patommel
  14. # Sander Pool
  15. # Frederik Rouleau
  16. # Markus Pfaff
  17. #
  18. # On command line:
  19. #
  20. # make all = Make software.
  21. #
  22. # make clean = Clean out built project files.
  23. #
  24. # make coff = Convert ELF to AVR COFF (for use with AVR Studio 3.x or VMLAB).
  25. #
  26. # make extcoff = Convert ELF to AVR Extended COFF (for use with AVR Studio
  27. # 4.07 or greater).
  28. #
  29. # make program = Download the hex file to the device, using avrdude. Please
  30. # customize the avrdude settings below first!
  31. #
  32. # make filename.s = Just compile filename.c into the assembler code only
  33. #
  34. # To rebuild project do "make clean" then "make all".
  35. #
  36. # user defined values
  37. # MCU name
  38. ## MCU = atmega8
  39. ## MCU = atmega16
  40. ## MCU = atmega162
  41. ## MCU = atmega169
  42. ## MCU = atmega32
  43. MCU = atmega324p
  44. ## MCU = atmega644
  45. ## MCU = atmega644p
  46. ## MCU = atmega128
  47. ## MCU = at90can128
  48. ################## BOOTLOADER ######################
  49. # mt: Boot loader support. So far not done with a separate section
  50. # to get the interrupt vector into the bootloader area (for BOOTINTVEC=yes).
  51. # Bootloader address in datasheet and stk500 is given as
  52. # "word", gcc toolchain needs "byte"-address
  53. # (see LDFLAGS further down)
  54. #/* Select Boot Size in Words (select one, comment out the others) */
  55. ## NO! BOOTSIZE=128
  56. ## NO! BOOTSIZE=256
  57. ## BOOTSIZE=512
  58. BOOTSIZE=1024
  59. ## BOOTSIZE=2048
  60. # /* Select if bootloader should include the inverrupt-vectors
  61. # when selecting 'no' here, the bootloader must not use
  62. # any interrupts and the modified linker-scripts are used. */
  63. ##BOOTINTVEC=yes
  64. BOOTINTVEC=no
  65. ##
  66. ifeq ($(MCU), atmega8)
  67. BFD_MACH=avr4
  68. ifeq ($(BOOTSIZE), 128)
  69. MT_BOOTLOADER_ADDRESS = 0x1F00
  70. endif
  71. ifeq ($(BOOTSIZE), 256)
  72. MT_BOOTLOADER_ADDRESS = 0x1E00
  73. endif
  74. ifeq ($(BOOTSIZE), 512)
  75. MT_BOOTLOADER_ADDRESS = 0x1C00
  76. endif
  77. ifeq ($(BOOTSIZE), 1024)
  78. MT_BOOTLOADER_ADDRESS = 0x1800
  79. endif
  80. endif
  81. ##
  82. ifeq ($(MCU), atmega16)
  83. BFD_MACH=avr5
  84. ifeq ($(BOOTSIZE), 128)
  85. MT_BOOTLOADER_ADDRESS = 0x3F00
  86. endif
  87. ifeq ($(BOOTSIZE), 256)
  88. MT_BOOTLOADER_ADDRESS = 0x3E00
  89. endif
  90. ifeq ($(BOOTSIZE), 512)
  91. MT_BOOTLOADER_ADDRESS = 0x3C00
  92. endif
  93. ifeq ($(BOOTSIZE), 1024)
  94. MT_BOOTLOADER_ADDRESS = 0x3800
  95. endif
  96. endif
  97. ##
  98. ifeq ($(MCU), atmega162)
  99. BFD_MACH=avr5
  100. ifeq ($(BOOTSIZE), 128)
  101. MT_BOOTLOADER_ADDRESS = 0x3F00
  102. endif
  103. ifeq ($(BOOTSIZE), 256)
  104. MT_BOOTLOADER_ADDRESS = 0x3E00
  105. endif
  106. ifeq ($(BOOTSIZE), 512)
  107. MT_BOOTLOADER_ADDRESS = 0x3C00
  108. endif
  109. ifeq ($(BOOTSIZE), 1024)
  110. MT_BOOTLOADER_ADDRESS = 0x3800
  111. endif
  112. endif
  113. ##
  114. ifeq ($(MCU), atmega169)
  115. BFD_MACH=avr5
  116. ifeq ($(BOOTSIZE), 128)
  117. MT_BOOTLOADER_ADDRESS = 0x3F00
  118. endif
  119. ifeq ($(BOOTSIZE), 256)
  120. MT_BOOTLOADER_ADDRESS = 0x3E00
  121. endif
  122. ifeq ($(BOOTSIZE), 512)
  123. MT_BOOTLOADER_ADDRESS = 0x3C00
  124. endif
  125. ifeq ($(BOOTSIZE), 1024)
  126. MT_BOOTLOADER_ADDRESS = 0x3800
  127. endif
  128. endif
  129. ##
  130. ifeq ($(MCU), atmega32)
  131. BFD_MACH=avr5
  132. ifeq ($(BOOTSIZE), 256)
  133. MT_BOOTLOADER_ADDRESS = 0x7E00
  134. endif
  135. ifeq ($(BOOTSIZE), 512)
  136. MT_BOOTLOADER_ADDRESS = 0x7C00
  137. endif
  138. ifeq ($(BOOTSIZE), 1024)
  139. MT_BOOTLOADER_ADDRESS = 0x7800
  140. endif
  141. ifeq ($(BOOTSIZE), 2048)
  142. MT_BOOTLOADER_ADDRESS = 0x7000
  143. endif
  144. endif
  145. ##
  146. ifeq ($(MCU), atmega324p)
  147. BFD_MACH=avr5
  148. ifeq ($(BOOTSIZE), 256)
  149. MT_BOOTLOADER_ADDRESS = 0x7E00
  150. endif
  151. ifeq ($(BOOTSIZE), 512)
  152. MT_BOOTLOADER_ADDRESS = 0x7C00
  153. endif
  154. ifeq ($(BOOTSIZE), 1024)
  155. MT_BOOTLOADER_ADDRESS = 0x7800
  156. endif
  157. ifeq ($(BOOTSIZE), 2048)
  158. MT_BOOTLOADER_ADDRESS = 0x7000
  159. endif
  160. endif
  161. ##
  162. ifeq ($(MCU), atmega644)
  163. BFD_MACH=avr5
  164. ifeq ($(BOOTSIZE), 512)
  165. MT_BOOTLOADER_ADDRESS = 0xFC00
  166. endif
  167. ifeq ($(BOOTSIZE), 1024)
  168. MT_BOOTLOADER_ADDRESS = 0xF800
  169. endif
  170. ifeq ($(BOOTSIZE), 2048)
  171. MT_BOOTLOADER_ADDRESS = 0xF000
  172. endif
  173. ifeq ($(BOOTSIZE), 4096)
  174. MT_BOOTLOADER_ADDRESS = 0xE000
  175. endif
  176. endif
  177. ##
  178. ifeq ($(MCU), atmega644p)
  179. BFD_MACH=avr5
  180. ifeq ($(BOOTSIZE), 512)
  181. MT_BOOTLOADER_ADDRESS = 0xFC00
  182. endif
  183. ifeq ($(BOOTSIZE), 1024)
  184. MT_BOOTLOADER_ADDRESS = 0xF800
  185. endif
  186. ifeq ($(BOOTSIZE), 2048)
  187. MT_BOOTLOADER_ADDRESS = 0xF000
  188. endif
  189. ifeq ($(BOOTSIZE), 4096)
  190. MT_BOOTLOADER_ADDRESS = 0xE000
  191. endif
  192. endif
  193. ##
  194. ifeq ($(MCU), atmega128)
  195. BFD_MACH=avr5
  196. ifeq ($(BOOTSIZE), 512)
  197. MT_BOOTLOADER_ADDRESS = 0x1FC00
  198. endif
  199. ifeq ($(BOOTSIZE), 1024)
  200. MT_BOOTLOADER_ADDRESS = 0x1F800
  201. endif
  202. ifeq ($(BOOTSIZE), 2048)
  203. MT_BOOTLOADER_ADDRESS = 0x1F000
  204. endif
  205. ifeq ($(BOOTSIZE), 4096)
  206. MT_BOOTLOADER_ADDRESS = 0x1E000
  207. endif
  208. endif
  209. ##
  210. ifeq ($(MCU), at90can128)
  211. BFD_MACH=avr5
  212. ifeq ($(BOOTSIZE), 512)
  213. MT_BOOTLOADER_ADDRESS = 0x1FC00
  214. endif
  215. ifeq ($(BOOTSIZE), 1024)
  216. MT_BOOTLOADER_ADDRESS = 0x1F800
  217. endif
  218. ifeq ($(BOOTSIZE), 2048)
  219. MT_BOOTLOADER_ADDRESS = 0x1F000
  220. endif
  221. ifeq ($(BOOTSIZE), 4096)
  222. MT_BOOTLOADER_ADDRESS = 0x1E000
  223. endif
  224. endif
  225. # Output format. (can be srec, ihex, binary)
  226. FORMAT = ihex
  227. #FORMAT = srec
  228. # Target file name (without extension).
  229. TARGET = main
  230. # List C source files here. (C dependencies are automatically generated.)
  231. SRC = $(TARGET).c
  232. # List Assembler source files here.
  233. # Make them always end in a capital .S. Files ending in a lowercase .s
  234. # will not be considered source files but generated files (assembler
  235. # output from the compiler), and will be deleted upon "make clean"!
  236. # Even though the DOS/Win* filesystem matches both .s and .S the same,
  237. # it will preserve the spelling of the filenames, and gcc itself does
  238. # care about how the name is spelled on its command-line.
  239. ASRC =
  240. # Optimization level, can be [0, 1, 2, 3, s].
  241. # 0 = turn off optimization. s = optimize for size.
  242. # (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
  243. OPT = s
  244. # Debugging format.
  245. # Native formats for AVR-GCC's -g are stabs [default], or dwarf-2.
  246. # AVR (extended) COFF requires stabs, plus an avr-objcopy run.
  247. DEBUG = stabs
  248. # List any extra directories to look for include files here.
  249. # Each directory must be seperated by a space.
  250. EXTRAINCDIRS =
  251. # Compiler flag to set the C Standard level.
  252. # c89 - "ANSI" C
  253. # gnu89 - c89 plus GCC extensions
  254. # c99 - ISO C99 standard (not yet fully implemented)
  255. # gnu99 - c99 plus GCC extensions
  256. CSTANDARD = -std=gnu99
  257. # Place -D or -U options here
  258. CDEFS = -DBOOTSIZE=$(BOOTSIZE)
  259. # Place -I options here
  260. CINCS =
  261. # Compiler flags.
  262. # -g*: generate debugging information
  263. # -O*: optimization level
  264. # -f...: tuning, see GCC manual and avr-libc documentation
  265. # -Wall...: warning level
  266. # -Wa,...: tell GCC to pass this to the assembler.
  267. # -adhlns...: create assembler listing
  268. CFLAGS = -g$(DEBUG)
  269. CFLAGS += $(CDEFS) $(CINCS)
  270. CFLAGS += -O$(OPT)
  271. CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
  272. CFLAGS += -Wall -Wstrict-prototypes
  273. CFLAGS += -Wa,-adhlns=$(<:.c=.lst)
  274. CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
  275. CFLAGS += $(CSTANDARD)
  276. # Assembler flags.
  277. # -Wa,...: tell GCC to pass this to the assembler.
  278. # -ahlms: create listing
  279. # -gstabs: have the assembler create line number information; note that
  280. # for use in COFF files, additional information about filenames
  281. # and function names needs to be present in the assembler source
  282. # files -- see avr-libc docs [FIXME: not yet described there]
  283. ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
  284. #Additional libraries.
  285. # Minimalistic printf version
  286. PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
  287. # Floating point printf version (requires MATH_LIB = -lm below)
  288. PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
  289. PRINTF_LIB =
  290. # Minimalistic scanf version
  291. SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
  292. # Floating point + %[ scanf version (requires MATH_LIB = -lm below)
  293. SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
  294. SCANF_LIB =
  295. MATH_LIB = -lm
  296. # External memory options
  297. # 64 KB of external RAM, starting after internal RAM (ATmega128!),
  298. # used for variables (.data/.bss) and heap (malloc()).
  299. #EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
  300. # 64 KB of external RAM, starting after internal RAM (ATmega128!),
  301. # only used for heap (malloc()).
  302. #EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff
  303. EXTMEMOPTS =
  304. # Linker flags.
  305. # -Wl,...: tell GCC to pass this to linker.
  306. # -Map: create map file
  307. # --cref: add cross reference to map file
  308. LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
  309. LDFLAGS += $(EXTMEMOPTS)
  310. LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
  311. ################## BOOTLOADER ######################
  312. # MT_BOOTLOADER_ADDRESS (=Start of Boot Loader section
  313. # in bytes - not words) as defined above.
  314. LDFLAGS += -Wl,--section-start=.text=$(MT_BOOTLOADER_ADDRESS)
  315. # check if linker-scripts without interrupt-vectors should
  316. # be used and set linker-option, announce to C-code by define
  317. ifeq ($(BOOTINTVEC), no)
  318. LDFLAGS += -T./ldscripts_no_vector/$(BFD_MACH).x
  319. CFLAGS += -DBOOTLOADERHASNOVECTORS
  320. endif
  321. # Programming support using avrdude. Settings and variables.
  322. # Programming hardware: alf avr910 avrisp bascom bsd
  323. # dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
  324. #
  325. # Type: avrdude -c ?
  326. # to get a full listing.
  327. #
  328. AVRDUDE_PROGRAMMER = stk500v2
  329. # com1 = serial port. Use lpt1 to connect to parallel port.
  330. AVRDUDE_PORT = com1 # programmer connected to serial device
  331. #AVRDUDE_PORT = /dev/ttyS0 # programmer connected to serial device
  332. AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
  333. #AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
  334. # Uncomment the following if you want avrdude's erase cycle counter.
  335. # Note that this counter needs to be initialized first using -Yn,
  336. # see avrdude manual.
  337. #AVRDUDE_ERASE_COUNTER = -y
  338. # Uncomment the following if you do /not/ wish a verification to be
  339. # performed after programming the device.
  340. #AVRDUDE_NO_VERIFY = -V
  341. # Increase verbosity level. Please use this when submitting bug
  342. # reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
  343. # to submit bug reports.
  344. #AVRDUDE_VERBOSE = -v -v
  345. AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
  346. AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
  347. AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
  348. AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
  349. # ---------------------------------------------------------------------------
  350. # Define directories, if needed.
  351. #DIRAVR = c:/winavr
  352. #DIRAVRBIN = $(DIRAVR)/bin
  353. #DIRAVRUTILS = $(DIRAVR)/utils/bin
  354. #DIRINC = .
  355. #DIRLIB = $(DIRAVR)/avr/lib
  356. # Define programs and commands.
  357. #SHELL = $(DIRAVRUTILS)/sh
  358. #NM = $(DIRAVRBIN)/avr-nm
  359. #CC = $(DIRAVRBIN)/avr-gcc
  360. #OBJCOPY = $(DIRAVRBIN)/avr-objcopy
  361. #OBJDUMP= $(DIRAVRBIN)/avr-objdump
  362. #SIZE = $(DIRAVRBIN)/avr-size
  363. #AVRDUDE = $(DIRAVRBIN)/avrdude.sh
  364. #REMOVE = rm -f
  365. #COPY = cp
  366. # Define programs and commands.
  367. SHELL = sh
  368. CC = avr-gcc
  369. OBJCOPY = avr-objcopy
  370. OBJDUMP = avr-objdump
  371. SIZE = avr-size
  372. NM = avr-nm
  373. AVRDUDE = avrdude
  374. REMOVE = rm -f
  375. COPY = cp
  376. WINSHELL = cmd
  377. # Define Messages
  378. # English
  379. MSG_ERRORS_NONE = Errors: none
  380. MSG_BEGIN = -------- begin --------
  381. MSG_END = -------- end --------
  382. MSG_SIZE_BEFORE = Size before:
  383. MSG_SIZE_AFTER = Size after:
  384. MSG_COFF = Converting to AVR COFF:
  385. MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
  386. MSG_FLASH = Creating load file for Flash:
  387. MSG_EEPROM = Creating load file for EEPROM:
  388. MSG_EXTENDED_LISTING = Creating Extended Listing:
  389. MSG_SYMBOL_TABLE = Creating Symbol Table:
  390. MSG_LINKING = Linking:
  391. MSG_COMPILING = Compiling:
  392. MSG_ASSEMBLING = Assembling:
  393. MSG_CLEANING = Cleaning project:
  394. # Define all object files.
  395. OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)
  396. # Define all listing files.
  397. LST = $(ASRC:.S=.lst) $(SRC:.c=.lst)
  398. # Compiler flags to generate dependency files.
  399. ### GENDEPFLAGS = -Wp,-M,-MP,-MT,$(*F).o,-MF,.dep/$(@F).d
  400. GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d
  401. # Combine all necessary flags and optional flags.
  402. # Add target processor to flags.
  403. ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
  404. ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
  405. # Default target.
  406. all: begin gccversion sizebefore build sizeafter finished end
  407. build: elf hex eep lss sym
  408. elf: $(TARGET).elf
  409. hex: $(TARGET).hex
  410. eep: $(TARGET).eep
  411. lss: $(TARGET).lss
  412. sym: $(TARGET).sym
  413. # Eye candy.
  414. # AVR Studio 3.x does not check make's exit code but relies on
  415. # the following magic strings to be generated by the compile job.
  416. begin:
  417. @echo
  418. @echo $(MSG_BEGIN)
  419. finished:
  420. @echo $(MSG_ERRORS_NONE)
  421. end:
  422. @echo $(MSG_END)
  423. @echo
  424. # Display size of file.
  425. HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
  426. ELFSIZE = $(SIZE) -x -A $(TARGET).elf
  427. sizebefore:
  428. @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi
  429. sizeafter:
  430. @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi
  431. # Display compiler version information.
  432. gccversion :
  433. @$(CC) --version
  434. # Program the device.
  435. program: $(TARGET).hex $(TARGET).eep
  436. $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
  437. # Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
  438. COFFCONVERT=$(OBJCOPY) --debugging \
  439. --change-section-address .data-0x800000 \
  440. --change-section-address .bss-0x800000 \
  441. --change-section-address .noinit-0x800000 \
  442. --change-section-address .eeprom-0x810000
  443. coff: $(TARGET).elf
  444. @echo
  445. @echo $(MSG_COFF) $(TARGET).cof
  446. $(COFFCONVERT) -O coff-avr $< $(TARGET).cof
  447. extcoff: $(TARGET).elf
  448. @echo
  449. @echo $(MSG_EXTENDED_COFF) $(TARGET).cof
  450. $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
  451. # Create final output files (.hex, .eep) from ELF output file.
  452. %.hex: %.elf
  453. @echo
  454. @echo $(MSG_FLASH) $@
  455. $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
  456. %.eep: %.elf
  457. @echo
  458. @echo $(MSG_EEPROM) $@
  459. -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
  460. --change-section-lma .eeprom=0 -O $(FORMAT) $< $@
  461. # Create extended listing file from ELF output file.
  462. %.lss: %.elf
  463. @echo
  464. @echo $(MSG_EXTENDED_LISTING) $@
  465. $(OBJDUMP) -h -S $< > $@
  466. # Create a symbol table from ELF output file.
  467. %.sym: %.elf
  468. @echo
  469. @echo $(MSG_SYMBOL_TABLE) $@
  470. $(NM) -n $< > $@
  471. # Link: create ELF output file from object files.
  472. .SECONDARY : $(TARGET).elf
  473. .PRECIOUS : $(OBJ)
  474. %.elf: $(OBJ)
  475. @echo
  476. @echo $(MSG_LINKING) $@
  477. $(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS)
  478. # Compile: create object files from C source files.
  479. %.o : %.c
  480. @echo
  481. @echo $(MSG_COMPILING) $<
  482. $(CC) -c $(ALL_CFLAGS) $< -o $@
  483. # Compile: create assembler files from C source files.
  484. %.s : %.c
  485. $(CC) -S $(ALL_CFLAGS) $< -o $@
  486. # Assemble: create object files from assembler source files.
  487. %.o : %.S
  488. @echo
  489. @echo $(MSG_ASSEMBLING) $<
  490. $(CC) -c $(ALL_ASFLAGS) $< -o $@
  491. # Target: clean project.
  492. clean: begin clean_list finished end
  493. clean_list :
  494. @echo
  495. @echo $(MSG_CLEANING)
  496. $(REMOVE) $(TARGET).hex
  497. $(REMOVE) $(TARGET).eep
  498. $(REMOVE) $(TARGET).obj
  499. $(REMOVE) $(TARGET).cof
  500. $(REMOVE) $(TARGET).elf
  501. $(REMOVE) $(TARGET).map
  502. $(REMOVE) $(TARGET).obj
  503. $(REMOVE) $(TARGET).a90
  504. $(REMOVE) $(TARGET).sym
  505. $(REMOVE) $(TARGET).lnk
  506. $(REMOVE) $(TARGET).lss
  507. $(REMOVE) $(OBJ)
  508. $(REMOVE) $(LST)
  509. $(REMOVE) $(SRC:.c=.s)
  510. $(REMOVE) $(SRC:.c=.d)
  511. $(REMOVE) .dep/*
  512. # Include the dependency files.
  513. -include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
  514. # Listing of phony targets.
  515. .PHONY : all begin finish end sizebefore sizeafter gccversion \
  516. build elf hex eep lss sym coff extcoff \
  517. clean clean_list program