Guest User

Makefile

a guest
Dec 14th, 2012
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Make 4.50 KB | None | 0 0
  1. # Makefile for AIR project
  2. # CPU: LPC2148
  3. # ARH: ARM7TDMI-S
  4.  
  5. # Project name
  6. PROJECT = air-1.0
  7.  
  8. # Compilation parameters
  9. MCU      = arm7tdmi-s
  10. CPUARCH  = armv4t
  11. #THUMB    = -mthumb
  12. #THUMB    += -mcallee-super-interworking
  13. #THUMB_IW = -mthumb-interwork
  14. #-fno-omit-frame-pointer
  15. OPTLEVEL = s
  16. DEBUG    =
  17.  
  18. DEBUG_METHOD = hard
  19.  
  20. # Source files
  21. SRC   = src/main.c \
  22.         src/debug.c \
  23.         src/os/kernel/os_kernel.c \
  24.         src/os/kernel/os_fifo.c \
  25.         src/os/system.c \
  26.         src/os/sysdrv/io.c \
  27.         src/os/sysdrv/i2c.c \
  28.         src/os/sysdrv/scb.c \
  29.         src/os/sysdrv/spi.c \
  30.         src/os/sysdrv/vic.c \
  31.         src/os/usrdrv/mmc.c \
  32.         src/os/usrdrv/pcf8548.c \
  33.         src/os/usrdrv/kbd.c \
  34.         src/os/usrdrv/audio.c \
  35.         src/os/gfx/lcd_a2618.c \
  36.         src/os/gfx/fb_1bpp.c \
  37.         src/sys/mem_alloc.c \
  38.         src/sys/xlibc.c \
  39.         src/resources/bitmaps.c \
  40.         src/resources/fonts.c \
  41.         src/au.c \
  42.         src/adpcm.c \
  43.         src/audio/auprocessor.c \
  44.         src/os/fs/tff.c \
  45.         src/os/fs/diskio.c \
  46.         src/port.c \
  47.         src/cpptest.c
  48. SRC32 =
  49. SRCAS = src/sys/crt0.S src/os/kernel/os_kernel_asm.S
  50. #SRC  += src/usbmem/mscuser.c src/usbmem/usbcore.c src/usbmem/usbdesc.c src/usbmem/usbhw.c src/usbmem/usbuser.c src/usbmem/diskimg.c
  51.  
  52. INCLUDES = -Iinclude
  53. #FLAGS = -finstrument-functions
  54. #-fstack-protector -Wstack-protector -fstack-protector-all
  55. #-finstrument-functions
  56. #-ffunction-sections -fdata-sections -Wl,--gc-sections
  57.  
  58. # +-----------------------------------------------+
  59. # |               Common block                    |
  60. # +-----------------------------------------------+
  61. ifeq ($(DEBUG_METHOD),hard)
  62. CFLAGS  = $(FLAGS) -mcpu=$(MCU) -mtune=$(MCU) -march=$(CPUARCH) $(DEBUG) $(THUMB_IW) \
  63.           -Wall -std=gnu99 -O$(OPTLEVEL) $(INCLUDES)
  64. LDFLAGS = -nostartfiles -nostdlib -T lpc2148_rom.ld
  65. else
  66. CFLAGS  = -mcpu=$(MCU) -mtune=$(MCU) -march=$(CPUARCH) -D_SOFTDEBUG_ $(DEBUG) $(THUMB_IW) \
  67.           -Wall -std=gnu99 -O$(OPTLEVEL) $(INCLUDES)
  68. LDFLAGS = -nostartfiles -T lpc2148_rom.ld
  69. endif
  70. LIBGCC  = `$(CC) $(CFLAGS) $(THUMB) -print-libgcc-file-name`
  71. LIBDIR  = /opt/armgcc/arm-elf/lib/`$(CC) $(CFLAGS) -print-multi-directory`
  72. #LIBC    = $(LIBDIR)/libc.a
  73. #LIBC   += $(LIBDIR)/libnosys.a
  74.  
  75. #ARCH=arm-elf
  76. ARCH=arm-none-eabi
  77.  
  78. CC = $(ARCH)-gcc
  79. LD = $(ARCH)-ld
  80. AR = $(ARCH)-ar
  81. AS = $(ARCH)-as
  82. OBJCOPY = $(ARCH)-objcopy
  83. OBJDUMP = $(ARCH)-objdump
  84. OBJSIZE = $(ARCH)-size
  85.  
  86. OBJS   = $(SRC:.c=.o)
  87. OBJS32 = $(SRC32:.c=.o)
  88. OBJSAS = $(SRCAS:.S=.o)
  89. OBJALL = $(OBJS) $(OBJS32) $(OBJSPP) $(OBJSAS)
  90.  
  91. ELF    = $(PROJECT).elf
  92. HEX    = $(PROJECT).hex
  93. BIN    = $(PROJECT).bin
  94. ASM    = $(PROJECT).asm
  95. MAP    = $(PROJECT).map
  96.  
  97. TO_CLEAN = $(OBJALL) $(ELF) $(BIN) $(HEX) $(ASM) $(MAP)
  98.  
  99. LPCISP = lpc21isp
  100. #LPCISP_PARAMS = -control -PHILIPSARM $(HEX) /dev/ttyUSB0 115200 12000
  101. LPCISP_PARAMS = -control -PHILIPSARM $(HEX) /dev/ttyUSB0 38400 12000
  102. #LPCISP = lpcflash
  103. #LPCISP_PARAMS = -i /dev/ttyUSB0 -b 115200 -f 14746 -w 0x4000000 -l $(HEX)
  104.  
  105. # Messages
  106. MSG_COMPILING       = "CC  :"
  107. MSG_COMPILING32     = "CC32:"
  108. MSG_COMPILINGCCPP   = "C++ :"
  109. MSG_COMPILINGAS     = "AS  :"
  110. MSG_LINKING         = "LD  :"
  111. MSG_CLEANING        = "RM  :"
  112. MSG_SIZE            = "Size:"
  113. MSG_HEX             = "Make HEX from $(ELF):"
  114. MSG_BIN             = "Make binary from $(ELF):"
  115. MSG_BINSIZE         = "Size of binary:"
  116. MSG_DISASM          = "Disassemble $(ELF):"
  117.  
  118. # Rules
  119. #.SILENT : $(OBJALL) $(ELF) $(HEX) $(BIN) $(ASM) clean
  120. #.SILENT : $(OBJALL) $(HEX) $(BIN) $(ASM) clean
  121.  
  122. $(ELF)    : $(OBJS) $(OBJS32) $(OBJSAS)
  123.     @echo $(MSG_LINKING) $@
  124.     $(LD) -Map $(MAP) --cref $(LDFLAGS) -o $@ $(OBJALL) $(LIBGCC) $(LIBC) $(LIBS)
  125.     #$(CCPP) -Wl,-Map -Wl,$(MAP) $(LDFLAGS) -o $@ $(OBJALL) $(LIBGCC) $(LIBC) $(LIBS)
  126.     @echo $(MSG_SIZE)
  127.     $(OBJSIZE) $@
  128.  
  129. $(OBJS)   : %.o : %.c
  130.     @echo $(MSG_COMPILING) $<
  131.     $(CC) -c $(CFLAGS) $(THUMB) -o $@ $<
  132.  
  133. $(OBJS32) : %.o : %.c
  134.     @echo $(MSG_COMPILING32) $<
  135.     $(CC) -c $(CFLAGS) -o $@ $<
  136.  
  137. $(OBJSAS) : %.o : %.S
  138.     @echo $(MSG_COMPILINGAS) $<
  139.     $(CC) -c $(CFLAGS) -D__ASM__ -o $@ $<
  140.  
  141. $(HEX) : $(ELF)
  142.     @echo $(MSG_HEX) $(HEX)
  143.     $(OBJCOPY) -O ihex $(ELF) $(HEX)
  144.  
  145. $(BIN) : $(ELF)
  146.     @echo $(MSG_BIN) $(BIN)
  147.     $(OBJCOPY) -O binary $(ELF) $(BIN)
  148.     @echo $(MSG_BINSIZE) `wc -c $(BIN)`
  149.  
  150. $(ASM) : $(ELF)
  151.     @echo $(MSG_DISASM) $(ASM)
  152.     $(OBJDUMP) -d $(ELF) > $(ASM)
  153.  
  154. all : $(ELF) hex
  155. hex : $(HEX)
  156. bin : $(BIN)
  157. disasm: $(ASM)
  158.  
  159. flash: $(HEX)
  160.     $(LPCISP) $(LPCISP_PARAMS)
  161.  
  162. clean :
  163.     @echo $(MSG_CLEANING) $(TO_CLEAN)
  164.     rm -f $(OBJALL) $(TO_CLEAN)
Advertisement
Add Comment
Please, Sign In to add comment