diff options
Diffstat (limited to 'nuttx/tools/Config.mk')
-rw-r--r-- | nuttx/tools/Config.mk | 157 |
1 files changed, 153 insertions, 4 deletions
diff --git a/nuttx/tools/Config.mk b/nuttx/tools/Config.mk index 3a82a1937..9ac93e7d0 100644 --- a/nuttx/tools/Config.mk +++ b/nuttx/tools/Config.mk @@ -2,7 +2,12 @@ # Config.mk # Global build rules and macros. # +# Copyright (C) 2011 Gregory Nutt. All rights reserved. # Author: Richard Cochran +# Gregory Nutt <gnutt@nuttx.org> +# +# This file (along with $(TOPDIR)/.config) must be included by every +# configuration-specific Make.defs file. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -40,33 +45,177 @@ CONFIG_ARCH := $(patsubst "%",%,$(strip $(CONFIG_ARCH))) CONFIG_ARCH_CHIP := $(patsubst "%",%,$(strip $(CONFIG_ARCH_CHIP))) CONFIG_ARCH_BOARD := $(patsubst "%",%,$(strip $(CONFIG_ARCH_BOARD))) -# Default build rules. +# Some defaults just to prohibit some bad behavior if for some reason they +# are not defined + +OBJEXT ?= .o +LIBEXT ?= .a + +# DELIM - Path segment delimiter character +# +# Depends on this settings defined in board-specific defconfig file installed +# at $(TOPDIR)/.config: +# +# CONFIG_WINDOWS_NATIVE - Defined for a Windows native build + +ifeq ($(CONFIG_WINDOWS_NATIVE),y) + DELIM = $(strip \) +else + DELIM = $(strip /) +endif + +# INCDIR - Convert a list of directory paths to a list of compiler include +# directirves +# Example: CFFLAGS += ${shell $(INCDIR) [options] "compiler" "dir1" "dir2" "dir2" ...} +# +# Note that the compiler string and each directory path string must quoted if +# they contain spaces or any other characters that might get mangled by the +# shell +# +# Depends on this setting passed as a make commaond line definition from the +# toplevel Makefile: +# +# TOPDIR - The path to the the top level NuttX directory in the form +# appropriate for the current build environment +# +# Depends on this settings defined in board-specific defconfig file installed +# at $(TOPDIR)/.config: +# +# CONFIG_WINDOWS_NATIVE - Defined for a Windows native build + +ifeq ($(CONFIG_WINDOWS_NATIVE),y) + INCDIR = "$(TOPDIR)\tools\incdir.bat" +else + INCDIR = "$(TOPDIR)/tools/incdir.sh" +endif + +# PREPROCESS - Default macro to run the C pre-processor +# Example: $(call PREPROCESS, in-file, out-file) +# +# Depends on these settings defined in board-specific Make.defs file +# installed at $(TOPDIR)/Make.defs: +# +# CPP - The command to invoke the C pre-processor +# CPPFLAGS - Options to pass to the C pre-processor define PREPROCESS @echo "CPP: $1->$2" $(Q) $(CPP) $(CPPFLAGS) $1 -o $2 endef +# COMPILE - Default macro to compile one C file +# Example: $(call COMPILE, in-file, out-file) +# +# Depends on these settings defined in board-specific Make.defs file +# installed at $(TOPDIR)/Make.defs: +# +# CC - The command to invoke the C compiler +# CFLAGS - Options to pass to the C compiler + define COMPILE @echo "CC: $1" $(Q) $(CC) -c $(CFLAGS) $1 -o $2 endef +# COMPILEXX - Default macro to compile one C++ file +# Example: $(call COMPILEXX, in-file, out-file) +# +# Depends on these settings defined in board-specific Make.defs file +# installed at $(TOPDIR)/Make.defs: +# +# CXX - The command to invoke the C++ compiler +# CXXFLAGS - Options to pass to the C++ compiler + define COMPILEXX @echo "CXX: $1" $(Q) $(CXX) -c $(CXXFLAGS) $1 -o $2 endef +# ASSEMBLE - Default macro to assemble one assembly language file +# Example: $(call ASSEMBLE, in-file, out-file) +# +# NOTE that the most common toolchain, GCC, uses the compiler to assemble +# files because this has the advantage of running the C Pre-Processor against +# the assembly language files. This is not possible with other toolchains; +# platforms using those other tools should define AS and over-ride this +# definition in order to use the assembler directly. +# +# Depends on these settings defined in board-specific Make.defs file +# installed at $(TOPDIR)/Make.defs: +# +# CC - By default, the C compiler is used to compile assembly language +# files +# AFLAGS - Options to pass to the C+compiler + define ASSEMBLE @echo "AS: $1" $(Q) $(CC) -c $(AFLAGS) $1 -o $2 endef +# ARCHIVE - Add a list of files to an archive +# Example: $(call ARCHIVE, archive-file, "file1 file2 file3 ...") +# +# Note: The fileN strings may not contain spaces or characters that may be +# interpreted strangely by the shell +# +# Depends on these settings defined in board-specific Make.defs file +# installed at $(TOPDIR)/Make.defs: +# +# AR - The command to invoke the archiver (includes any options) +# +# Depends on this settings defined in board-specific defconfig file installed +# at $(TOPDIR)/.config: +# +# CONFIG_WINDOWS_NATIVE - Defined for a Windows native build + +ifeq ($(CONFIG_WINDOWS_NATIVE),y) +define ARCHIVE + @echo AR: $2 + $(Q) $(AR) $1 $(2) +endef +else define ARCHIVE - echo "AR: $2"; \ - $(AR) $1 $2 || { echo "$(AR) $1 $2 FAILED!" ; exit 1 ; } + @echo "AR: $2" + $(Q) $(AR) $1 $(2) || { echo "$(AR) $1 FAILED!" ; exit 1 ; } endef +endif +# DELFILE - Delete one file + +ifeq ($(CONFIG_WINDOWS_NATIVE),y) +define DELFILE + $(Q) if exist $1 (del /f /q $1) +endef +else +define DELFILE + $(Q) rm -f $1 +endef +endif + +# DELDIR - Delect one directory + +ifeq ($(CONFIG_WINDOWS_NATIVE),y) +define DELDIR + $(Q) if exist $1 (rmdir /q /s $1) +endef +else +define DELDIR + $(Q) rm -rf $1 +endef +endif + +# CLEAN - Default clean target + +ifeq ($(CONFIG_WINDOWS_NATIVE),y) +define CLEAN + $(Q) if exist *$(OBJEXT) (del /f /q *$(OBJEXT)) + $(Q) if exist *$(LIBEXT) (del /f /q *$(LIBEXT)) + $(Q) if exist *~ (del /f /q *~) + $(Q) if exist (del /f /q .*.swp) +endef +else define CLEAN - $(Q) rm -f *.o *.a + $(Q) rm -f *$(OBJEXT) *$(LIBEXT) *~ .*.swp endef +endif +
\ No newline at end of file |