diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-11-21 18:34:10 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-11-21 18:34:10 +0000 |
commit | 14a77ec91b12454c9106836b3d4a08c63a098e1d (patch) | |
tree | 06d31d6b84560021098398f9a4420f78b74cd3e2 /nuttx/arch/mips/src | |
parent | bae532d2adc61dc1db83f878366c54cc880b16f6 (diff) | |
download | px4-nuttx-14a77ec91b12454c9106836b3d4a08c63a098e1d.tar.gz px4-nuttx-14a77ec91b12454c9106836b3d4a08c63a098e1d.tar.bz2 px4-nuttx-14a77ec91b12454c9106836b3d4a08c63a098e1d.zip |
Big refactoring of toolchain definitions by Mike Smith
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5379 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/arch/mips/src')
-rw-r--r-- | nuttx/arch/mips/src/mips32/Kconfig | 41 | ||||
-rw-r--r-- | nuttx/arch/mips/src/mips32/Toolchain.defs | 199 |
2 files changed, 240 insertions, 0 deletions
diff --git a/nuttx/arch/mips/src/mips32/Kconfig b/nuttx/arch/mips/src/mips32/Kconfig index 1b4499568..b8b5d9b92 100644 --- a/nuttx/arch/mips/src/mips32/Kconfig +++ b/nuttx/arch/mips/src/mips32/Kconfig @@ -6,4 +6,45 @@ if ARCH_MIPS32 comment "MIPS32 Configuration Options" +choice + prompt "Toolchain Selection" + default MIPS32_TOOLCHAIN_MICROCHIPW_LITE if HOST_WINDOWS + default MIPS32_TOOLCHAIN_GNU_ELF if !HOST_WINDOWS + +config MIPS32_TOOLCHAIN_GNU_ELF + bool "Generic GNU ELF toolchain" + ---help--- + This option should work for any modern GNU toolchain (GCC 4.5 or newer) + configured for mips32-elf. + +config MIPS32_TOOLCHAIN_MICROCHIPL + bool "Microchip C32 toolchain under Linux" + depends on HOST_LINUX + +config MIPS32_TOOLCHAIN_MICROCHIPL_LITE + bool "Microchip C32 toolchain under Linux (Lite edition)" + depends on HOST_LINUX + +config MIPS32_TOOLCHAIN_MICROCHIPW + bool "Microchip C32 toolchain under Windows" + depends on HOST_WINDOWS + +config MIPS32_TOOLCHAIN_MICROCHIPW_LITE + bool "Microchip C32 toolchain under Windows (Lite edition)" + depends on HOST_WINDOWS + +config MIPS32_TOOLCHAIN_MICROCHIPOPENL + bool "microchipOpen toolchain under Linux" + depends on HOST_LINUX + +config MIPS32_TOOLCHAIN_PINGUINOW + bool "Pinguino mips-elf toolchain under Windows" + depends on HOST_WINDOWS + +config MIPS32_TOOLCHAIN_PINGUINOL + bool "Pinguino mips-elf toolchain under OS X or Linux" + depends on HOST_LINUX || HOST_OSX + +endchoice + endif diff --git a/nuttx/arch/mips/src/mips32/Toolchain.defs b/nuttx/arch/mips/src/mips32/Toolchain.defs new file mode 100644 index 000000000..9a39c5eda --- /dev/null +++ b/nuttx/arch/mips/src/mips32/Toolchain.defs @@ -0,0 +1,199 @@ +############################################################################ +# arch/mips/src/mips32/Toolchain.defs +# +# Copyright (C) 2012 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt <gnutt@nuttx.org> +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name NuttX nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +# Setup for the selected toolchain + +# +# Handle old-style chip-specific toolchain names in the absence of +# a new-style toolchain specification, force the selection of a single +# toolchain and allow the selected toolchain to be overridden by a +# command-line selection. +# +ifeq ($(filter y, \ + $(CONFIG_MIPS32_TOOLCHAIN_GNU_ELF) \ + ),y) + CONFIG_MIPS32_TOOLCHAIN ?= GNU_ELF +endif +ifeq ($(filter y, \ + $(CONFIG_PIC32MX_MICROCHIPL) \ + $(CONFIG_MIPS32_TOOLCHAIN_MICROCHIPL) \ + ),y) + CONFIG_MIPS32_TOOLCHAIN ?= MICROCHIPL +endif +ifeq ($(filter y, \ + $(CONFIG_PIC32MX_MICROCHIPL_LITE) \ + $(CONFIG_MIPS32_TOOLCHAIN_MICROCHIPL_LITE) \ + ),y) + CONFIG_MIPS32_TOOLCHAIN ?= MICROCHIPL_LITE +endif +ifeq ($(filter y, \ + $(CONFIG_PIC32MX_MICROCHIPW) \ + $(CONFIG_MIPS32_TOOLCHAIN_MICROCHIPW) \ + ),y) + CONFIG_MIPS32_TOOLCHAIN ?= MICROCHIPW +endif +ifeq ($(filter y, \ + $(CONFIG_PIC32MX_MICROCHIPW_LITE) \ + $(CONFIG_MIPS32_TOOLCHAIN_MICROCHIPW_LITE) \ + ),y) + CONFIG_MIPS32_TOOLCHAIN ?= MICROCHIPW_LITE +endif +ifeq ($(filter y, \ + $(CONFIG_PIC32MX_MICROCHIPOPENL) \ + $(CONFIG_MIPS32_TOOLCHAIN_MICROCHIPOPENL) \ + ),y) + CONFIG_MIPS32_TOOLCHAIN ?= MICROCHIPOPENL +endif +ifeq ($(filter y, \ + $(CONFIG_PIC32MX_PINGUINOW) \ + $(CONFIG_MIPS32_TOOLCHAIN_PINGUINOW) \ + ),y) + CONFIG_MIPS32_TOOLCHAIN ?= PINGUINOW +endif +ifeq ($(filter y, \ + $(CONFIG_PIC32MX_PINGUINOL) \ + $(CONFIG_MIPS32_TOOLCHAIN_PINGUINOL) \ + ),y) + CONFIG_MIPS32_TOOLCHAIN ?= PINGUINOL +endif + +# +# Supported toolchains +# +# Each toolchain definition should set: +# +# CROSSDEV The GNU toolchain triple (command prefix) +# ARCROSSDEV If required, an alternative prefix used when +# invoking ar and nm. +# ARCHCPUFLAGS CPU-specific flags selecting the instruction set +# FPU options, etc. +# MAXOPTIMIZATION The maximum optimization level that results in +# reliable code generation. +# + +# Generic GNU mip32 toolchain on OS X or Linux + +ifeq ($(CONFIG_MIPS32_TOOLCHAIN),GNU_ELF) + CROSSDEV = mips-elf- + MAXOPTIMIZATION = -O2 + ARCHCPUFLAGS = -mlong32 -membedded-data -msoft-float -march=24kc -EL + ARCHPICFLAGS = -fpic -membedded-pic + LDFLAGS += -nostartfiles -nodefaultlibs + LDSCRIPT = mips-elf-debug.ld +endif + +# Microchip C32 toolchain under Linux + +ifeq ($(CONFIG_MIPS32_TOOLCHAIN),MICROCHIPL) + CROSSDEV = pic32- + # CROSSDEV = xc32- + MAXOPTIMIZATION = -O2 + ARCHCPUFLAGS = -mprocessor=elf32pic32mx -mno-float -mlong32 -membedded-data + ARCHPICFLAGS = -fpic -membedded-pic + LDFLAGS += -nostartfiles -nodefaultlibs + LDSCRIPT = xc32-debug.ld +endif + +# Microchip C32 toolchain under Windows + +ifeq ($(CONFIG_MIPS32_TOOLCHAIN),MICROCHIPW) + CROSSDEV = pic32- + # CROSSDEV = xc32- + WINTOOL = y + MAXOPTIMIZATION = -O2 + ARCHCPUFLAGS = -mprocessor=elf32pic32mx -mno-float -mlong32 -membedded-data + ARCHPICFLAGS = -fpic -membedded-pic + LDFLAGS += -nostartfiles -nodefaultlibs + LDSCRIPT = c32-debug.ld +endif + +# Microchip C32 toolchain under Linux + +ifeq ($(CONFIG_MIPS32_TOOLCHAIN),MICROCHIPL_LITE) + CROSSDEV = pic32- + # CROSSDEV = xc32- + # MAXOPTIMIZATION = -O2 + ARCHCPUFLAGS = -mprocessor=elf32pic32mx -mno-float -mlong32 -membedded-data + ARCHPICFLAGS = -fpic -membedded-pic + LDFLAGS += -nostartfiles -nodefaultlibs + LDSCRIPT = xc32-debug.ld +endif + +# Microchip C32 toolchain under Windows + +ifeq ($(CONFIG_MIPS32_TOOLCHAIN),MICROCHIPW_LITE) + CROSSDEV = pic32- + # CROSSDEV = xc32- + WINTOOL = y + # MAXOPTIMIZATION = -O2 + ARCHCPUFLAGS = -mprocessor=elf32pic32mx -mno-float -mlong32 -membedded-data + ARCHPICFLAGS = -fpic -membedded-pic + LDFLAGS += -nostartfiles -nodefaultlibs + LDSCRIPT = c32-debug.ld +endif + +# microchipOpen toolchain under Linux + +ifeq ($(CONFIG_MIPS32_TOOLCHAIN),MICROCHIPOPENL) + CROSSDEV = mypic32- + # MAXOPTIMIZATION = -O2 + ARCHCPUFLAGS = -mprocessor=elf32pic32mx -mno-float -mlong32 -membedded-data + ARCHPICFLAGS = -fpic -membedded-pic + LDFLAGS += -nostartfiles -nodefaultlibs + LDSCRIPT = c32-debug.ld +endif + +# Pinguino mips-elf toolchain under Windows + +ifeq ($(CONFIG_MIPS32_TOOLCHAIN),PINGUINOW) + CROSSDEV = mips- + WINTOOL = y + MAXOPTIMIZATION = -O2 + ARCHCPUFLAGS = -mlong32 -membedded-data -msoft-float -march=24kc -EL + ARCHPICFLAGS = -fpic -membedded-pic + LDFLAGS += -nostartfiles -nodefaultlibs + LDSCRIPT = mips-elf-debug.ld +endif + +# Pinguino mips-elf toolchain under OS X or Linux + +ifeq ($(CONFIG_MIPS32_TOOLCHAIN),PINGUINOL) + CROSSDEV = mips-elf- + MAXOPTIMIZATION = -O2 + ARCHCPUFLAGS = -mlong32 -membedded-data -msoft-float -march=24kc -EL + ARCHPICFLAGS = -fpic -membedded-pic + LDFLAGS += -nostartfiles -nodefaultlibs + LDSCRIPT = mips-elf-debug.ld +endif |