Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build: Add makefile to build without IDE #24

Merged
merged 2 commits into from
Jul 26, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
*~
**/build-*/*
/tmp/

69 changes: 69 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
#!/usr/bin/make -f
# SPDX-License-Identifier: MPL-2.0
#{
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/
#}

default: help

topdir?=${CURDIR}
extra_dir?=${topdir}/tmp

arduino_version?=1.8.5
arduino_host?=linux32
arduino_url?=https://downloads.arduino.cc/arduino-${arduino_version}-${arduino_host}.tar.xz
ARDUINO_DIR?=${extra_dir}/arduino-${arduino_version}

arduino_mk_url?=https://github.com/sudar/Arduino-Makefile
ARDMK_DIR?=${extra_dir}/arduino-mk


help:
@echo "# Usage:"
@echo "# make setup # Will install tools and deps"
@echo "# make all # Will build all examples"

${ARDUINO_DIR}:
mkdir -p ${@D}
cd ${@D} && curl ${arduino_url} | tar -xJ

rule/arduino_dir: ${ARDUINO_DIR}
ls $<

${ARDMK_DIR}:
mkdir -p ${@D}
git clone --recursive --depth 1 ${arduino_mk_url} $@

rule/arduino_mk_dir: ${ARDMK_DIR}
ls $<

#{ Libraries
USER_LIB_PATH?=${extra_dir}/Arduino/libraries

ArduinoJson_url?=https://github.com/bblanchon/ArduinoJson
ArduinoJson_dir?=${extra_dir}/Arduino/libraries/ArduinoJson

${ArduinoJson_dir}:
@mkdir -p ${@D}
git clone --depth 1 --recursive ${ArduinoJson_url} $@

ArduinoMDNS_url=https://github.com/arduino-libraries/ArduinoMDNS
ArduinoMDNS_dir?=${extra_dir}/Arduino/libraries/ArduinoMDNS

${ArduinoMDNS_dir}:
@mkdir -p ${@D}
git clone --depth 1 --recursive ${ArduinoMDNS_url} $@

rule/arduino_lib_dirs: ${ArduinoMDNS_dir} ${ArduinoJson_dir}
ls $^
#}

setup: rule/arduino_dir rule/arduino_mk_dir rule/arduino_lib_dirs
sync

all: $(wildcard examples/*/Makefile | sort)
for file in $^; do \
dirname=$$(dirname -- "$${file}") ; ${MAKE} -C $${dirname}; \
done
43 changes: 43 additions & 0 deletions examples/LevelSensor/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/usr/bin/make -f
# SPDX-License-Identifier: MPL-2.0
#{
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/
#}

default: all
@echo "# $@: $^"

all: rule/setup

top_reldir?=../..
topdir?=${CURDIR}/${top_reldir}
-include ${topdir}/Makefile

AVR_TOOLS_DIR?=${ARDUINO_DIR}/hardware/tools/avr
ARDUINO_DIR?=/usr/share/arduino
ARDMK_DIR?=${ARDUINO_DIR}
arduino_mk?=${ARDMK_DIR}/Arduino.mk

#{ Config part
VARIANT?=mega
BOARD_TAG=mega2560
BOARD_SUB=
MCU?=at${BOARD_TAG}
F_CPU?=16000000L
MONITOR_PORT?=$(shell ls /dev/ttyUSB* /dev/ttyACM* | head -n1)
#}

ARCHITECTURE=avr
AVRDUDE_ARD_BAUDRATE?=115200
MONITOR_BAUDRATE?=${AVRDUDE_ARD_BAUDRATE}
AVRDUDE_ARD_PROGRAMMER?=wiring

CPPFLAGS+=-I${top_reldir}

ARDUINO_LIBS += Ethernet SPI
ARDUINO_LIBS += ArduinoMDNS
ARDUINO_LIBS += ArduinoJson

-include ${arduino_mk}