
This commit allows the Makefile to check if the BOARD_HARDWARE_PATH it tried to determine based on the system specific Arduino installation is correct. This is done by checking for the Kaleidoscope library's existence. If Kaleidoscope is not found, the Makefile falls back to determining the hardware path relative to its own location. This even enables building from any location where a *.ino file lives without the requirement to checkout the kaleidoscope libraries into Arduino installation's hardware path or to symlink them there. The following now is possible > SOURCE_DIR=<place where the sources live> > cd $SOURCE_DIR > mkdir hardware > git clone --recursive <URL of the Kaleidoscope bundle> hardware/keyboardio > BUILD_DIR=<location where a *.ino file lives> > cd $BUILD_DIR > make -f $SOURCE_DIR/hardware/keyboardio/avr/libraries/Model01-Firmware/Makefile for quick builds > SOURCE_DIR=<place where the sources live> > cd $SOURCE_DIR > mkdir hardware > git clone --recursive <URL of the Kaleidoscope bundle> hardware/keyboardio > cd hardware/keyboardio/avr/libraries/Model01-Firmware make Signed-off-by: Florian Fleissner <florian.fleissner@inpartik.de>
66 lines
2.2 KiB
Makefile
66 lines
2.2 KiB
Makefile
# This stub makefile for a Kaleidoscope plugin pulls in
|
|
# all targets from the Kaleidoscope-Plugin library
|
|
|
|
UNAME_S := $(shell uname -s)
|
|
|
|
ifeq ($(UNAME_S),Darwin)
|
|
SKETCHBOOK_DIR ?= $(HOME)/Documents/Arduino
|
|
PACKAGE_DIR ?= $(HOME)/Library/Arduino15
|
|
else
|
|
SKETCHBOOK_DIR ?= $(HOME)/Arduino
|
|
PACKAGE_DIR ?= $(HOME)/.arduino15
|
|
endif
|
|
|
|
|
|
ARDUINO_INSTALLED_ENV=$(shell ls -dt $(PACKAGE_DIR)/packages/keyboardio/hardware/avr 2>/dev/null |head -n 1)
|
|
MANUALLY_INSTALLED_ENV=$(shell ls -dt $(SKETCHBOOK_DIR)/hardware/keyboardio/avr 2>/dev/null |head -n 1)
|
|
|
|
|
|
|
|
ifneq ("$(wildcard $(ARDUINO_INSTALLED_ENV)/boards.txt)","")
|
|
|
|
ifneq ("$(wildcard $(MANUALLY_INSTALLED_ENV)/boards.txt)","")
|
|
|
|
$(info ***************************************************************************)
|
|
$(info It appears that you have installed two copies of Kaleidoscope. One copy was)
|
|
$(info installed using Arduino's "Board Manager", while the other was installed by)
|
|
$(info hand, probably using "git".)
|
|
$(info )
|
|
$(info This will likely cause some trouble as you try to build keyboard firmware)
|
|
$(info using Kaleidoscope. You may want to remove either: )
|
|
$(info )
|
|
$(info $(PACKAGE_DIR)/packages/keyboardio/ which was installed using Arduino)
|
|
$(info )
|
|
$(info or)
|
|
$(info )
|
|
$(info $(SKETCHBOOK_DIR)/hardware/keyboardio/ which was installed by hand.)
|
|
$(info )
|
|
$(info ***************************************************************************)
|
|
$(info )
|
|
|
|
endif
|
|
|
|
BOARD_HARDWARE_PATH = $(ARDUINO_INSTALLED_ENV)
|
|
KALEIDOSCOPE_PLUGIN_MAKEFILE_DIR ?= build-tools/makefiles/
|
|
KALEIDOSCOPE_BUILDER_DIR ?= $(ARDUINO_INSTALLED_ENV)/libraries/Kaleidoscope/bin/
|
|
|
|
|
|
|
|
endif
|
|
|
|
|
|
BOARD_HARDWARE_PATH ?= $(SKETCHBOOK_DIR)/hardware
|
|
KALEIDOSCOPE_PLUGIN_MAKEFILE_DIR ?= keyboardio/build-tools/makefiles/
|
|
|
|
# If Kaleidoscope's Arduino libraries cannot be found, e.g. because
|
|
# they reside outside of SKETCHBOOK_DIR, we fall back to assuming that
|
|
# the hardware directory can be determined in relation to the position of
|
|
# this Makefile.
|
|
ifeq ("$(wildcard $(BOARD_HARDWARE_PATH)/keyboardio/avr/libraries/Kaleidoscope)","")
|
|
# Determine the path of this Makefile
|
|
MKFILE_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
|
|
BOARD_HARDWARE_PATH = $(MKFILE_DIR)/../../../..
|
|
endif
|
|
|
|
include $(BOARD_HARDWARE_PATH)/$(KALEIDOSCOPE_PLUGIN_MAKEFILE_DIR)/rules.mk
|