aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Peplin <chris.peplin@rhubarbtech.com>2012-03-25 23:54:21 -0400
committerChristopher Peplin <chris.peplin@rhubarbtech.com>2012-03-25 23:54:21 -0400
commit8f10b98e51a973f80fe6850eb36f340717bb11f7 (patch)
treedd8e98ee6a8ddc1e28118428fbf5b3104147ee50
parentf437ea63ebc6653de755afeea05c7a44dccfcc4d (diff)
Build user libraries from the sketchbook directory.
-rw-r--r--README.md7
-rw-r--r--arduino-mk/Arduino.mk26
2 files changed, 31 insertions, 2 deletions
diff --git a/README.md b/README.md
index ec38ba9..e976748 100644
--- a/README.md
+++ b/README.md
@@ -8,3 +8,10 @@ documentation](http://mjo.tc/atelier/2009/02/arduino-cli.html
"Documentation") exists.
If you're using Debian or Ubuntu, you can find this in the arduino-core package.
+
+## User Libraries
+
+In order to use Arduino libraries installed in the user's sketchbook folder (the
+standard location for custom libraries when using the Arduino IDE), you need to
+set the `ARDUNIO_SKETCHBOOK` variable to point to this directory. By default it
+is set to `$HOME/sketchbook`.
diff --git a/arduino-mk/Arduino.mk b/arduino-mk/Arduino.mk
index 2d39095..54d2f89 100644
--- a/arduino-mk/Arduino.mk
+++ b/arduino-mk/Arduino.mk
@@ -201,6 +201,14 @@ ARDUINO_LIB_PATH = $(ARDUINO_DIR)/libraries
ARDUINO_CORE_PATH = $(ARDUINO_DIR)/hardware/arduino/cores/arduino
ARDUINO_VAR_PATH = $(ARDUINO_DIR)/hardware/arduino/variants
+ifndef ARDUINO_SKETCHBOOK
+ARDUINO_SKETCHBOOK = $(HOME)/sketchbook
+endif
+
+ifndef USER_LIB_PATH
+USER_LIB_PATH = $(ARDUINO_SKETCHBOOK)/libraries
+endif
+
endif
########################################################################
@@ -322,11 +330,17 @@ ECHO = echo
# General arguments
SYS_LIBS = $(patsubst %,$(ARDUINO_LIB_PATH)/%,$(ARDUINO_LIBS))
-SYS_INCLUDES = $(patsubst %,-I%,$(SYS_LIBS))
+USER_LIBS = $(patsubst %,$(USER_LIB_PATH)/%,$(ARDUINO_LIBS))
+SYS_INCLUDES = $(patsubst %,-I%,$(SYS_LIBS)) $(patsubst %,-I%,$(USER_LIBS))
LIB_C_SRCS = $(wildcard $(patsubst %,%/*.c,$(SYS_LIBS)))
LIB_CPP_SRCS = $(wildcard $(patsubst %,%/*.cpp,$(SYS_LIBS)))
+USER_LIB_CPP_SRC = $(wildcard $(patsubst %,%/*.cpp,$(USER_LIBS)))
+USER_LIB_C_SRC = $(wildcard $(patsubst %,%/*.c,$(USER_LIBS)))
LIB_OBJS = $(patsubst $(ARDUINO_LIB_PATH)/%.c,$(OBJDIR)/libs/%.o,$(LIB_C_SRCS)) \
- $(patsubst $(ARDUINO_LIB_PATH)/%.cpp,$(OBJDIR)/libs/%.o,$(LIB_CPP_SRCS))
+ $(patsubst $(ARDUINO_LIB_PATH)/%.cpp,$(OBJDIR)/libs/%.o,$(LIB_CPP_SRCS)) \
+ $(patsubst $(USER_LIB_PATH)/%.cpp,$(OBJDIR)/libs/%.o,$(USER_LIB_CPP_SRCS)) \
+ $(patsubst $(USER_LIB_PATH)/%.c,$(OBJDIR)/libs/%.o,$(USER_LIB_C_SRCS))
+
CPPFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -DARDUINO=$(ARDUINO_VERSION) \
-I. -I$(ARDUINO_CORE_PATH) -I$(ARDUINO_VAR_PATH)/$(VARIANT) \
@@ -357,6 +371,14 @@ $(OBJDIR)/libs/%.o: $(ARDUINO_LIB_PATH)/%.cpp
mkdir -p $(dir $@)
$(CC) -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@
+$(OBJDIR)/libs/%.o: $(USER_LIB_PATH)/%.cpp
+ mkdir -p $(dir $@)
+ $(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
+
+$(OBJDIR)/libs/%.o: $(USER_LIB_PATH)/%.c
+ mkdir -p $(dir $@)
+ $(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
+
# normal local sources
# .o rules are for objects, .d for dependency tracking
# there seems to be an awful lot of duplication here!!!