Imported upstream version 1.20
[fw/openalt] / Makefile
1 .SILENT: 
2
3 #
4 #  -D CFG_CONSOLE_USB   for console on USB
5 #  -D CFG_CONSOLE_UART0 for console on UART0
6 #  -D CFG_CONSOLE_UART1 for console on UART1 instead of USB (disables GPS task, baud rate set to 115200)
7 #  -D CFG_USB_MSC       to use SD/MMC as a mass storage class device over USB
8 #
9 export LPC2148DEMO_OPTS=-D CFG_CONSOLE_USB
10
11 #
12 #  These shouldn't need to be changed
13 #
14 export CC=arm-elf-gcc
15 export AR=arm-elf-ar
16 export OBJCOPY=arm-elf-objcopy
17 export OBJDUMP=arm-elf-objdump
18 export CRT0=boot.s
19 export WARNINGS=-Wall -Wextra -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wunused
20 export CFLAGS=$(WARNINGS) -D RUN_MODE=RUN_FROM_ROM -D GCC_ARM7 $(INCLUDES) $(BASEINCLUDE) -mcpu=arm7tdmi -T$(LDSCRIPT) -g -O3 -fomit-frame-pointer $(LPC2148DEMO_OPTS)
21 export LDSCRIPT=lpc2148-rom.ld
22 export LINKER_FLAGS=$(COMMON)/common.a -Xlinker -olpc2148.elf -Xlinker -M -Xlinker -Map=lpc2148.map
23 export ROOT=$(shell pwd)
24 export BASEINCLUDE=-I$(ROOT) -I$(ROOT)/FreeRTOS/include
25 export COMMON=$(ROOT)/common
26
27 #
28 #  Project sub-directories
29 #
30 SUBDIRS=FreeRTOS adc cpu dac eints fatfs fiq gps i2c iap leds monitor newlib rtc sensors swi uart usb usbmass usbser
31
32 SRC_FILES = main.c
33
34 ARM_OBJ = $(SRC_FILES:.c=.o)
35
36 .PHONY: all
37 all : 
38         @for i in $(SUBDIRS); do \
39         (cd $$i; $(MAKE) $(MFLAGS) $(MYMAKEFLAGS) all); done
40         make lpc2148.hex
41
42 lpc2148.hex : .depend Makefile lpc2148.elf
43         $(OBJCOPY) lpc2148.elf -O ihex lpc2148.hex
44         @echo "Length is " `grep __"end_of_text__ = ." *.map | cut -b 17-35` "bytes"
45
46 lpc2148.elf : .depend Makefile $(ARM_OBJ) $(COMMON)/common.a $(CRT0) $(LDSCRIPT)
47         $(CC) $(CFLAGS) $(ARM_OBJ) -nostartfiles $(CRT0) $(LINKER_FLAGS)
48         $(OBJDUMP) -d -S lpc2148.elf >lpc2148.lst
49  
50 $(ARM_OBJ) : %.o : %.c Makefile .depend
51         $(CC) -c $(CFLAGS) $< -o $@
52
53 #
54 #  The .depend files contains the list of header files that the
55 #  various source files depend on.  By doing this, we'll only
56 #  rebuild the .o's that are affected by header files changing.
57 #
58 .depend:
59         $(CC) $(CFLAGS) -M $(SRC_FILES) > .depend
60
61 #
62 #  Utility targets
63 #
64 .PHONY: tags
65 tags :
66         @rm -f ctags
67         find . -name \*.c -exec ctags -a {} \;
68         find . -name \*.h -exec ctags -a {} \;
69
70 .PHONEY: clean
71 clean :
72         find . -name \*.o -exec rm -f {} \;
73         find . -name .depend -exec rm -f {} \;
74         rm -f *.map *.lst *.elf *.hex .depend $(COMMON)/common.a
75
76 #
77 #
78 #
79 ifeq (.depend,$(wildcard .depend))
80 include .depend
81 endif