| #****************************************************************************** |
| # |
| # 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,<stdout>,${@},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 |