#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
# 
#  http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

compiler.path.cc: arm-none-eabi-gcc
compiler.path.cpp: arm-none-eabi-g++
compiler.path.archive: arm-none-eabi-ar
compiler.path.as: arm-none-eabi-gcc
compiler.path.objdump: arm-none-eabi-objdump
compiler.path.objsize: arm-none-eabi-size
compiler.path.objcopy: arm-none-eabi-objcopy

compiler.flags.base: [-mcpu=cortex-m3, -mthumb-interwork, -mthumb, -Wall, -Werror, -fno-exceptions, -ffunction-sections, -fdata-sections, -fno-common]
compiler.flags.default: [compiler.flags.base, -O1, -ggdb]
compiler.flags.optimized: [compiler.flags.base, -Os, -ggdb]
compiler.flags.speed: [compiler.flags.base, -O3, -ggdb]
compiler.flags.debug: [compiler.flags.base, -Og, -ggdb]

compiler.as.flags: [-x, assembler-with-cpp]

compiler.ld.flags: -static -specs=nosys.specs -lgcc -Wl,--gc-sections -nostartfiles
compiler.ld.resolve_circular_deps: true
compiler.ld.mapfile: true
