|
|
@@ -39,14 +39,23 @@ VARIANTLIB := $(ENERGIADIR)/hardware/$(BOARD)/variants/$(BOARD_BUILD_VARIANT)
|
|
|
COREDIR := $(ENERGIADIR)/hardware/$(BOARD)/cores/$(BOARD)
|
|
|
CORELIB := $(BUILDDIR)/core.a
|
|
|
SOURCES := $(wildcard *.c *.cc *.cpp)
|
|
|
-LIBDIRS := $(COREDIR) $(COREDIR)/driverlib $(COREDIR)/avr
|
|
|
|
|
|
-LIBSOURCES := $(foreach dir, $(LIBDIRS), $(wildcard $(addprefix $(dir)/, *.c *.cpp)))
|
|
|
-SRCOBJS = $(addprefix $(BUILDDIR)/, $(notdir $(addsuffix .o, $(SOURCES))))
|
|
|
-LIBOBJS = $(addprefix $(BUILDDIR)/, $(notdir $(addsuffix .o, $(LIBSOURCES))))
|
|
|
+# External libraries
|
|
|
+LIBRARIES := $(foreach lib, $(filter $(notdir $(wildcard $(ENERGIALIB)/*)), \
|
|
|
+ $(shell sed -ne "s/^ *\# *include *[<\"]\(.*\)\.h[>\"]/\1/p" $(SOURCES))), $(ENERGIALIB)/$(lib))
|
|
|
+LIBRARIES += $(foreach lib, $(LIBRARIES), $(lib)/utility)
|
|
|
+
|
|
|
+LIBDIRS := $(COREDIR) $(COREDIR)/driverlib $(CORELIB)/avr # This is corelib
|
|
|
+
|
|
|
+CORELIBSOURCES := $(foreach dir, $(LIBDIRS), $(wildcard $(addprefix $(dir)/, *.c *.cpp)))
|
|
|
+LIBSOURCES := $(foreach dir, $(LIBRARIES), $(wildcard $(addprefix $(dir)/, *.c *.cpp)))
|
|
|
+SRCOBJS = $(addprefix $(BUILDDIR)/, $(notdir $(addsuffix .o, $(SOURCES) $(LIBSOURCES))))
|
|
|
+LIBOBJS = $(addprefix $(BUILDDIR)/, $(notdir $(addsuffix .o, $(CORELIBSOURCES)))) # This is corelib
|
|
|
OBJECTS = $(addprefix $(BUILDDIR)/, $(notdir $(addsuffix .o, $(SOURCES) $(LIBSOURCES))))
|
|
|
|
|
|
-VPATH = $(LIBDIRS) $(SRCDIR)
|
|
|
+$(info OBJS $(OBJECTS))
|
|
|
+VPATH = $(LIBRARIES) $(LIBDIRS) $(SRCDIR)
|
|
|
+$(info VPATH $(VPATH))
|
|
|
|
|
|
BIN := $(BUILDDIR)/$(NAME).bin
|
|
|
EFI := $(BUILDDIR)/$(NAME).efi
|
|
|
@@ -67,7 +76,7 @@ CXXFLAGS += -mcpu=$(BOARD_BUILD_MCU) -DF_CPU=$(BOARD_BUILD_FCPU) -MMD -DARDUINO=
|
|
|
LINKFLAGS := -Os -nostartfiles -nostdlib -Wl,--gc-sections -T$(COREDIR)/$(BOARD_LDSCRIPT) -Wl,--entry=ResetISR -mthumb -mcpu=$(BOARD_BUILD_MCU)
|
|
|
|
|
|
### INCLUDES AND LIBRARIES
|
|
|
-INCLUDES := -I$(COREDIR) -I$(VARIANTLIB) -I$(ENERGIALIB)
|
|
|
+INCLUDES := -I$(COREDIR) -I$(VARIANTLIB) -I$(ENERGIALIB) $(addprefix -I, $(LIBRARIES))
|
|
|
|
|
|
# default rule
|
|
|
.DEFAULT_GOAL := all
|
|
|
@@ -107,11 +116,11 @@ $(BIN): $(EFI)
|
|
|
@mkdir -p $(BUILDDIR)
|
|
|
$(OBJCOPY) -O binary $< $@
|
|
|
|
|
|
-$(EFI): $(CORELIB)
|
|
|
+$(EFI): $(CORELIB) $(OBJECTS)
|
|
|
@mkdir -p $(BUILDDIR)
|
|
|
$(CXX) $(LINKFLAGS) $(SRCOBJS) $< -L$(BUILDDIR) -lm -lc -lgcc -o $@
|
|
|
|
|
|
-$(CORELIB): $(OBJECTS)
|
|
|
+$(CORELIB): $(LIBOBJS)
|
|
|
@mkdir -p $(BUILDDIR)
|
|
|
$(AR) rcs $@ $(LIBOBJS)
|
|
|
|