#****************************************************************************** # # Get the operating system name. If this is Cygwin, the .d files will be # munged to convert c: into /cygdrive/c so that "make" will be happy with the # auto-generated dependencies. # #****************************************************************************** os:=${shell uname -s} #****************************************************************************** # # The compiler to be used. # #****************************************************************************** ifndef COMPILER COMPILER=gcc endif #****************************************************************************** # # Definitions for using GCC. # #****************************************************************************** ifeq (${COMPILER}, gcc) # # The command for calling the compiler. # CC=arm-none-eabi-gcc # # The location of the C compiler # ARMGCC_ROOT is used by some makefiles that need to know where the compiler # is installed. # ARMGCC_ROOT:=${shell dirname '${shell sh -c "which ${CC}"}'}/.. # # Set the compiler CPU/FPU options. # CPU=-mcpu=cortex-m4 FPU=-mfpu=fpv4-sp-d16 -mfloat-abi=hard # # The flags passed to the assembler. # AFLAGS=-mthumb \ ${CPU} \ ${FPU} \ -MD # # The flags passed to the compiler. # CFLAGS=-mthumb \ ${CPU} \ ${FPU} \ -ffunction-sections \ -fdata-sections \ -MD \ -std=c99 \ -Dgcc \ -D${PART} \ -specs=nano.specs \ -c # # 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= --gc-sections # # The command for extracting images from the linked executables. # OBJCOPY=arm-none-eabi-objcopy # # Tell the compiler to include debugging information if the DEBUG environment # variable is set. # # ifdef DEBUG # CFLAGS+=-g -D DEBUG -O0 # else # CFLAGS+=-Os # endif CFLAGS+=-g -Os # # Add the tool specific CFLAGS. # CFLAGS+=${CFLAGSgcc} # # Add the include file paths to AFLAGS and CFLAGS. # AFLAGS+=${patsubst %,-I%,${subst :, ,${IPATH}}} CFLAGS+=${patsubst %,-I%,${subst :, ,${IPATH}}} # # The rule for building the object file from each C source file. # ${COMPILER}${SUFFIX}/%.o: %.c @if [ 'x${VERBOSE}' = x ]; \ then \ echo " CC ${<}"; \ else \ echo ${CC} ${CFLAGS} -D${COMPILER} -o ${@} ${<}; \ fi @${CC} ${CFLAGS} -D${COMPILER} -o ${@} ${<} ifneq ($(findstring CYGWIN, ${os}), ) @sed -i -r 's/ ([A-Za-z]):/ \/cygdrive\/\1/g' ${@:.o=.d} endif # # The rule for building the object file from each assembly source file. # ${COMPILER}${SUFFIX}/%.o: %.S @if [ 'x${VERBOSE}' = x ]; \ then \ echo " AS ${<}"; \ else \ echo ${CC} ${AFLAGS} -D${COMPILER} -o ${@} -c ${<}; \ fi @${CC} ${AFLAGS} -D${COMPILER} -o ${@} -c ${<} ifneq ($(findstring CYGWIN, ${os}), ) @sed -i -r 's/ ([A-Za-z]):/ \/cygdrive\/\1/g' ${@:.o=.d} endif # # The rule for creating an object library. # ${COMPILER}${SUFFIX}/%.a: @if [ 'x${VERBOSE}' = x ]; \ then \ echo " AR ${@}"; \ else \ echo ${AR} -cr ${@} ${^}; \ fi @${AR} -cr ${@} ${^} endif