ardupilot/mk/find_tools.mk

96 lines
2.9 KiB
Makefile

################################################################################
# Tools
#
#
# Decide where we are going to look for tools
#
ifeq ($(SYSTYPE),Darwin)
# use the tools that come with Arduino
TOOLPATH := $(ARDUINO)/hardware/tools/avr/bin
# use BWK awk
AWK = awk
FIND_TOOL = $(firstword $(wildcard $(addsuffix /$(1),$(TOOLPATH))))
endif
ifeq ($(SYSTYPE),Linux)
# expect that tools are on the path
TOOLPATH := $(subst :, ,$(PATH))
FIND_TOOL = $(firstword $(wildcard $(addsuffix /$(1),$(TOOLPATH))))
endif
ifeq ($(findstring CYGWIN, $(SYSTYPE)),CYGWIN)
TOOLPATH := $(ARDUINO)/hardware/tools/avr/bin
FIND_TOOL = $(firstword $(wildcard $(addsuffix /$(1).exe,$(TOOLPATH))))
endif
ifeq ($(findstring MINGW, $(SYSTYPE)),MINGW)
TOOLPATH := $(ARDUINO)/hardware/tools/avr/bin
FIND_TOOL = $(firstword $(wildcard $(addsuffix /$(1).exe,$(TOOLPATH))))
endif
NATIVE_CXX := g++
NATIVE_CC := gcc
NATIVE_AS := gcc
NATIVE_AR := ar
NATIVE_LD := g++
NATIVE_GDB := gdb
NATIVE_OBJCOPY := objcopy
AVR_CXX := $(call FIND_TOOL,avr-g++)
AVR_CC := $(call FIND_TOOL,avr-gcc)
AVR_AS := $(call FIND_TOOL,avr-gcc)
AVR_AR := $(call FIND_TOOL,avr-ar)
AVR_LD := $(call FIND_TOOL,avr-gcc)
AVR_GDB := $(call FIND_TOOL,avr-gdb)
AVR_OBJCOPY := $(call FIND_TOOL,avr-objcopy)
AVRDUDE := $(call FIND_TOOL,avrdude)
AVARICE := $(call FIND_TOOL,avarice)
# Tools for Maple/Flymaple
# Toolchain is expected to be on the PATH
ARM_CXX := $(call FIND_TOOL,arm-none-eabi-g++)
ARM_CC := $(call FIND_TOOL,arm-none-eabi-gcc)
ARM_AS := $(call FIND_TOOL,arm-none-eabi-gcc)
ARM_AR := $(call FIND_TOOL,arm-none-eabi-ar)
ARM_LD := $(call FIND_TOOL,arm-none-eabi-g++)
ARM_GDB := $(call FIND_TOOL,arm-none-eabi-gdb)
ARM_OBJCOPY := $(call FIND_TOOL,arm-none-eabi-objcopy)
# toolchains for beagleboneblack
BBONE_CXX := arm-linux-gnueabihf-g++
BBONE_CC := arm-linux-gnueabihf-gcc
BBONE_AS := arm-linux-gnueabihf-gcc
BBONE_AR := ar
BBONE_LD := arm-linux-gnueabihf-g++
BBONE_GDB := gdb
BBONE_OBJCOPY := objcopy
# toolchains for Raspberry Pi
RPI_CXX := arm-linux-gnueabihf-g++
RPI_CC := arm-linux-gnueabihf-gcc
RPI_AS := arm-linux-gnueabihf-gcc
RPI_AR := arm-linux-gnueabihf-ar
RPI_LD := arm-linux-gnueabihf-g++
RPI_GDB := arm-linux-gnueabihf-gdb
RPI_OBJCOPY := arm-linux-gnueabihf-obj
# enable ccache if installed
CCACHE := $(call FIND_TOOL,ccache)
CXX = $(CCACHE) $($(TOOLCHAIN)_CXX)
CC = $(CCACHE) $($(TOOLCHAIN)_CC)
AS = $($(TOOLCHAIN)_AS)
AR = $($(TOOLCHAIN)_AR)
LD = $($(TOOLCHAIN)_LD)
GDB = $($(TOOLCHAIN)_GDB)
OBJCOPY = $($(TOOLCHAIN)_OBJCOPY)
ifeq ($(CXX),)
$(error ERROR: cannot find the compiler tools for $(TOOLCHAIN) anywhere on the path $(TOOLPATH))
endif
# Find awk
AWK ?= gawk
ifeq ($(shell which $(AWK)),)
$(error ERROR: cannot find $(AWK) - you may need to install GNU awk)
endif