#****************************************************************************** # # makedefs - Definitions common to all makefiles. # # Copyright (c) 2005,2006 Luminary Micro, Inc. All rights reserved. # # Software License Agreement # # Luminary Micro, Inc. (LMI) is supplying this software for use solely and # exclusively on LMI's Stellaris Family of microcontroller products. # # The software is owned by LMI and/or its suppliers, and is protected under # applicable copyright laws. All rights are reserved. Any use in violation # of the foregoing restrictions may subject the user to criminal sanctions # under applicable laws, as well as to civil liability for the breach of the # terms and conditions of this license. # # THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED # OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. # LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR # CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. # #****************************************************************************** #****************************************************************************** # # The compiler to be used. # #****************************************************************************** ifndef COMPILER COMPILER=gcc endif #****************************************************************************** # # The debugger to be used. # #****************************************************************************** ifndef DEBUGGER DEBUGGER=gdb endif #****************************************************************************** # # Definitions for using GCC. # #****************************************************************************** ifeq (${COMPILER}, gcc) # # The command for calling the compiler. # CC=arm-none-eabi-gcc # # The flags passed to the assembler. # AFLAGS=-mthumb \ -mcpu=cortex-m3 \ -MD # # The flags passed to the compiler. # CFLAGS=-mthumb \ -mcpu=cortex-m3 \ -O2 \ -MD # # The command for calling the library archiver. # AR=arm-none-eabi-ar # # The command for calling the linker. # LD=arm-none-eabi-ld # # The flags passed to the linker. # LDFLAGS= -Map gcc/out.map # # Get the location of libgcc.a from the GCC front-end. # LIBGCC=${shell ${CC} -mthumb -march=armv6t2 -print-libgcc-file-name} # # Get the location of libc.a from the GCC front-end. # LIBC=${shell ${CC} -mthumb -march=armv6t2 -print-file-name=libc.a} # # The command for extracting images from the linked executables. # OBJCOPY=arm-none-eabi-objcopy endif #****************************************************************************** # # Tell the compiler to include debugging information if the DEBUG environment # variable is set. # #****************************************************************************** ifdef DEBUG CFLAGS += -g endif #****************************************************************************** # # The rule for building the object file from each C source file. # #****************************************************************************** ${COMPILER}/%.o: %.c @if [ 'x${VERBOSE}' = x ]; \ then \ echo " CC ${<}"; \ else \ echo ${CC} ${CFLAGS} -D${COMPILER} -o ${@} -c ${<}; \ fi @${CC} ${CFLAGS} -D${COMPILER} -o ${@} -c ${<} ifeq (${COMPILER}, rvds) @mv -f ${notdir ${@:.o=.d}} ${COMPILER} endif #****************************************************************************** # # The rule for building the object file from each assembly source file. # #****************************************************************************** ${COMPILER}/%.o: %.S @if [ 'x${VERBOSE}' = x ]; \ then \ echo " CC ${<}"; \ else \ echo ${CC} ${AFLAGS} -D${COMPILER} -o ${@} -c ${<}; \ fi ifeq (${COMPILER}, rvds) @${CC} ${AFLAGS} -D${COMPILER} -E ${<} > ${@:.o=_.S} @${CC} ${AFLAGS} -o ${@} -c ${@:.o=_.S} @rm ${@:.o=_.S} @${CC} ${AFLAGS} -D${COMPILER} --md -E ${<} @sed 's,,${@},g' ${notdir ${<:.S=.d}} > ${@:.o=.d} @rm ${notdir ${<:.S=.d}} endif ifeq (${COMPILER}, gcc) @${CC} ${AFLAGS} -D${COMPILER} -o ${@} -c ${<} endif #****************************************************************************** # # The rule for creating an object library. # #****************************************************************************** ${COMPILER}/%.a: @if [ 'x${VERBOSE}' = x ]; \ then \ echo " AR ${@}"; \ else \ echo ${AR} -cr ${@} ${^}; \ fi @${AR} -cr ${@} ${^} #****************************************************************************** # # The rule for linking the application. # #****************************************************************************** ${COMPILER}/%.axf: @if [ 'x${VERBOSE}' = x ]; \ then \ echo " LD ${@}"; \ fi ifeq (${COMPILER}, gcc) @if [ 'x${VERBOSE}' != x ]; \ then \ echo ${LD} -T ${SCATTER_${notdir ${@:.axf=}}} \ --entry ${ENTRY_${notdir ${@:.axf=}}} \ ${LDFLAGSgcc_${notdir ${@:.axf=}}} \ ${LDFLAGS} -o ${@} ${^} \ '${LIBC}' '${LIBGCC}'; \ fi @${LD} -T ${SCATTER_${notdir ${@:.axf=}}} \ --entry ${ENTRY_${notdir ${@:.axf=}}} \ ${LDFLAGSgcc_${notdir ${@:.axf=}}} \ ${LDFLAGS} -o ${@} ${^} \ '${LIBC}' '${LIBGCC}' @${OBJCOPY} -O binary ${@} ${@:.axf=.bin} endif