#
# 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.
#

# Default.
compiler.path.cc: "gcc"
compiler.path.cpp: "g++"
compiler.path.as: "gcc"
compiler.path.archive: "ar"
compiler.path.objdump: "objdump"
compiler.path.objsize: "size"
compiler.path.objcopy: "objcopy"
compiler.flags.base: [-Wall, -Werror, -ggdb, -ffunction-sections, -fdata-sections, -fno-common]
compiler.ld.resolve_circular_deps: true

compiler.flags.default: [compiler.flags.base, -O1]
compiler.flags.optimized: [compiler.flags.base, -Os]
compiler.flags.speed: [compiler.flags.base, -O2]
compiler.flags.debug: [compiler.flags.base, -O0]
compiler.as.flags: [-x, assembler-with-cpp]
compiler.ld.mapfile: false
compiler.ld.binfile: false
compiler.ld.flags: -lm -Wl,--gc-sections

# Linux.
compiler.flags.base.LINUX: [-DMN_LINUX]
compiler.ld.flags.LINUX: [-lutil]

# OS X.
compiler.path.cc.DARWIN.OVERWRITE: "gcc"
compiler.path.as.DARWIN.OVERWRITE: "gcc"
compiler.path.objdump.DARWIN.OVERWRITE: "gobjdump"
compiler.path.objcopy.DARWIN.OVERWRITE: "gobjcopy"
compiler.flags.base.DARWIN: [-DMN_OSX, -Wno-missing-braces]
compiler.ld.flags.DARWIN.OVERWRITE: -lm -Wl,-dead_strip
compiler.ld.resolve_circular_deps.DARWIN.OVERWRITE: false

compiler.path.cc.FREEBSD.OVERWRITE: "cc"
compiler.path.as.FREEBSD.OVERWRITE: "cc"
compiler.flags.base.FREEBSD: [-DMN_FreeBSD, -D_WITH_DPRINTF]
compiler.ld.flags.FREEBSD: [-L/usr/lib32, -B/usr/lib32, -lutil]
