You are on page 1of 6

# Makefile for AIR project

# CPU: LPC2148

# ARH: ARM7TDMI-S

# Project name

PROJECT = air-1.0

# Compilation parameters

MCU = arm7tdmi-s

CPUARCH = armv4t

#THUMB = -mthumb

#THUMB += -mcallee-super-interworking

#THUMB_IW = -mthumb-interwork

#-fno-omit-frame-pointer

OPTLEVEL = s

DEBUG =

DEBUG_METHOD = hard

# Source files

SRC = src/main.c \

src/debug.c \

src/os/kernel/os_kernel.c \

src/os/kernel/os_fifo.c \

src/os/system.c \

src/os/sysdrv/io.c \

src/os/sysdrv/i2c.c \

src/os/sysdrv/scb.c \

src/os/sysdrv/spi.c \
src/os/sysdrv/vic.c \

src/os/usrdrv/mmc.c \

src/os/usrdrv/pcf8548.c \

src/os/usrdrv/kbd.c \

src/os/usrdrv/audio.c \

src/os/gfx/lcd_a2618.c \

src/os/gfx/fb_1bpp.c \

src/sys/mem_alloc.c \

src/sys/xlibc.c \

src/resources/bitmaps.c \

src/resources/fonts.c \

src/au.c \

src/adpcm.c \

src/audio/auprocessor.c \

src/os/fs/tff.c \

src/os/fs/diskio.c \

src/port.c \

src/cpptest.c

SRC32 =

SRCAS = src/sys/crt0.S src/os/kernel/os_kernel_asm.S

#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

INCLUDES = -Iinclude

#FLAGS = -finstrument-functions

#-fstack-protector -Wstack-protector -fstack-protector-all

#-finstrument-functions

#-ffunction-sections -fdata-sections -Wl,--gc-sections


# +-----------------------------------------------+

#| Common block |

# +-----------------------------------------------+

ifeq ($(DEBUG_METHOD),hard)

CFLAGS = $(FLAGS) -mcpu=$(MCU) -mtune=$(MCU) -march=$(CPUARCH) $(DEBUG) $(THUMB_IW) \

-Wall -std=gnu99 -O$(OPTLEVEL) $(INCLUDES)

LDFLAGS = -nostartfiles -nostdlib -T lpc2148_rom.ld

else

CFLAGS = -mcpu=$(MCU) -mtune=$(MCU) -march=$(CPUARCH) -D_SOFTDEBUG_ $(DEBUG)


$(THUMB_IW) \

-Wall -std=gnu99 -O$(OPTLEVEL) $(INCLUDES)

LDFLAGS = -nostartfiles -T lpc2148_rom.ld

endif

LIBGCC = `$(CC) $(CFLAGS) $(THUMB) -print-libgcc-file-name`

LIBDIR = /opt/armgcc/arm-elf/lib/`$(CC) $(CFLAGS) -print-multi-directory`

#LIBC = $(LIBDIR)/libc.a

#LIBC += $(LIBDIR)/libnosys.a

#ARCH=arm-elf

ARCH=arm-none-eabi

CC = $(ARCH)-gcc

LD = $(ARCH)-ld

AR = $(ARCH)-ar

AS = $(ARCH)-as

OBJCOPY = $(ARCH)-objcopy

OBJDUMP = $(ARCH)-objdump

OBJSIZE = $(ARCH)-size
OBJS = $(SRC:.c=.o)

OBJS32 = $(SRC32:.c=.o)

OBJSAS = $(SRCAS:.S=.o)

OBJALL = $(OBJS) $(OBJS32) $(OBJSPP) $(OBJSAS)

ELF = $(PROJECT).elf

HEX = $(PROJECT).hex

BIN = $(PROJECT).bin

ASM = $(PROJECT).asm

MAP = $(PROJECT).map

TO_CLEAN = $(OBJALL) $(ELF) $(BIN) $(HEX) $(ASM) $(MAP)

LPCISP = lpc21isp

#LPCISP_PARAMS = -control -PHILIPSARM $(HEX) /dev/ttyUSB0 115200 12000

LPCISP_PARAMS = -control -PHILIPSARM $(HEX) /dev/ttyUSB0 38400 12000

#LPCISP = lpcflash

#LPCISP_PARAMS = -i /dev/ttyUSB0 -b 115200 -f 14746 -w 0x4000000 -l $(HEX)

# Messages

MSG_COMPILING = "CC :"

MSG_COMPILING32 = "CC32:"

MSG_COMPILINGCCPP = "C++ :"

MSG_COMPILINGAS = "AS :"

MSG_LINKING = "LD :"

MSG_CLEANING = "RM :"

MSG_SIZE = "Size:"

MSG_HEX = "Make HEX from $(ELF):"

MSG_BIN = "Make binary from $(ELF):"


MSG_BINSIZE = "Size of binary:"

MSG_DISASM = "Disassemble $(ELF):"

# Rules

#.SILENT : $(OBJALL) $(ELF) $(HEX) $(BIN) $(ASM) clean

#.SILENT : $(OBJALL) $(HEX) $(BIN) $(ASM) clean

$(ELF) : $(OBJS) $(OBJS32) $(OBJSAS)

@echo $(MSG_LINKING) $@

$(LD) -Map $(MAP) --cref $(LDFLAGS) -o $@ $(OBJALL) $(LIBGCC) $(LIBC) $(LIBS)

#$(CCPP) -Wl,-Map -Wl,$(MAP) $(LDFLAGS) -o $@ $(OBJALL) $(LIBGCC) $(LIBC) $(LIBS)

@echo $(MSG_SIZE)

$(OBJSIZE) $@

$(OBJS) : %.o : %.c

@echo $(MSG_COMPILING) $<

$(CC) -c $(CFLAGS) $(THUMB) -o $@ $<

$(OBJS32) : %.o : %.c

@echo $(MSG_COMPILING32) $<

$(CC) -c $(CFLAGS) -o $@ $<

$(OBJSAS) : %.o : %.S

@echo $(MSG_COMPILINGAS) $<

$(CC) -c $(CFLAGS) -D__ASM__ -o $@ $<

$(HEX) : $(ELF)

@echo $(MSG_HEX) $(HEX)

$(OBJCOPY) -O ihex $(ELF) $(HEX)


$(BIN) : $(ELF)

@echo $(MSG_BIN) $(BIN)

$(OBJCOPY) -O binary $(ELF) $(BIN)

@echo $(MSG_BINSIZE) `wc -c $(BIN)`

$(ASM) : $(ELF)

@echo $(MSG_DISASM) $(ASM)

$(OBJDUMP) -d $(ELF) > $(ASM)

all : $(ELF) hex

hex : $(HEX)

bin : $(BIN)

disasm: $(ASM)

flash: $(HEX)

$(LPCISP) $(LPCISP_PARAMS)

clean :

@echo $(MSG_CLEANING) $(TO_CLEAN)

rm -f $(OBJALL) $(TO_CLEAN)

You might also like