Merge pull request #6 from peplin/sketchbook-libraries
Compile and include libraries from the sketchbook folder
This commit is contained in:
commit
3bc318b43e
2 changed files with 33 additions and 4 deletions
|
@ -8,3 +8,10 @@ documentation](http://mjo.tc/atelier/2009/02/arduino-cli.html
|
||||||
"Documentation") exists.
|
"Documentation") exists.
|
||||||
|
|
||||||
If you're using Debian or Ubuntu, you can find this in the arduino-core package.
|
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`.
|
||||||
|
|
|
@ -205,6 +205,14 @@ ARDUINO_LIB_PATH = $(ARDUINO_DIR)/libraries
|
||||||
ARDUINO_CORE_PATH = $(ARDUINO_DIR)/hardware/arduino/cores/arduino
|
ARDUINO_CORE_PATH = $(ARDUINO_DIR)/hardware/arduino/cores/arduino
|
||||||
ARDUINO_VAR_PATH = $(ARDUINO_DIR)/hardware/arduino/variants
|
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
|
endif
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
@ -334,15 +342,21 @@ ECHO = echo
|
||||||
|
|
||||||
# General arguments
|
# General arguments
|
||||||
SYS_LIBS = $(patsubst %,$(ARDUINO_LIB_PATH)/%,$(ARDUINO_LIBS))
|
SYS_LIBS = $(patsubst %,$(ARDUINO_LIB_PATH)/%,$(ARDUINO_LIBS))
|
||||||
|
USER_LIBS = $(patsubst %,$(USER_LIB_PATH)/%,$(ARDUINO_LIBS))
|
||||||
SYS_INCLUDES = $(patsubst %,-I%,$(SYS_LIBS))
|
SYS_INCLUDES = $(patsubst %,-I%,$(SYS_LIBS))
|
||||||
|
USER_INCLUDES = $(patsubst %,-I%,$(USER_LIBS))
|
||||||
LIB_C_SRCS = $(wildcard $(patsubst %,%/*.c,$(SYS_LIBS)))
|
LIB_C_SRCS = $(wildcard $(patsubst %,%/*.c,$(SYS_LIBS)))
|
||||||
LIB_CPP_SRCS = $(wildcard $(patsubst %,%/*.cpp,$(SYS_LIBS)))
|
LIB_CPP_SRCS = $(wildcard $(patsubst %,%/*.cpp,$(SYS_LIBS)))
|
||||||
|
USER_LIB_CPP_SRCS = $(wildcard $(patsubst %,%/*.cpp,$(USER_LIBS)))
|
||||||
|
USER_LIB_C_SRCS = $(wildcard $(patsubst %,%/*.c,$(USER_LIBS)))
|
||||||
LIB_OBJS = $(patsubst $(ARDUINO_LIB_PATH)/%.c,$(OBJDIR)/libs/%.o,$(LIB_C_SRCS)) \
|
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))
|
||||||
|
USER_LIB_OBJS = $(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) \
|
CPPFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -DARDUINO=$(ARDUINO_VERSION) \
|
||||||
-I. -I$(ARDUINO_CORE_PATH) -I$(ARDUINO_VAR_PATH)/$(VARIANT) \
|
-I. -I$(ARDUINO_CORE_PATH) -I$(ARDUINO_VAR_PATH)/$(VARIANT) \
|
||||||
$(SYS_INCLUDES) -g -Os -w -Wall \
|
$(SYS_INCLUDES) $(USER_INCLUDES) -g -Os -w -Wall \
|
||||||
-ffunction-sections -fdata-sections
|
-ffunction-sections -fdata-sections
|
||||||
CFLAGS = -std=gnu99
|
CFLAGS = -std=gnu99
|
||||||
CXXFLAGS = -fno-exceptions
|
CXXFLAGS = -fno-exceptions
|
||||||
|
@ -369,6 +383,14 @@ $(OBJDIR)/libs/%.o: $(ARDUINO_LIB_PATH)/%.cpp
|
||||||
mkdir -p $(dir $@)
|
mkdir -p $(dir $@)
|
||||||
$(CC) -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@
|
$(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
|
# normal local sources
|
||||||
# .o rules are for objects, .d for dependency tracking
|
# .o rules are for objects, .d for dependency tracking
|
||||||
# there seems to be an awful lot of duplication here!!!
|
# there seems to be an awful lot of duplication here!!!
|
||||||
|
@ -474,8 +496,8 @@ $(OBJDIR):
|
||||||
$(TARGET_ELF): $(LOCAL_OBJS) $(CORE_LIB) $(OTHER_OBJS)
|
$(TARGET_ELF): $(LOCAL_OBJS) $(CORE_LIB) $(OTHER_OBJS)
|
||||||
$(CC) $(LDFLAGS) -o $@ $(LOCAL_OBJS) $(CORE_LIB) $(OTHER_OBJS) -lc -lm
|
$(CC) $(LDFLAGS) -o $@ $(LOCAL_OBJS) $(CORE_LIB) $(OTHER_OBJS) -lc -lm
|
||||||
|
|
||||||
$(CORE_LIB): $(CORE_OBJS) $(LIB_OBJS)
|
$(CORE_LIB): $(CORE_OBJS) $(LIB_OBJS) $(USER_LIB_OBJS)
|
||||||
$(AR) rcs $@ $(CORE_OBJS) $(LIB_OBJS)
|
$(AR) rcs $@ $(CORE_OBJS) $(LIB_OBJS) $(USER_LIB_OBJS)
|
||||||
|
|
||||||
$(DEP_FILE): $(OBJDIR) $(DEPS)
|
$(DEP_FILE): $(OBJDIR) $(DEPS)
|
||||||
cat $(DEPS) > $(DEP_FILE)
|
cat $(DEPS) > $(DEP_FILE)
|
||||||
|
@ -509,7 +531,7 @@ ispload: $(TARGET_HEX)
|
||||||
-U lock:w:$(ISP_LOCK_FUSE_POST):m
|
-U lock:w:$(ISP_LOCK_FUSE_POST):m
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(REMOVE) $(LOCAL_OBJS) $(CORE_OBJS) $(LIB_OBJS) $(CORE_LIB) $(TARGETS) $(DEP_FILE) $(DEPS)
|
$(REMOVE) $(LOCAL_OBJS) $(CORE_OBJS) $(LIB_OBJS) $(CORE_LIB) $(TARGETS) $(DEP_FILE) $(DEPS) $(USER_LIB_OBJS)
|
||||||
|
|
||||||
depends: $(DEPS)
|
depends: $(DEPS)
|
||||||
cat $(DEPS) > $(DEP_FILE)
|
cat $(DEPS) > $(DEP_FILE)
|
||||||
|
|
Loading…
Add table
Reference in a new issue