parent
0d32e3c680
commit
5bf667cc62
@ -0,0 +1,696 @@
|
||||
#
|
||||
# Version 1.0.0
|
||||
#
|
||||
# This work is based on the following original.
|
||||
# it includes many fixes and enhancements.
|
||||
# Origin URL https://github.com/xxxajk/Arduino_Makefile_master
|
||||
#
|
||||
# Installation note.
|
||||
# Place this file in Arduino/Arduino_Makefile_master/
|
||||
# Even better:
|
||||
# just 'git pull' from your Arduino directory (where your sketches are)
|
||||
#
|
||||
# Copyright 2011 Alan Burlison, alan@bleaklow.com. All rights reserved.
|
||||
# Use is subject to license terms.
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY ALAN BURLISON "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 ALAN BURLISON 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.
|
||||
#
|
||||
# Makefile for building Arduino projects outside of the Arduino environment
|
||||
#
|
||||
# This makefile should be included into a per-project Makefile of the following
|
||||
# form:
|
||||
#
|
||||
# ----------
|
||||
# BOARD = mega
|
||||
# PORT = /dev/term/0
|
||||
# THIRD_PARTY_HARDWARE = ../hardware/Sanguino
|
||||
# INC_DIRS = ../common
|
||||
# LIB_DIRS = ../libraries/Task ../../libraries/VirtualWire
|
||||
# include ../Arduino_Makefile_master/Makefile.master
|
||||
# ----------
|
||||
#
|
||||
# Where:
|
||||
# BOARD : Arduino board type, from boards.txt
|
||||
# BOARD_SUB : If the board is part a sub menu introduced in Arduino 1.5.x, then you must set this as well
|
||||
# PORT : USB port
|
||||
# THIRD_PARTY_HARDWARE : Path to third party hardware folder
|
||||
# INC_DIRS : List pf directories containing header files
|
||||
# LIB_DIRS : List of directories containing library source
|
||||
#
|
||||
# Before using this Makefile you can adjust the following macros to suit
|
||||
# your environment, either by editing this file directly or by defining them in
|
||||
# the Makefile that includes this one, in which case they will override the
|
||||
# definitions below:
|
||||
# ARD_REV : arduino software revision, e.g. 0017, 0018
|
||||
# ARD_HOME : installation directory of the Arduino software.
|
||||
# AVR_BIN : location of compiler binaries
|
||||
# AVRDUDE : location of avrdude executable
|
||||
# AVRDUDE_CONF : location of avrdude configuration file
|
||||
# PROGRAMMER : avrdude programmer type
|
||||
# MON_SPEED : serial monitor speed
|
||||
# EXTRA_FLAGS : any extra flags that should be passed to the compilers
|
||||
# FIND : The GNU or system find utility
|
||||
# UNIQ : The GNU or system uniq utility
|
||||
# DIRNAME : The GNU or system dirname utlity
|
||||
# SED : The GNU or system sed utility
|
||||
# GREP : The GNU or system grep utility
|
||||
# WHICH : The GNU or system which utility
|
||||
#
|
||||
|
||||
# Global configuration.
|
||||
|
||||
MON_SPEED ?= 115200
|
||||
GCS ?= -Wl,--relax,--gc-sections
|
||||
# Optimiser flags.
|
||||
OPT_FLAGS ?= -Os -freorder-blocks -fno-inline-small-functions -fno-exceptions -ffunction-sections -fdata-sections -MMD
|
||||
|
||||
### Nothing below here should require editing. ###
|
||||
MKDIR = mkdir -p
|
||||
RM = rm -fr
|
||||
MV = mv -f
|
||||
FIND ?= find
|
||||
UNIQ ?= uniq
|
||||
DIRNAME ?= dirname
|
||||
SED ?= sed
|
||||
GREP ?= grep
|
||||
WHICH ?= which
|
||||
|
||||
# Check for the required definitions.
|
||||
ifndef BOARD
|
||||
$(error BOARD not defined)
|
||||
endif
|
||||
ifndef PORT
|
||||
$(error PORT not defined)
|
||||
endif
|
||||
|
||||
# Set default values if ARD_HOME is not defined.
|
||||
PLATFORM = $(shell uname -s)
|
||||
ifndef ARD_HOME
|
||||
ifeq "$(PLATFORM)" "SunOS"
|
||||
ARD_HOME = /opt/Arduino
|
||||
else ifeq "$(PLATFORM)" "Linux"
|
||||
ARD_HOME = $(shell $(DIRNAME) `$(WHICH) arduino 2> /dev/null || echo /opt/Arduino/arduino`)
|
||||
else ifeq "$(PLATFORM)" "Darwin"
|
||||
ARD_HOME = /Applications/Arduino.app
|
||||
else
|
||||
$(error Please define ARD_HOME)
|
||||
endif
|
||||
endif
|
||||
|
||||
# Make if easier for Mac users, so they only have to define the path to the application.
|
||||
ifneq ($(wildcard $(ARD_HOME)/Contents/Resources/Java/hardware/tools/avr/bin/avrdude),)
|
||||
ARD_HOME := $(ARD_HOME)/Contents/Resources/Java
|
||||
endif
|
||||
|
||||
|
||||
# ARD_HOME set, does it exist?
|
||||
ifeq ($(wildcard $(ARD_HOME)),)
|
||||
$(error $(ARD_HOME) does not exist)
|
||||
endif
|
||||
|
||||
# Read revision from revisions.txt.
|
||||
ifndef ARD_REV
|
||||
VERSION = $(shell $(SED) -n 's/ARDUINO \(.*\)/\1/p' < $(ARD_HOME)/revisions.txt | cut -d " " -f1 | head -1) # Extract version number - it is in the following format: ARDUINO x.x.x
|
||||
ARD_REV = $(subst .,,$(VERSION)) # Remove punctuation marks
|
||||
endif
|
||||
|
||||
ifndef ARD_REV
|
||||
$(error Please define ARD_REV)
|
||||
endif
|
||||
|
||||
# Automatically locate AVR and ARM tools.
|
||||
ifneq ($(wildcard $(ARD_HOME)/hardware/tools/avr/bin/avrdude),)
|
||||
AVR_BIN ?= $(ARD_HOME)/hardware/tools/avr/bin
|
||||
ARM_BIN ?= $(ARD_HOME)/hardware/tools/arm-none-eabi/bin
|
||||
AVRDUDE ?= $(AVR_BIN)/avrdude
|
||||
AVRDUDE_CONF ?= $(ARD_HOME)/hardware/tools/avr/etc/avrdude.conf
|
||||
TEENSY_LOADER_CLI ?= $(AVR_BIN)/teensy_loader_cli
|
||||
else ifneq ($(wildcard $(ARD_HOME)/hardware/tools/avrdude),)
|
||||
AVR_BIN ?= $(ARD_HOME)/hardware/tools/avr/bin
|
||||
ARM_BIN ?= $(ARD_HOME)/hardware/tools/arm-none-eabi/bin
|
||||
AVRDUDE ?= $(ARD_HOME)/hardware/tools/avrdude
|
||||
AVRDUDE_CONF ?= $(ARD_HOME)/hardware/tools/avrdude.conf
|
||||
TEENSY_LOADER_CLI ?= $(ARD_HOME)/hardware/tools/teensy_loader_cli
|
||||
else ifneq ($(wildcard $(ARD_HOME)/build/linux/work/hardware/tools/avrdude),)
|
||||
AVR_BIN ?= $(ARD_HOME)/build/linux/work/hardware/tools/avr/bin
|
||||
ARM_BIN ?= $(ARD_HOME)/build/linux/work/hardware/tools/arm-none-eabi/bin
|
||||
AVRDUDE ?= $(ARD_HOME)/build/linux/work/hardware/tools/avrdude
|
||||
AVRDUDE_CONF ?= $(ARD_HOME)/build/linux/work/hardware/tools/avrdude.conf
|
||||
TEENSY_LOADER_CLI ?= $(ARD_HOME)/build/linux/work/hardware/tools/teensy_loader_cli
|
||||
endif
|
||||
|
||||
# Version-specific settings.
|
||||
ifdef THIRD_PARTY_HARDWARE # Check if a third party hardware add-on is used.
|
||||
ARD_BOARDS = $(THIRD_PARTY_HARDWARE)/boards.txt
|
||||
|
||||
ifdef BOARD_SUB
|
||||
CORE := $(shell $(SED) -n 's/$(BOARD_SUB)\.build\.core=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef CORE
|
||||
CORE = $(shell $(SED) -n 's/$(BOARD)\.build\.core=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
|
||||
ifeq "$(CORE)" "arduino:arduino" # Check if it is using the standard Arduino core - supported since 1.5.x
|
||||
ARD_SRC_DIR = $(ARD_HOME)/hardware/arduino/avr/cores/arduino
|
||||
else
|
||||
ARD_SRC_DIR = $(THIRD_PARTY_HARDWARE)/cores/$(CORE)
|
||||
endif
|
||||
|
||||
ifdef BOARD_SUB
|
||||
VARIANT := $(shell $(SED) -n 's/$(BOARD_SUB)\.build\.variant=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef VARIANT
|
||||
VARIANT = $(shell $(SED) -n 's/$(BOARD)\.build\.variant=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef VARIANT
|
||||
$(error Unknown board '$(BOARD)')
|
||||
endif
|
||||
INTERNAL_LIB_DIRS += $(THIRD_PARTY_HARDWARE)/variants/$(VARIANT)
|
||||
else
|
||||
|
||||
ifneq ($(wildcard $(ARD_HOME)/hardware/arduino/avr/boards.txt),)
|
||||
ARD_BOARDS = $(ARD_HOME)/hardware/arduino/avr/boards.txt
|
||||
TEENSY_BOARDS = $(ARD_HOME)/hardware/teensy/boards.txt
|
||||
TEENSY_BASE = $(ARD_HOME)/hardware/teensy/cores/
|
||||
ARD_SRC_DIR = $(ARD_HOME)/hardware/arduino/avr/cores/arduino
|
||||
|
||||
ifdef BOARD_SUB
|
||||
VARIANT := $(shell $(SED) -n 's/$(BOARD_SUB)\.build\.variant=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef VARIANT
|
||||
VARIANT = $(shell $(SED) -n 's/$(BOARD)\.build\.variant=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef VARIANT
|
||||
$(error Unknown board '$(BOARD)')
|
||||
endif
|
||||
INTERNAL_LIB_DIRS += $(ARD_HOME)/hardware/arduino/avr/variants/$(VARIANT)
|
||||
else ifneq ($(wildcard $(ARD_HOME)/hardware/arduino/boards.txt),)
|
||||
ARD_BOARDS = $(ARD_HOME)/hardware/arduino/boards.txt
|
||||
TEENSY_BOARDS = $(ARD_HOME)/hardware/teensy/boards.txt
|
||||
TEENSY_BASE = $(ARD_HOME)/hardware/teensy/cores/
|
||||
ARD_SRC_DIR = $(ARD_HOME)/hardware/arduino/cores/arduino
|
||||
VARIANT = $(shell $(SED) -n 's/$(BOARD)\.build\.variant=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
ifndef VARIANT
|
||||
$(error Unknown board '$(BOARD)')
|
||||
endif
|
||||
INTERNAL_LIB_DIRS += $(ARD_HOME)/hardware/arduino/variants/$(VARIANT)
|
||||
else ifneq ($(wildcard $(ARD_HOME)/hardware/boards.txt),)
|
||||
ARD_BOARDS = $(ARD_HOME)/hardware/boards.txt
|
||||
ARD_SRC_DIR = $(ARD_HOME)/hardware/cores/arduino
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
ifndef ARD_BOARDS
|
||||
$(error Can not locate boards.txt)
|
||||
endif
|
||||
|
||||
# Platform-specific settings.
|
||||
ifeq "$(PLATFORM)" "SunOS"
|
||||
define run-monitor
|
||||
gnome-terminal -t '$(BOARD) $(PORT)' \
|
||||
-e 'env -i tip -$(MON_SPEED) $(PORT)' &
|
||||
endef
|
||||
define kill-monitor
|
||||
- pkill -f 'tip.*$(PORT)'
|
||||
endef
|
||||
else ifeq "$(PLATFORM)" "Linux"
|
||||
define run-monitor
|
||||
screen $(PORT) $(MON_SPEED)
|
||||
endef
|
||||
define kill-monitor
|
||||
- pkill -f 'screen.*$(PORT)'
|
||||
endef
|
||||
else ifeq "$(PLATFORM)" "Darwin"
|
||||
define run-monitor
|
||||
screen $(PORT) $(MON_SPEED)
|
||||
endef
|
||||
define kill-monitor
|
||||
- pkill -f 'screen.*$(PORT)'
|
||||
endef
|
||||
else
|
||||
$(error Unknown platform $(PLATFORM))
|
||||
endif
|
||||
|
||||
# Standard macros.
|
||||
SKETCH = $(notdir $(CURDIR))
|
||||
BUILD_DIR = build
|
||||
VPATH = $(LIB_DIRS)
|
||||
|
||||
# Macros derived from boards.txt.
|
||||
ifdef BOARD_SUB
|
||||
MCU := $(shell $(SED) -n 's/$(BOARD_SUB)\.build\.mcu=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
F_CPU := $(shell $(SED) -n 's/$(BOARD_SUB)\.build\.f_cpu=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
UPLOAD_SPEED := $(shell $(SED) -n 's/$(BOARD_SUB)\.upload\.speed=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
BUILD_BOARD := $(shell $(SED) -n 's/$(BOARD_SUB)\.build\.board=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
BOARD_EXTRA_FLAGS := $(shell $(SED) -n 's/$(BOARD_SUB)\.build\.extra_flags=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
|
||||
# Check if the board is part of a sub menu.
|
||||
ifndef MCU
|
||||
MCU := $(shell $(SED) -n 's/$(BOARD)\.build\.mcu=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef F_CPU
|
||||
F_CPU := $(shell $(SED) -n 's/$(BOARD)\.build\.f_cpu=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef UPLOAD_SPEED
|
||||
UPLOAD_SPEED := $(shell $(SED) -n 's/$(BOARD)\.upload\.speed=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef BUILD_BOARD
|
||||
BUILD_BOARD := $(shell $(SED) -n 's/$(BOARD)\.build\.board=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef BOARD_EXTRA_FLAGS
|
||||
BOARD_EXTRA_FLAGS := $(shell $(SED) -n 's/$(BOARD)\.build\.extra_flags=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
|
||||
|
||||
# No board yet. Check for teensy boards.
|
||||
ifndef MCU
|
||||
ifneq ($(wildcard $(TEENSY_BOARDS)),)
|
||||
USB_BUILD_DEFINE ?= USB_SERIAL # Can be set to the following: USB_SERIAL, USB_HID, USB_SERIAL_HID, USB_DISK, USB_DISK_SDFLASH, USB_MIDI, USB_RAWHID or USB_FLIGHTSIM
|
||||
USE_LAYOUT ?= LAYOUT_US_ENGLISH
|
||||
ARD_BOARDS = $(TEENSY_BOARDS)
|
||||
BUILD_CORE = $(shell $(SED) -n 's/$(BOARD)\.build\.core=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
ARD_SRC_DIR = $(TEENSY_BASE)$(BUILD_CORE)
|
||||
ifdef BOARD_SUB
|
||||
CPU := $(shell $(SED) -n 's/$(BOARD_SUB)\.build\.cpu=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
MCU := $(shell $(SED) -n 's/$(BOARD_SUB)\.build\.mcu=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
F_CPU := $(shell $(SED) -n 's/$(BOARD_SUB)\.build\.f_cpu=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
ifndef F_CPU
|
||||
F_CPU := $(shell $(SED) -n 's/$(BOARD_SUB)\.menu\.speed\..*\.build\.f_cpu=\(.*\)/\1/p' < $(ARD_BOARDS) | head --lines=1)
|
||||
endif
|
||||
UPLOAD_SPEED := $(shell $(SED) -n 's/$(BOARD_SUB)\.upload\.speed=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
BUILD_BOARD := $(shell $(SED) -n 's/$(BOARD_SUB)\.build\.board=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
# Check if the board is part of a sub menu.
|
||||
ifndef CPU
|
||||
CPU := $(shell $(SED) -n 's/$(BOARD)\.build\.cpu=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef MCU
|
||||
MCU := $(shell $(SED) -n 's/$(BOARD)\.build\.mcu=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef F_CPU
|
||||
F_CPU := $(shell $(SED) -n 's/$(BOARD)\.build\.f_cpu=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef F_CPU
|
||||
F_CPU := $(shell $(SED) -n 's/$(BOARD)\.menu\.speed\..*\.build\.f_cpu=\(.*\)/\1/p' < $(ARD_BOARDS) | head --lines=1)
|
||||
endif
|
||||
ifndef UPLOAD_SPEED
|
||||
UPLOAD_SPEED := $(shell $(SED) -n 's/$(BOARD)\.upload\.speed=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef BUILD_BOARD
|
||||
BUILD_BOARD := $(shell $(SED) -n 's/$(BOARD)\.build\.board=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
# We still have not found this board.
|
||||
ifndef MCU
|
||||
$(error Unknown board '$(BOARD)')
|
||||
endif
|
||||
|
||||
CPU_MCU = $(MCU)
|
||||
|
||||
|
||||
|
||||
#
|
||||
# NOTE: for 1.0.5
|
||||
#
|
||||
# Pull in any regular extra C flags
|
||||
#
|
||||
#
|
||||
|
||||
EXT_C_FLAGS := $(shell $(SED) -n 's/$(BOARD)\.build\.option[^=]*=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
ifdef EXT_C_FLAGS
|
||||
EXT_C_FLAGS += $(shell $(SED) -n 's/$(BOARD)\.menu\.usb\.serial\.build\.define[^=]*=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
EXT_CPP_FLAGS += $(shell $(SED) -n 's/$(BOARD)\.build\.cppoption[^=]*=\(.*\)/\1/p' < $(ARD_BOARDS)) $(EXT_C_FLAGS)
|
||||
EXT_LINK_T_FLAG := $(shell $(SED) -n 's/$(BOARD)\.build\.linkscript=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
ifdef EXT_LINK_T_FLAG
|
||||
EXT_LINK_FLAGS += -T$(ARD_SRC_DIR)/$(EXT_LINK_T_FLAG)
|
||||
endif
|
||||
EXT_LINK_FLAGS += $(shell $(SED) -n 's/$(BOARD)\.build\.linkoption[^=]*=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
EXT_LINK_FLAGS += $(shell $(SED) -n 's/$(BOARD)\.build\.additionalobject[^=]*=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
|
||||
# Add extracted variable to compiler flags.
|
||||
ifdef BUILD_BOARD
|
||||
EXTRA_FLAGS += -DARDUINO_$(BUILD_BOARD)
|
||||
endif
|
||||
|
||||
ifdef USB_BUILD_DEFINE
|
||||
EXTRA_FLAGS += -D$(USB_BUILD_DEFINE)
|
||||
endif
|
||||
|
||||
ifdef USE_LAYOUT
|
||||
EXTRA_FLAGS += -D$(USE_LAYOUT)=1
|
||||
endif
|
||||
|
||||
ifdef BOARD_EXTRA_FLAGS
|
||||
ifdef BOARD_SUB
|
||||
USB_VID := $(shell $(SED) -n 's/$(BOARD_SUB)\.build\.vid=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
USB_PID := $(shell $(SED) -n 's/$(BOARD_SUB)\.build\.pid=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
USB_MANUFACTURER := $(shell $(SED) -n 's/$(BOARD_SUB)\.build\.usb_manufacturer=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
USB_PRODUCT := $(shell $(SED) -n 's/$(BOARD_SUB)\.build\.usb_product=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef USB_VID
|
||||
USB_VID := $(shell $(SED) -n 's/$(BOARD)\.build\.vid=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef USB_PID
|
||||
USB_PID := $(shell $(SED) -n 's/$(BOARD)\.build\.pid=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef USB_MANUFACTURER
|
||||
USB_MANUFACTURER := $(shell $(SED) -n 's/$(BOARD)\.build\.usb_manufacturer=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef USB_PRODUCT
|
||||
USB_PRODUCT := $(shell $(SED) -n 's/$(BOARD)\.build\.usb_product=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
|
||||
ifdef USB_VID
|
||||
USB_FLAGS = -DUSB_VID=$(USB_VID)
|
||||
endif
|
||||
ifdef USB_PID
|
||||
USB_FLAGS += -DUSB_PID=$(USB_PID)
|
||||
endif
|
||||
ifdef USB_MANUFACTURER
|
||||
USB_FLAGS += '-DUSB_MANUFACTURER=$(USB_MANUFACTURER)'
|
||||
endif
|
||||
ifdef USB_PRODUCT
|
||||
USB_FLAGS += '-DUSB_PRODUCT=$(USB_PRODUCT)'
|
||||
endif
|
||||
|
||||
BOARD_EXTRA_FLAGS := $(subst {build.usb_flags},$(USB_FLAGS),$(BOARD_EXTRA_FLAGS)) # Subst {build.usb_flags} with -DUSB_VID={build.vid} -DUSB_PID={build.pid} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}'
|
||||
EXTRA_FLAGS += $(BOARD_EXTRA_FLAGS)
|
||||
endif
|
||||
|
||||
|
||||
# Read programmer type from boards.txt.
|
||||
ifndef PROGRAMMER
|
||||
ifdef BOARD_SUB
|
||||
PROGRAMMER := $(shell $(SED) -n 's/$(BOARD_SUB)\.upload\.protocol=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef PROGRAMMER
|
||||
PROGRAMMER := $(shell $(SED) -n 's/$(BOARD)\.upload\.protocol=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef PROGRAMMER
|
||||
PROGRAMMER = arduino # Defaults to arduino upload protocol
|
||||
endif
|
||||
endif
|
||||
|
||||
# extract arch
|
||||
|
||||
# Arduino architecture:
|
||||
ifdef BOARD_SUB
|
||||
BUILD_ARCH := $(shell $(SED) -n 's/$(BOARD_SUB)\.build\.arch=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef BUILD_ARCH
|
||||
BUILD_ARCH := $(shell $(SED) -n 's/$(BOARD)\.build\.arch=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
|
||||
# Teensy architecture:
|
||||
ifndef BUILD_ARCH
|
||||
ifdef BOARD_SUB
|
||||
BUILD_ARCH := $(shell $(SED) -n 's/$(BOARD_SUB)\.build\.architecture=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef BUILD_ARCH
|
||||
BUILD_ARCH := $(shell $(SED) -n 's/$(BOARD)\.build\.architecture=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
endif
|
||||
|
||||
# default is avr
|
||||
ifndef BUILD_ARCH
|
||||
BUILD_ARCH = avr
|
||||
endif
|
||||
|
||||
ifdef BUILD_ARCH
|
||||
EXTRA_FLAGS += -DARDUINO_ARCH_$(shell echo $(BUILD_ARCH) | tr a-z A-Z)
|
||||
endif
|
||||
|
||||
ifeq "$(BUILD_ARCH)" "arm-none-eabi"
|
||||
USED_BIN = $(ARM_BIN)
|
||||
endif
|
||||
|
||||
USED_TARGET = $(BUILD_ARCH)
|
||||
|
||||
# If we don't know what target bin dirs, use the default
|
||||
USED_BIN ?= $(AVR_BIN)
|
||||
# ...and if the target is not set, default to avr
|
||||
USED_TARGET ?= avr
|
||||
|
||||
#$(error bin = $(USED_BIN), target = $(USED_TARGET))
|
||||
|
||||
# Build tools.
|
||||
CC = $(USED_BIN)/$(USED_TARGET)-gcc
|
||||
CXX = $(USED_BIN)/$(USED_TARGET)-g++
|
||||
CXXFILT = $(USED_BIN)/$(USED_TARGET)-c++filt
|
||||
OBJCOPY = $(USED_BIN)/$(USED_TARGET)-objcopy
|
||||
OBJDUMP = $(USED_BIN)/$(USED_TARGET)-objdump
|
||||
AR = $(USED_BIN)/$(USED_TARGET)-ar
|
||||
SIZE = $(USED_BIN)/$(USED_TARGET)-size
|
||||
NM = $(USED_BIN)/$(USED_TARGET)-nm
|
||||
|
||||
ifndef LIB_DIRS
|
||||
|
||||
# Automatically add user libraries and Arduino libraries.
|
||||
# Note: This code is dumb! It does not follow conditionals in the code.
|
||||
# This will also include multiple versions of a USER library.
|
||||
# The effect of this is that it may compile unwanted code.
|
||||
# It does seem to work OK dispite this.
|
||||
#
|
||||
# TO-DO: Scan user libraries for interdependence?
|
||||
# TO-DO: Scan Arduino libraries for interdependence?
|
||||
|
||||
# Step 1: Gather the primary directories
|
||||
PRILIB_DIRS = $(shell for i in `$(FIND) . \( -name '*.c' -o -name '*.cpp' -o -name '*.h' -o -name '*.ino' \) -exec $(GREP) '\#include.*<.*>' \{\} \; 2>/dev/null | $(SED) 's/>.*$$//g' | $(SED) 's/.*<//g' ` ; { $(FIND) ../libraries -maxdepth 2 -name $$i -exec $(DIRNAME) \{\} \; ;} 2>/dev/null | $(UNIQ) )
|
||||
PRILIB_DIRS += $(shell for i in `$(FIND) . \( -name '*.c' -o -name '*.cpp' -o -name '*.h' -o -name '*.ino' \) -exec $(GREP) '\#include.*<.*>' \{\} \; 2>/dev/null| $(SED) 's/\.h.*>.*$$//g' | $(SED) 's/.*<//g' ` ; { $(FIND) $(ARD_HOME)/libraries/$$i -maxdepth 2 -name $$i.h -exec $(DIRNAME) \{\} \; ;} 2>/dev/null | $(UNIQ) )
|
||||
PRILIB_DIRS += $(shell for i in `$(FIND) . \( -name '*.c' -o -name '*.cpp' -o -name '*.h' -o -name '*.ino' \) -exec $(GREP) '\#include.*<.*>' \{\} \; 2>/dev/null| $(SED) 's/\.h.*>.*$$//g' | $(SED) 's/.*<//g' ` ; { $(FIND) $(ARD_HOME)/hardware/arduino/$(BUILD_ARCH)/libraries/$$i -maxdepth 2 -name $$i.h -exec $(DIRNAME) \{\} \; ;} 2>/dev/null | $(UNIQ) )
|
||||
|
||||
# Step 2: Gather any 'utility' subdirectories.
|
||||
# This stupidity brought to you by the developers of the Arduino 'IDE', and
|
||||
# by the library developers that don't know how to use include properly.
|
||||
UTLLIB_DIRS=$(shell for i in $(PRILIB_DIRS) ; { $(FIND) $$i -name 'utility' -print ; } )
|
||||
|
||||
# Step 3: Combine everything
|
||||
LIB_DIRS = $(PRILIB_DIRS) $(UTLLIB_DIRS)
|
||||
|
||||
endif
|
||||
|
||||
# These always should come LAST so that user libraries may over-ride
|
||||
# This is how the IDE does it too.
|
||||
LIB_DIRS += $(INTERNAL_LIB_DIRS)
|
||||
|
||||
# Compiler flags.
|
||||
INC_FLAGS = \
|
||||
$(addprefix -I,$(LIB_DIRS)) $(addprefix -I,$(INC_DIRS)) -I$(ARD_SRC_DIR)
|
||||
|
||||
ifdef CPU
|
||||
ARD_MCP += -mcpu=$(CPU)
|
||||
else
|
||||
ARD_MCP += -mmcu=$(MCU)
|
||||
endif
|
||||
|
||||
ARD_FLAGS += -DF_CPU=$(F_CPU) -DARDUINO=$(ARD_REV) $(ARD_MCP)
|
||||
|
||||
C_CXX_FLAGS = -g -w -Wa,-adhlns=$(BUILD_DIR)/$*.lst $(EXTRA_FLAGS) -DUSING_MAKEFILE=1 -Wall -Wextra -Wformat=2 -Wuninitialized -Wshadow -Wconversion
|
||||
|
||||
C_FLAGS = \
|
||||
-std=gnu99 -Wstrict-prototypes -Wno-old-style-declaration $(C_CXX_FLAGS) $(EXT_C_FLAGS)
|
||||
|
||||
CXX_FLAGS = \
|
||||
$(C_CXX_FLAGS) $(EXT_CPP_FLAGS)
|
||||
|
||||
# Build parameters.
|
||||
IMAGE = $(BUILD_DIR)/$(SKETCH)
|
||||
ARD_C_SRC = $(wildcard $(ARD_SRC_DIR)/*.c)
|
||||
ARD_CXX_SRC = $(wildcard $(ARD_SRC_DIR)/*.cpp)
|
||||
ARD_C_OBJ = $(patsubst %.c,%.o,$(notdir $(ARD_C_SRC)))
|
||||
ARD_CXX_OBJ = $(patsubst %.cpp,%.o,$(notdir $(ARD_CXX_SRC)))
|
||||
ARD_LIB = arduino
|
||||
ARD_AR = $(BUILD_DIR)/lib$(ARD_LIB).a
|
||||
ARD_AR_OBJ = $(ARD_AR)($(ARD_C_OBJ) $(ARD_CXX_OBJ))
|
||||
ARD_LD_FLAG = -l$(ARD_LIB)
|
||||
|
||||
# Sketch libraries.
|
||||
LIB_C_SRC = $(foreach ld,$(LIB_DIRS),$(wildcard $(ld)/*.c))
|
||||
LIB_CXX_SRC = $(foreach ld,$(LIB_DIRS),$(wildcard $(ld)/*.cpp))
|
||||
LIB_SRC = $(LIB_C_SRC) $(LIB_CXX_SRC)
|
||||
ifneq "$(strip $(LIB_C_SRC) $(LIB_CXX_SRC))" ""
|
||||
LIB_C_OBJ = $(patsubst %.c,%.o,$(notdir $(LIB_C_SRC)))
|
||||
LIB_CXX_OBJ = $(patsubst %.cpp,%.o,$(notdir $(LIB_CXX_SRC)))
|
||||
LIB_LIB = library
|
||||
LIB_AR = $(BUILD_DIR)/lib$(LIB_LIB).a
|
||||
LIB_AR_OBJ = $(LIB_AR)($(LIB_C_OBJ) $(LIB_CXX_OBJ))
|
||||
LIB_LD_FLAG = -l$(LIB_LIB)
|
||||
endif
|
||||
|
||||
# Sketch INO source.
|
||||
SKT_PDE_SRC = $(wildcard *.ino)
|
||||
ifneq "$(strip $(SKT_PDE_SRC))" ""
|
||||
SKT_PDE_OBJ = $(BUILD_DIR)/$(SKETCH)_ino.o
|
||||
endif
|
||||
|
||||
|
||||
|
||||
# C and C++ source.
|
||||
SKT_C_SRC = $(wildcard *.c)
|
||||
SKT_CXX_SRC = $(wildcard *.cpp)
|
||||
ifneq "$(strip $(SKT_C_SRC) $(SKT_CXX_SRC))" ""
|
||||
SKT_C_OBJ = $(patsubst %.c,%.o,$(SKT_C_SRC))
|
||||
SKT_CXX_OBJ = $(patsubst %.cpp,%.o,$(SKT_CXX_SRC))
|
||||
SKT_LIB = sketch
|
||||
SKT_AR = $(BUILD_DIR)/lib$(SKT_LIB).a
|
||||
SKT_AR_OBJ = $(SKT_AR)/($(SKT_C_OBJ) $(SKT_CXX_OBJ))
|
||||
SKT_LD_FLAG = -l$(SKT_LIB)
|
||||
endif
|
||||
|
||||
# Common rule bodies.
|
||||
define run-cc
|
||||
$(CC) -c $(C_FLAGS) $(OPT_FLAGS) $(ARD_FLAGS) $(INC_FLAGS) \
|
||||
-MD -MT '$@($%)' -MF $(@D)/.$(@F)_$*.dep $< -o $(BUILD_DIR)/$%
|
||||
@ $(AR) rc $@ $(BUILD_DIR)/$%
|
||||
@ $(RM) $(BUILD_DIR)/$%
|
||||
@ $(CXXFILT) < $(BUILD_DIR)/$*.lst > $(BUILD_DIR)/$*.lst.tmp
|
||||
@ $(MV) $(BUILD_DIR)/$*.lst.tmp $(BUILD_DIR)/$*.lst
|
||||
endef
|
||||
|
||||
define run-cxx
|
||||
$(CXX) -c $(CXX_FLAGS) $(OPT_FLAGS) $(ARD_FLAGS) $(INC_FLAGS) \
|
||||
-MD -MT '$@($%)' -MF $(@D)/.$(@F)_$*.dep $< -o $(BUILD_DIR)/$%
|
||||
@ $(AR) rc $@ $(BUILD_DIR)/$%
|
||||
@ $(RM) $(BUILD_DIR)/$%
|
||||
@ $(CXXFILT) < $(BUILD_DIR)/$*.lst > $(BUILD_DIR)/$*.lst.tmp
|
||||
@ $(MV) $(BUILD_DIR)/$*.lst.tmp $(BUILD_DIR)/$*.lst
|
||||
endef
|
||||
|
||||
define run-avrdude
|
||||
$(AVRDUDE) -V -C$(AVRDUDE_CONF) -p$(MCU) -c$(PROGRAMMER) -P$(PORT) -b$(UPLOAD_SPEED) -D -Uflash:w:$(IMAGE).hex:i
|
||||
endef
|
||||
|
||||
define run-teensy_loader_cli
|
||||
$(TEENSY_LOADER_CLI) -mmcu=$(CPU_MCU) -w $(IMAGE).hex
|
||||
endef
|
||||
|
||||
ifdef BOARD_SUB
|
||||
USE_1200BPS_TOUCH := $(shell $(SED) -n 's/$(BOARD_SUB)\.upload\.use_1200bps_touch=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
ifndef USE_1200BPS_TOUCH
|
||||
USE_1200BPS_TOUCH := $(shell $(SED) -n 's/$(BOARD)\.upload\.use_1200bps_touch=\(.*\)/\1/p' < $(ARD_BOARDS))
|
||||
endif
|
||||
|
||||
ifeq "$(PROGRAMMER)" "halfkay"
|
||||
define run-uploader
|
||||
$(TEENSY_LOADER_CLI) -mmcu=$(CPU_MCU) -v -w $(IMAGE).hex
|
||||
endef
|
||||
else ifeq "$(USE_1200BPS_TOUCH)" "true"
|
||||
|
||||
ifeq "$(PLATFORM)" "Darwin"
|
||||
STTY_ARGS := -f $(PORT) 1200
|
||||
else
|
||||
STTY_ARGS := -F $(PORT) 1200
|
||||
endif
|
||||
|
||||
define run-uploader
|
||||
stty $(STTY_ARGS)
|
||||
sleep 2
|
||||
$(AVRDUDE) -V -C$(AVRDUDE_CONF) -p$(MCU) -c$(PROGRAMMER) -P$(PORT) -b$(UPLOAD_SPEED) -D -Uflash:w:$(IMAGE).hex:i
|
||||
endef
|
||||
|
||||
else
|
||||
define run-uploader
|
||||
$(AVRDUDE) -V -C$(AVRDUDE_CONF) -p$(MCU) -c$(PROGRAMMER) -P$(PORT) -b$(UPLOAD_SPEED) -D -Uflash:w:$(IMAGE).hex:i
|
||||
endef
|
||||
endif
|
||||
|
||||
# Rules.
|
||||
.PHONY : all clean upload monitor upload_monitor upmonitor
|
||||
|
||||
all : $(BUILD_DIR) $(IMAGE).hex
|
||||
|
||||
clean :
|
||||
$(RM) $(BUILD_DIR)
|
||||
$(RM) *~ *.bak *.BAK *.Bak *.orig
|
||||
$(RM) */*~ */*.bak */*.BAK */*.Bak */*.orig
|
||||
$(RM) */*/*~ */*/*.bak */*/*.BAK */*/*.Bak */*/*.orig
|
||||
sync
|
||||
|
||||
$(BUILD_DIR) :
|
||||
$(MKDIR) $@
|
||||
|
||||
$(SKT_PDE_OBJ) : $(SKT_PDE_SRC)
|
||||
cat $(SKT_PDE_SRC) > $(BUILD_DIR)/$(SKETCH)_ino.cpp
|
||||
cd $(BUILD_DIR) && $(CXX) -c $(subst build/,,$(CXX_FLAGS)) \
|
||||
$(OPT_FLAGS) $(ARD_FLAGS) -I.. \
|
||||
$(patsubst -I..%,-I../..%,$(INC_FLAGS)) \
|
||||
$(SKETCH)_ino.cpp -o $(@F)
|
||||
|
||||
(%.o) : $(ARD_SRC_DIR)/%.c
|
||||
$(run-cc)
|
||||
|
||||
(%.o) : $(ARD_SRC_DIR)/%.cpp
|
||||
$(run-cxx)
|
||||
|
||||
(%.o) : %.c
|
||||
$(run-cc)
|
||||
|
||||
(%.o) : %.cpp
|
||||
$(run-cxx)
|
||||
|
||||
$(BUILD_DIR)/%.d : %.c
|
||||
$(run-cc-d)
|
||||
|
||||
$(BUILD_DIR)/%.d : %.cpp
|
||||
$(run-cxx-d)
|
||||
|
||||
#-Wl,--gc-sections
|
||||
# $(AR) d $(BUILD_DIR)/lib$(LIB_LIB).a malloc.o
|
||||
|
||||
$(IMAGE).hex : $(ARD_AR_OBJ) $(LIB_AR_OBJ) $(SKT_AR_OBJ) $(SKT_PDE_OBJ)
|
||||
$(CC) -Os $(GCS) $(ARD_MCP) -L$(BUILD_DIR) $(SKT_PDE_OBJ) \
|
||||
$(SKT_LD_FLAG) $(LIB_LD_FLAG) $(ARD_LD_FLAG) $(EXT_LINK_FLAGS)\
|
||||
-lm -o $(IMAGE).elf
|
||||
$(OBJCOPY) -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load \
|
||||
--no-change-warnings --change-section-lma .eeprom=0 $(IMAGE).elf \
|
||||
$(IMAGE).eep
|
||||
$(OBJCOPY) -O ihex -R .eeprom $(IMAGE).elf $(IMAGE).hex
|
||||
$(OBJDUMP) -h -S $(IMAGE).elf | $(CXXFILT) -t > $(IMAGE).lst
|
||||
$(SIZE) $(IMAGE).elf
|
||||
|
||||
#
|
||||
# This only works on the avr, sorry
|
||||
# $(SIZE) -C --mcu=$(MCU) $(IMAGE).elf
|
||||
#
|
||||
|
||||
upload : all
|
||||
$(kill-monitor)
|
||||
$(run-uploader)
|
||||
|
||||
# $(AVRDUDE) -V -C$(AVRDUDE_CONF) -p$(MCU) -c$(PROGRAMMER) -P$(PORT) \
|
||||
# -b$(UPLOAD_SPEED) -D -Uflash:w:$(IMAGE).hex:i
|
||||
|
||||
monitor :
|
||||
$(kill-monitor)
|
||||
$(run-monitor)
|
||||
|
||||
upload_monitor : upload monitor
|
||||
|
||||
upmonitor: upload_monitor
|
||||
|
||||
-include $(wildcard $(BUILD_DIR)/.*.dep))
|
File diff suppressed because it is too large
Load Diff
@ -1,38 +0,0 @@
|
||||
# Useful functions
|
||||
# Returns the first argument (typically a directory), if the file or directory
|
||||
# named by concatenating the first and optionally second argument
|
||||
# (directory and optional filename) exists
|
||||
dir_if_exists = $(if $(wildcard $(1)$(2)),$(1))
|
||||
|
||||
# For message printing: pad the right side of the first argument with spaces to
|
||||
# the number of bytes indicated by the second argument.
|
||||
space_pad_to = $(shell echo $(1) " " | head -c$(2))
|
||||
|
||||
# Call with some text, and a prefix tag if desired (like [AUTODETECTED]),
|
||||
show_config_info = $(call arduino_output,- $(call space_pad_to,$(2),20) $(1))
|
||||
|
||||
# Call with the name of the variable, a prefix tag if desired (like [AUTODETECTED]),
|
||||
# and an explanation if desired (like (found in $$PATH)
|
||||
show_config_variable = $(call show_config_info,$(1) = $($(1)) $(3),$(2))
|
||||
|
||||
# Just a nice simple visual separator
|
||||
show_separator = $(call arduino_output,-------------------------)
|
||||
|
||||
$(call show_separator)
|
||||
$(call arduino_output,Arduino.mk Configuration:)
|
||||
|
||||
########################################################################
|
||||
#
|
||||
# Detect OS
|
||||
ifeq ($(OS),Windows_NT)
|
||||
CURRENT_OS = WINDOWS
|
||||
else
|
||||
UNAME_S := $(shell uname -s)
|
||||
ifeq ($(UNAME_S),Linux)
|
||||
CURRENT_OS = LINUX
|
||||
endif
|
||||
ifeq ($(UNAME_S),Darwin)
|
||||
CURRENT_OS = MAC
|
||||
endif
|
||||
endif
|
||||
$(call show_config_variable,CURRENT_OS,[AUTODETECTED])
|
@ -1,102 +0,0 @@
|
||||
#
|
||||
# chipKIT extensions for Arduino Makefile
|
||||
# System part (i.e. project independent)
|
||||
#
|
||||
# Copyright (C) 2011, 2012, 2013 Christopher Peplin
|
||||
# <chris.peplin@rhubarbtech.com>, based on work that is Copyright Martin
|
||||
# Oldfield
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# Modified by John Wallbank for Visual Studio
|
||||
#
|
||||
# Development changes, John Wallbank,
|
||||
#
|
||||
# - made inclusion of WProgram.h optional so that
|
||||
# including it in the source doesn't mess up compile error line numbers
|
||||
# - parameterised the routine used to reset the serial port
|
||||
#
|
||||
|
||||
########################################################################
|
||||
# Makefile distribution path
|
||||
#
|
||||
|
||||
# The show_config_variable is unavailable before we include the common makefile,
|
||||
# so we defer logging the ARDMK_DIR info until it happens in Arduino.mk
|
||||
ifndef ARDMK_DIR
|
||||
# presume it's a level above the path to our own file
|
||||
ARDMK_DIR := $(realpath $(dir $(realpath $(lastword $(MAKEFILE_LIST))))/..)
|
||||
endif
|
||||
|
||||
ifndef ARDMK_PATH
|
||||
ARDMK_PATH = $(ARDMK_DIR)/bin
|
||||
endif
|
||||
|
||||
ifneq ($(wildcard $(ARDMK_DIR)/arduino-mk/Common.mk),)
|
||||
# git checkout
|
||||
include $(ARDMK_DIR)/arduino-mk/Common.mk
|
||||
else
|
||||
ifneq ($(wildcard $(ARDMK_DIR)/Common.mk),)
|
||||
# package install
|
||||
include $(ARDMK_DIR)/Common.mk
|
||||
endif
|
||||
endif
|
||||
|
||||
ifndef MPIDE_DIR
|
||||
AUTO_MPIDE_DIR := $(firstword \
|
||||
$(call dir_if_exists,/usr/share/mpide) \
|
||||
$(call dir_if_exists,/Applications/Mpide.app/Contents/Resources/Java) )
|
||||
ifdef AUTO_MPIDE_DIR
|
||||
MPIDE_DIR = $(AUTO_MPIDE_DIR)
|
||||
$(call show_config_variable,MPIDE_DIR,[autodetected])
|
||||
else
|
||||
echo $(error "mpide_dir is not defined")
|
||||
endif
|
||||
else
|
||||
$(call show_config_variable,MPIDE_DIR,[USER])
|
||||
endif
|
||||
|
||||
ifndef MPIDE_PREFERENCES_PATH
|
||||
AUTO_MPIDE_PREFERENCES_PATH := $(firstword \
|
||||
$(call dir_if_exists,$(HOME)/.mpide/preferences.txt) \
|
||||
$(call dir_if_exists,$(HOME)/Library/Mpide/preferences.txt) )
|
||||
ifdef AUTO_MPIDE_PREFERENCES_PATH
|
||||
MPIDE_PREFERENCES_PATH = $(AUTO_MPIDE_PREFERENCES_PATH)
|
||||
$(call show_config_variable,MPIDE_PREFERENCES_PATH,[autodetected])
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
AVR_TOOLS_DIR = $(ARDUINO_DIR)/hardware/pic32/compiler/pic32-tools
|
||||
|
||||
AVRDUDE_DIR = $(ARDUINO_DIR)/hardware/tools
|
||||
AVRDUDE = $(AVRDUDE_DIR)/avrdude
|
||||
AVRDUDE_CONF = $(AVRDUDE_DIR)/avrdude.conf
|
||||
|
||||
ALTERNATE_CORE = pic32
|
||||
ALTERNATE_CORE_PATH = $(MPIDE_DIR)/hardware/pic32
|
||||
ARDUINO_CORE_PATH = $(ALTERNATE_CORE_PATH)/cores/$(ALTERNATE_CORE)
|
||||
ARDUINO_PREFERENCES_PATH = $(MPIDE_PREFERENCES_PATH)
|
||||
ARDUINO_DIR = $(MPIDE_DIR)
|
||||
|
||||
ARDUINO_VERSION = 23
|
||||
|
||||
CC_NAME = pic32-gcc
|
||||
CXX_NAME = pic32-g++
|
||||
AR_NAME = pic32-ar
|
||||
OBJDUMP_NAME = pic32-objdump
|
||||
OBJCOPY_NAME = pic32-objcopy
|
||||
SIZE_NAME = pic32-size
|
||||
|
||||
LDSCRIPT = $(call PARSE_BOARD,$(BOARD_TAG),ldscript)
|
||||
LDSCRIPT_FILE = $(ARDUINO_CORE_PATH)/$(LDSCRIPT)
|
||||
|
||||
MCU_FLAG_NAME=mprocessor
|
||||
LDFLAGS += -T$(ARDUINO_CORE_PATH)/$(LDSCRIPT)
|
||||
CPPFLAGS += -mno-smart-io -fno-short-double
|
||||
CFLAGS_STD =
|
||||
|
||||
include $(ARDMK_DIR)/arduino-mk/Arduino.mk
|
@ -1,11 +0,0 @@
|
||||
#!/usr/bin/python
|
||||
# usage: reset_arduino <DEVICE>
|
||||
# where <DEVICE> is typically some /dev/ttyfoobar
|
||||
import sys
|
||||
import serial
|
||||
import time
|
||||
ser = serial.Serial()
|
||||
ser.port=sys.argv[2]
|
||||
ser.baudrate=1200
|
||||
ser.open(); ser.close()
|
||||
time.sleep(2)
|
Loading…
Reference in new issue