DMBS - Dean's Makefile Build System
Module: GCC
The GCC module provides build targets to compile a user application, using a
variant of GCC for a specific target architecture (such as avr-gcc
).
Importing This Module into a Makefile:
To use this module in your application makefile, add the following code to your makefile:
include $(DMBS_PATH)/gcc.mk
Prerequisites:
This module requires the GCC compiler to be installed and available in the
system's PATH
variable for the desired target architecture.
Build Targets:
The following targets are supported by this module:
size
Show the compiled binary size for the various memory segments.
symbol-sizes
Show the size of each symbol in the compiled binary (useful to find large functions to optimize further).
all
Build application and generate all binary (BIN, ELF, HEX) and auxiliary (LSS, MAP, SYM, etc.) output files.
lib
Generate a static .a
library from the application code, containing the flash region's data.
elf
Generate an ELF debug file from the application code, containing all region's data.
bin
Generate a flat BIN binary file from the application code, containing the flash region's data.
hex
Generate a pair of Intel HEX files from the application code, containing the flash region's data (HEX) and EEPROM data (EEP).
lss
Generate a LSS listing file showing the disassembly of the compiled application.
clean
Remove all generated project intermediary and binary output files.
mostlyclean
Remove all generated project intermediary output files, but preserve the binary output files.
Mandatory Variables:
The following variables must be defined (with a NAME = VALUE
syntax, one
variable per line) in the user makefile to be able to use this module:
MCU
Name of the Atmel processor model (e.g. at90usb1287
).
TARGET
Name of the application output file prefix (e.g. TestApplication
).
ARCH
Target device architecture (e.g. AVR8
).
SRC
List of all project source files (C, C++, ASM).
Optional Variables:
The following variables may be defined (with a NAME = VALUE
syntax, one
variable per line) in the user makefile. If not specified, a default value will
be assumed.
OPTIMIZATION
Optimization level to use when compiling C and C++ source files. Default is s
(optimize for smallest size).
C_STANDARD
C language standard used when compiling C language source files. Default is gnu99
(C99 standard with GNU extensions)./td>
CPP_STANDARD
C++ language standard used when compiling C++ language source files. Default is gnu++98
(C++98 standard with GNU extensions)./td>
F_CPU
Processor core clock frequency, in Hz. This is used by some architectures for functions such as software spin-loop delays. Default is blank (no value defined).
C_FLAGS
Common GCC flags passed to the compiler for C language (C) input files. Default is blank (no additional flags).
CPP_FLAGS
Common GCC flags passed to the compiler for C++ language (CPP) input files. Default is blank (no additional flags).
ASM_FLAGS
Common GCC flags passed to the assembler for assembly language (S) input files. Default is blank (no additional flags).
CC_FLAGS
Common GCC flags passed to the compiler for all source file types. Default is blank (no additional flags).
LD_FLAGS
Extra flags to pass to the GNU linker when linking the compiled object files into the resulting binary. Default is blank (no additional flags).
LINKER_RELAXATIONS
Boolean, if Y
linker relaxations will be enabled to slightly reduce the resulting binary's size. Default is Y
.
OBJDIR
Directory to store the intermediate object files, as they are generated from the source files. Default is obj
.
OBJECT_FILES
List of additional .o
object files to link into the final binary. Default is blank (no additional objects).
DEBUG_FORMAT
Debug ELF file format to generate. Default is dwarf-2
.
DEBUG_LEVEL
Level of the debugging information to generate in the compiled object files. Debug is 2 (medium level debugging information).
COMPILER_PATH
Path to the compiler to use, in case a specific compiler should be substituted for the one in the system's PATH
variable. Default is blank (use PATH
provided compiler).
Provided Variables:
The following variables may be referenced in a user makefile (via $(NAME)
syntax) if desired, as they are provided by this module.
N/A This module provides no variables.
Provided Macros:
The following macros may be referenced in a user makefile (via
$(call NAME, ARG1, ARG2, ...)
syntax) if desired, as they are provided by
this module.
N/A This module provides no macros.
Module Changelog:
The changes to this module since its initial release are listed below, as of the DMBS version where the change was made.
20160403
Initial release.