# This file is part of the SV-Benchmarks collection of verification tasks: # https://github.com/sosy-lab/sv-benchmarks # # Copyright (c) 2015 Daniel Liew # SPDX-FileCopyrightText: 2015-2016 Daniel Liew # SPDX-FileCopyrightText: 2015-2020 The SV-Benchmarks Community # # SPDX-License-Identifier: Apache-2.0 ################################################################################ # Note when defaults are set here (i.e. ``?=``) this can be overriden if three # different ways. # # * From the command line by passing an argument to make, e.g. # ``` # $ make CC=clang # ``` # * By setting an environment variable, e.g. # ``` # $ export CC=clang # $ make # ``` # * By setting the value in a top level makefile. For example one could add # the line ``CC := clang`` to ``array-examples/Makefile``. This method should # be used when you permanently want change use something other than the # default specified in this file for all sources in a directory. ################################################################################ ################################################################################ # Append to C compiler flags. # It is important to append so that it is posible to set CC.Flags in a top-level # makefile. ################################################################################ CC.Flags += -x c ################################################################################ # Set default x86 architecture variant # Valid values are 32 and 64. ################################################################################ CC.Arch ?= 32 ################################################################################ # Set default C standard if # Valid values are accepted arguments to gcc's ``-std=`` command line argument. ################################################################################ CC.Standard ?=c99 ################################################################################ # Build directory relative to the the ``c`` directory (i.e. the directory # containing ``Makefile.config``). All files generated by the build live under # this directory ################################################################################ BUILD_DIR := bin ################################################################################ # Set default behaviour regarding emission of LLVM Bitcode rather than native # object files. # Valid values are # 0 - Emit native object files (emits fake files if SYNTAX_ONLY is enabled) # 1 - Emit LLVM Bitcode (compiler must be clang) ################################################################################ EMIT_LLVM ?= 0 ################################################################################ # Warning flags to be passed to clang and gcc (i.e. flags are supported by both # compilers). # # FIXME: Use of each -Wno-* flag NEEDS TO BE JUSTIFIED ################################################################################ DEFAULT_COMMON_WARNINGS := \ -Wall \ -Werror \ -Wno-unused-label \ -Wno-unused-function \ -Wno-unused-variable \ -Wno-unused-value \ -Wno-unknown-pragmas \ -Wno-attributes \ -Wno-parentheses \ -Wno-pointer-to-int-cast \ -Wno-int-to-pointer-cast \ -Wno-pointer-sign \ -Wno-sequence-point \ -Wno-format-security \ ################################################################################ # Warning flags that will only be passed to gcc # FIXME: Use of each -Wno-* flag NEEDS TO BE JUSTIFIED ################################################################################ DEFAULT_GCC_WARNINGS := \ -Wno-unused-but-set-variable \ ################################################################################ # Warning flags that will only be passed to clang ################################################################################ DEFAULT_CLANG_WARNINGS := \ -Wno-constant-conversion \ -Wno-builtin-requires-header # (cf. #225) \ ################################################################################ # Set default behaviour for suppressing compiler warnings # Valid values: # 0 - Do not suppress # 1 - Suppress ################################################################################ SUPPRESS_WARNINGS ?= 0 ################################################################################ # Set if the filename of the file being compiled is written to stdout # Valid values: # 0 - Do not report # 1 - report # 2 - only progress indicator ################################################################################ REPORT_CC_FILE ?= 2 ################################################################################ # Set default behaviour for doing only syntax checking. # Valid values: # 0 - Build object code # 1 - Do syntax check only # # It is enabled by default because a syntax only check is typically faster. # # Note this option is ignored if EMIT_LLVM is enabled. ################################################################################ SYNTAX_ONLY ?= 1 ################################################################################ # Set default behaviour for handling when a *.i and *.c file exist with the same # name (e.g. ``foo.c`` and ``foo.i``). # Valid values are: # 0 - Prefer the *.c file over the *.i file, so compile the *.c file. # 1 - Prefer the *.i file over the *.c file, so compile the *.i file. ################################################################################ PREFER_I_FILES ?= 1 ################################################################################ # SET_FILES # If set then must be a list of ``*.set`` files to use for the build. Setting # this overrides the normal build behaviour and only sources listed in the set # files will be built. ################################################################################ #SET_FILES := BusyBox.set Floats.set # Show all errors instead of aborting on the first. MAKEFLAGS += --keep-going ################################################################################ # Variables for various command line tools ################################################################################ RM := rm MKDIR := mkdir GREP := grep TOUCH := touch include $(LEVEL)/Makefile.rules