Tuesday, September 28, 2010

Bare Metal: Makefile for PuppyBeagle code base

###############################################################################
# Makefile to compile OMAP3 PuppyBeagle BootLoader
#
# Copyright (c) 2010, Amarnath B Revanna, amarnath.revanna@gmail.com
###############################################################################

###############################################################################
# Final output binary name
###############################################################################

BINNAME = puppy_beagle

###############################################################################
# toolchain specific stuff
###############################################################################

PREFIX = arm-none-eabi-
CC = $(PREFIX)gcc
AR = $(PREFIX)ar
LD = $(PREFIX)ld
DISASM  = $(PREFIX)objdump
BINARY = $(PREFIX)objcopy
RM = rm -f

###############################################################################
# ARM Architecture stuff
###############################################################################

ARM_CPU = cortex-a8
CC_ARM = -mcpu=$(ARM_CPU)

###############################################################################

###############################################################################
# compiler flags
###############################################################################

CC_COMPILER = -c

###############################################################################

###############################################################################
# Warnings
###############################################################################

CC_WARNINGS = -Wa,-EL

###############################################################################
# Includes
###############################################################################

CC_INCLUDE =

###############################################################################
# Need additional debug information?
###############################################################################

CC_DEBUG =


###############################################################################
# Produce listing of assembler output
###############################################################################

CC_LIST = -Wa,-a=$(patsubst %.o,%.lst,$@)

###############################################################################

###############################################################################
# => Resulting C-Flags
###############################################################################

CC_FLAGS = $(CC_ARM) \
 $(CC_WARNINGS) \
 $(CC_INCLUDE) \
 $(CC_DEBUG)
CFLAGS = $(CC_FLAGS) $(CC_LIST) $(CC_COMPILER)

###############################################################################

###############################################################################
# LD Flags
##############################################################################

LDFLAGS = -Map $(patsubst %,%.map,$(BINNAME))

###############################################################################

###############################################################################

SOURCEFILES :=  *.S *.c Makefile

###############################################################################

###############################################################################
# Make-Rules
#
# "make" or "make default" :  compile $(BINNAME)
# "make clean" :  cleanup - remove all *.o and $(BINNAME)
# "make distclean" :  same as clean, additonally remove all *~
###############################################################################

default: startup.o low_init.o sprint.o main.o i2c.o mmc.o
$(LD) $(LDFLAGS) -T PB.ld startup.o low_init.o sprint.o main.o i2c.o mmc.o -o $(BINNAME)
$(BINARY) -I elf32-little -O binary $(BINNAME) $(BINNAME).bin
$(RM) $(BINNAME)

startup.o:
$(CC) $(CFLAGS) -o startup.o startup.S

low_init.o:
$(CC) $(CFLAGS) -o low_init.o low_init.c

sprint.o:
$(CC) $(CFLAGS) -o sprint.o sprint.c

main.o:
$(CC) $(CFLAGS) -o main.o main.c

mmc.o:
$(CC) $(CFLAGS) -o mmc.o mmc.c

i2c.o:
$(CC) $(CFLAGS) -o i2c.o i2c.c

clean:
$(RM) *.o *.lst *.map $(BINNAME)

distclean:
$(RM) *.o *.lst *.map *.bin $(BINNAME) *~

No comments:

Post a Comment