Quellcode durchsuchen

Added library support

Min vor 6 Jahren
Ursprung
Commit
92f8b2c6f4
1 geänderte Dateien mit 17 neuen und 8 gelöschten Zeilen
  1. 17 8
      Makefile

+ 17 - 8
Makefile

@@ -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)