LUFA Library
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. </tbody>

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). </tbody>

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). </tbody>

Provided Variables:

The following variables may be referenced in a user makefile (via syntax) if desired, as they are provided by this module.

N/A

This module provides no variables. </tbody>

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. </tbody>