diff --git a/Makefile.include b/Makefile.include index 341c2e2ec6..0ae0581ff1 100644 --- a/Makefile.include +++ b/Makefile.include @@ -63,6 +63,7 @@ endif # your binaries to link BASELIBS += $(BINDIR)$(BOARD)_base.a BASELIBS += $(BINDIR)${PROJECT}.a +BASELIBS += $(USEPKG:%=${BINDIR}%.a) .PHONY: all clean flash doc term @@ -71,7 +72,7 @@ all: $(BINDIR)$(PROJECT).a @echo "Building project $(PROJECT) for $(BOARD) w/ MCU $(MCU)." "$(MAKE)" -C $(RIOTBOARD)/$(BOARD) "$(MAKE)" -C $(RIOTBASE) - @for i in $(EXTERNAL_MODULES) ; do "$(MAKE)" -C $$i ; done ; + @for i in $(USEPKG) ; do "$(MAKE)" -C $(RIOTBASE)/pkg/$$i ; done ; ifeq ($(BUILDOSXNATIVE),1) $(AD)$(LINK) $(UNDEF) -o $(BINDIR)$(PROJECT).elf $(BASELIBS) $(LINKFLAGS) -Wl,-no_pie else @@ -91,21 +92,34 @@ SRC = $(wildcard *.c) # string array of all names replaced .c with .o OBJ = $(SRC:%.c=${BINDIR}${PROJECT}/%.o) -$(BINDIR)$(PROJECT).a: $(OBJ) +$(BINDIR)$(PROJECT).a: $(OBJ) $(AD)$(AR) -rc $(BINDIR)$(PROJECT).a $(OBJ) +# include Makefile.includes for packages in $(USEPKG) +$(RIOTBASE)/pkg/%/Makefile.include:: + $(AD)"$(MAKE)" -C $(RIOTBASE)/pkg/$* Makefile.include + +.PHONY: $(USEPKG:%=$(RIOTBASE)/pkg/%/Makefile.include) + +-include $(USEPKG:%=$(RIOTBASE)/pkg/%/Makefile.include) + # pull in dependency info for *existing* .o files -include $(OBJ:.o=.d) -$(BINDIR)$(PROJECT)/%.o: %.c $(PROJDEPS) +$(BINDIR)$(PROJECT)/%.o: %.c $(PROJDEPS) $(USEPKG:%=${BINDIR}%.a) + @mkdir -p ${BINDIR} @echo; echo "Compiling.... $*.c"; echo @test -d $(BINDIR)$(PROJECT) || mkdir -p $(BINDIR)$(PROJECT) $(AD)$(CC) $(CFLAGS) $(INCLUDES) -c $*.c -o $(BINDIR)$(PROJECT)/$*.o +$(USEPKG:%=${BINDIR}%.a):: + @mkdir -p ${BINDIR} + "$(MAKE)" -C $(RIOTBASE)/pkg/$(patsubst ${BINDIR}%.a,%,$@) + clean: + @for i in $(USEPKG) ; do "$(MAKE)" -C $(RIOTBASE)/pkg/$$i clean ; done ; "$(MAKE)" -C $(RIOTBOARD)/$(BOARD) clean "$(MAKE)" -C $(RIOTBASE) clean - @for i in $(EXTERNAL_MODULES) ; do "$(MAKE)" -C $$i clean ; done ; rm -rf $(BINDIR) flash: all diff --git a/pkg/USING b/pkg/USING index c19ec531b6..06964f2813 100644 --- a/pkg/USING +++ b/pkg/USING @@ -2,4 +2,4 @@ Packages are included to your project as external modules. Thus you only have to add the following line to your project (and update your INCLUDE path accordingly): -EXTERNAL+=$(RIOTBASE)/pkg/ +USEPKG += diff --git a/pkg/libcoap/Makefile b/pkg/libcoap/Makefile index 089d1c2230..9a91f013bd 100644 --- a/pkg/libcoap/Makefile +++ b/pkg/libcoap/Makefile @@ -32,3 +32,6 @@ clean:: distclean:: rm -rf $(CURDIR)/$(PKG_NAME) + +Makefile.include: + @true diff --git a/pkg/libcoap/Makefile.include b/pkg/libcoap/Makefile.include new file mode 100644 index 0000000000..1d16e598b5 --- /dev/null +++ b/pkg/libcoap/Makefile.include @@ -0,0 +1 @@ +INCLUDES += -I $(RIOTBASE)/pkg/libcoap/libcoap