2014-10-14 02:48:07 +02:00
|
|
|
########################################################################
|
|
|
|
#
|
2014-10-16 01:29:26 +02:00
|
|
|
# Support for Teensy 3.x boards
|
2014-10-14 02:48:07 +02:00
|
|
|
#
|
2014-10-16 01:29:26 +02:00
|
|
|
# https://www.pjrc.com/teensy/
|
2014-10-14 02:48:07 +02:00
|
|
|
#
|
2014-10-22 22:27:59 +02:00
|
|
|
# You must install teensyduino for this Makefile to work:
|
|
|
|
#
|
|
|
|
# http://www.pjrc.com/teensy/teensyduino.html
|
2014-10-16 01:29:26 +02:00
|
|
|
#
|
|
|
|
# Copyright (C) 2014 Jeremy Shaw <jeremy@n-heptane.com> based on
|
|
|
|
# work that is copyright Sudar, Nicholas Zambetti, David A. Mellis
|
|
|
|
# & Hernando Barragan.
|
|
|
|
#
|
|
|
|
# This file is free software; you can redistribute it and/or modify it
|
|
|
|
# under the terms of the GNU Lesser General Public License as
|
|
|
|
# published by the Free Software Foundation; either version 2.1 of the
|
|
|
|
# License, or (at your option) any later version.
|
|
|
|
#
|
|
|
|
# Adapted from Arduino 0011 Makefile by M J Oldfield
|
|
|
|
#
|
|
|
|
# Original Arduino adaptation by mellis, eighthave, oli.keller
|
|
|
|
#
|
|
|
|
# Refer to HISTORY.md file for complete history of changes
|
|
|
|
#
|
|
|
|
########################################################################
|
2014-10-14 02:48:07 +02:00
|
|
|
|
2014-10-22 22:27:59 +02:00
|
|
|
|
|
|
|
ifndef ARDMK_DIR
|
|
|
|
ARDMK_DIR := $(realpath $(dir $(realpath $(lastword $(MAKEFILE_LIST)))))
|
|
|
|
endif
|
|
|
|
|
|
|
|
# include Common.mk now we know where it is
|
|
|
|
include $(ARDMK_DIR)/Common.mk
|
|
|
|
|
2015-09-15 01:00:30 +02:00
|
|
|
ARDMK_VENDOR = teensy
|
2016-11-04 19:21:02 +01:00
|
|
|
ARDUINO_CORE_PATH = $(ARDUINO_DIR)/hardware/teensy/avr/cores/teensy3
|
|
|
|
BOARDS_TXT = $(ARDUINO_DIR)/hardware/$(ARDMK_VENDOR)/avr/boards.txt
|
2014-10-14 02:48:07 +02:00
|
|
|
|
|
|
|
ifndef F_CPU
|
2014-10-16 01:29:26 +02:00
|
|
|
F_CPU=96000000
|
2014-10-14 02:48:07 +02:00
|
|
|
endif
|
|
|
|
|
|
|
|
ifndef PARSE_TEENSY
|
|
|
|
# result = $(call READ_BOARD_TXT, 'boardname', 'parameter')
|
2016-11-12 22:56:48 +01:00
|
|
|
PARSE_TEENSY = $(shell grep -v "^\#" "$(BOARDS_TXT)" | grep $(1).$(2) | cut -d = -f 2- )
|
2014-10-14 02:48:07 +02:00
|
|
|
endif
|
|
|
|
|
2016-11-05 20:10:15 +01:00
|
|
|
# if boards.txt gets modified, look there, else hard code it
|
2014-10-14 02:48:07 +02:00
|
|
|
ARCHITECTURE = $(call PARSE_TEENSY,$(BOARD_TAG),build.architecture)
|
2016-11-05 20:19:15 +01:00
|
|
|
ifeq ($(strip $(ARCHITECTURE)),)
|
2016-11-05 20:10:15 +01:00
|
|
|
ARCHITECTURE = arm
|
|
|
|
endif
|
|
|
|
|
2014-10-14 02:48:07 +02:00
|
|
|
AVR_TOOLS_DIR = $(call dir_if_exists,$(ARDUINO_DIR)/hardware/tools/$(ARCHITECTURE))
|
|
|
|
|
2016-11-04 19:28:18 +01:00
|
|
|
# define plaform lib dir ignoring teensy's oversight on putting it all in avr
|
|
|
|
ifndef ARDUINO_PLATFORM_LIB_PATH
|
|
|
|
ARDUINO_PLATFORM_LIB_PATH = $(ARDUINO_DIR)/hardware/$(ARDMK_VENDOR)/avr/libraries
|
|
|
|
$(call show_config_variable,ARDUINO_PLATFORM_LIB_PATH,[COMPUTED],(from ARDUINO_DIR))
|
|
|
|
endif
|
|
|
|
|
2014-10-14 02:48:07 +02:00
|
|
|
########################################################################
|
|
|
|
# command names
|
|
|
|
|
|
|
|
ifndef CC_NAME
|
|
|
|
CC_NAME := $(call PARSE_TEENSY,$(BOARD_TAG),build.command.gcc)
|
|
|
|
ifndef CC_NAME
|
2014-10-16 01:29:26 +02:00
|
|
|
CC_NAME := arm-none-eabi-gcc
|
2014-10-14 02:48:07 +02:00
|
|
|
else
|
|
|
|
$(call show_config_variable,CC_NAME,[COMPUTED])
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifndef CXX_NAME
|
|
|
|
CXX_NAME := $(call PARSE_TEENSY,$(BOARD_TAG),build.command.g++)
|
|
|
|
ifndef CXX_NAME
|
2014-10-16 01:29:26 +02:00
|
|
|
CXX_NAME := arm-none-eabi-g++
|
2014-10-14 02:48:07 +02:00
|
|
|
else
|
|
|
|
$(call show_config_variable,CXX_NAME,[COMPUTED])
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2014-10-14 02:57:24 +02:00
|
|
|
ifndef AS_NAME
|
|
|
|
AS_NAME := $(call PARSE_TEENSY,$(BOARD_TAG),build.command.as)
|
|
|
|
ifndef AS_NAME
|
|
|
|
AS_NAME := arm-none-eabi-gcc-as
|
|
|
|
else
|
|
|
|
$(call show_config_variable,AS_NAME,[COMPUTED])
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2014-10-14 02:48:07 +02:00
|
|
|
ifndef OBJCOPY_NAME
|
|
|
|
OBJCOPY_NAME := $(call PARSE_TEENSY,$(BOARD_TAG),build.command.objcopy)
|
|
|
|
ifndef OBJCOPY_NAME
|
2014-10-16 01:29:26 +02:00
|
|
|
OBJCOPY_NAME := arm-none-eabi-objcopy
|
2014-10-14 02:48:07 +02:00
|
|
|
else
|
|
|
|
$(call show_config_variable,OBJCOPY_NAME,[COMPUTED])
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifndef OBJDUMP_NAME
|
|
|
|
OBJDUMP_NAME := $(call PARSE_TEENSY,$(BOARD_TAG),build.command.objdump)
|
|
|
|
ifndef OBJDUMP_NAME
|
2014-10-16 01:29:26 +02:00
|
|
|
OBJDUMP_NAME := arm-none-eabi-objdump
|
2014-10-14 02:48:07 +02:00
|
|
|
else
|
|
|
|
$(call show_config_variable,OBJDUMP_NAME,[COMPUTED])
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifndef AR_NAME
|
|
|
|
AR_NAME := $(call PARSE_TEENSY,$(BOARD_TAG),build.command.ar)
|
|
|
|
ifndef AR_NAME
|
2014-10-16 01:29:26 +02:00
|
|
|
AR_NAME := arm-none-eabi-ar
|
2014-10-14 02:48:07 +02:00
|
|
|
else
|
|
|
|
$(call show_config_variable,AR_NAME,[COMPUTED])
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifndef SIZE_NAME
|
|
|
|
SIZE_NAME := $(call PARSE_TEENSY,$(BOARD_TAG),build.command.size)
|
|
|
|
ifndef SIZE_NAME
|
2014-10-16 01:29:26 +02:00
|
|
|
SIZE_NAME := arm-none-eabi-size
|
2014-10-14 02:48:07 +02:00
|
|
|
else
|
|
|
|
$(call show_config_variable,SIZE_NAME,[COMPUTED])
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifndef NM_NAME
|
|
|
|
NM_NAME := $(call PARSE_TEENSY,$(BOARD_TAG),build.command.nm)
|
|
|
|
ifndef NM_NAME
|
2014-10-14 02:57:24 +02:00
|
|
|
NM_NAME := arm-none-eabi-gcc-nm
|
2014-10-14 02:48:07 +02:00
|
|
|
else
|
|
|
|
$(call show_config_variable,NM_NAME,[COMPUTED])
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
# processor stuff
|
|
|
|
ifndef MCU
|
|
|
|
MCU := $(call PARSE_TEENSY,$(BOARD_TAG),build.cpu)
|
|
|
|
endif
|
|
|
|
|
2014-10-22 22:27:59 +02:00
|
|
|
ifndef MCU_FLAG_NAME
|
|
|
|
MCU_FLAG_NAME=mcpu
|
|
|
|
endif
|
|
|
|
|
2014-10-14 02:48:07 +02:00
|
|
|
########################################################################
|
|
|
|
# FLAGS
|
2015-01-23 11:10:53 +01:00
|
|
|
ifndef USB_TYPE
|
|
|
|
USB_TYPE = USB_SERIAL
|
|
|
|
endif
|
|
|
|
|
|
|
|
CPPFLAGS += -DLAYOUT_US_ENGLISH -D$(USB_TYPE)
|
2014-10-14 02:48:07 +02:00
|
|
|
|
|
|
|
CPPFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.option)
|
|
|
|
|
|
|
|
CXXFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.cppoption)
|
|
|
|
ifeq ("$(call PARSE_TEENSY,$(BOARD_TAG),build.gnu0x)","true")
|
|
|
|
CXXFLAGS_STD += -std=gnu++0x
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ("$(call PARSE_TEENSY,$(BOARD_TAG),build.elide_constructors)", "true")
|
|
|
|
CXXFLAGS += -felide-constructors
|
|
|
|
endif
|
|
|
|
|
2016-11-04 19:21:02 +01:00
|
|
|
CXXFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.common)
|
|
|
|
CXXFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.cpu)
|
|
|
|
CXXFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.defs)
|
|
|
|
CXXFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.cpp)
|
2014-10-14 02:48:07 +02:00
|
|
|
|
2016-11-04 19:21:02 +01:00
|
|
|
CFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.common)
|
|
|
|
CFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.cpu)
|
|
|
|
CFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.defs)
|
|
|
|
|
|
|
|
ASFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.common)
|
|
|
|
ASFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.cpu)
|
|
|
|
ASFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.defs)
|
|
|
|
ASFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.S)
|
|
|
|
|
|
|
|
LDFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.cpu)
|
|
|
|
|
|
|
|
AMCU := $(call PARSE_TEENSY,$(BOARD_TAG),build.mcu)
|
|
|
|
LDFLAGS += -Wl,--gc-sections,--relax
|
|
|
|
LINKER_SCRIPTS = -T${ARDUINO_CORE_PATH}/${AMCU}.ld
|
|
|
|
OTHER_LIBS = $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.libs)
|
2014-10-14 02:48:07 +02:00
|
|
|
|
2016-11-04 19:37:10 +01:00
|
|
|
CPUFLAGS = $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.cpu)
|
|
|
|
# usually defined as per teensy31.build.mcu=mk20dx256 but that isn't valid switch
|
|
|
|
MCU := $(shell echo ${CPUFLAGS} | sed -n -e 's/.*-mcpu=\([a-zA-Z0-9_-]*\).*/\1/p')
|
|
|
|
|
2014-10-16 01:29:26 +02:00
|
|
|
########################################################################
|
|
|
|
# some fairly odd settings so that 'make upload' works
|
|
|
|
#
|
|
|
|
# may require additional patches for Windows support
|
|
|
|
|
|
|
|
do_upload: override get_monitor_port=""
|
|
|
|
AVRDUDE=@true
|
|
|
|
RESET_CMD = nohup $(ARDUINO_DIR)/hardware/tools/teensy_post_compile -board=$(BOARD_TAG) -tools=$(abspath $(ARDUINO_DIR)/hardware/tools) -path=$(abspath $(OBJDIR)) -file=$(TARGET) > /dev/null ; $(ARDUINO_DIR)/hardware/tools/teensy_reboot
|
2014-10-14 02:48:07 +02:00
|
|
|
|
2014-10-16 01:29:26 +02:00
|
|
|
########################################################################
|
|
|
|
# automatially include Arduino.mk for the user
|
2014-10-14 02:48:07 +02:00
|
|
|
|
|
|
|
include $(ARDMK_DIR)/Arduino.mk
|
2016-11-04 19:21:02 +01:00
|
|
|
|