From 5906f18a81597e6e9b132a1d14baf57f1b4b0f0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Kijewski?= Date: Tue, 28 Jan 2014 17:58:39 +0100 Subject: [PATCH 1/3] Add USEPKG variable for Makefiles Currently pkg/USING says one should use `EXTERNAL+=$(RIOTBASE)/pkg/` to enable PKG modules. Using this line the PKG will be compiled but not linked. This change adds a USEPKG variable to be used like `USEPKG += `, which looks less clumsy and gets the PKG linked in the binary. --- Makefile.include | 5 +++-- pkg/USING | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Makefile.include b/Makefile.include index 3209ca8c809e..59f5b573086a 100644 --- a/Makefile.include +++ b/Makefile.include @@ -49,6 +49,7 @@ include $(RIOTBASE)/Makefile.dep # your binaries to link BASELIBS += $(BINDIR)$(BOARD)_base.a BASELIBS += $(BINDIR)${PROJECT}.a +BASELIBS += $(USEPKG:%=${BINDIR}%.a) .PHONY: all clean flash doc term @@ -57,7 +58,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,7 +92,7 @@ $(BINDIR)$(PROJECT)/%.o: %.c $(PROJDEPS) clean: "$(MAKE)" -C $(RIOTBOARD)/$(BOARD) clean "$(MAKE)" -C $(RIOTBASE) clean - @for i in $(EXTERNAL_MODULES) ; do "$(MAKE)" -C $$i clean ; done ; + @for i in $(USEPKG) ; do "$(MAKE)" -C $(RIOTBASE)/pkg/$$i clean ; done ; rm -rf $(BINDIR) flash: all diff --git a/pkg/USING b/pkg/USING index c19ec531b63f..06964f28135b 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 += From 84cffaa0a07971bd10fce4ccdace775139604920 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Kijewski?= Date: Tue, 28 Jan 2014 21:12:55 +0100 Subject: [PATCH 2/3] Use include path convention for PKGs Packages have to define a Makefile.include target in pkg/%/Makefile. pkg/%/Makefile.include will be loaded after all other dependencies. --- Makefile.include | 19 ++++++++++++++++--- pkg/libcoap/Makefile | 3 +++ pkg/libcoap/Makefile.include | 1 + pkg/libcoap/include/coap.h | 1 + 4 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 pkg/libcoap/Makefile.include create mode 100644 pkg/libcoap/include/coap.h diff --git a/Makefile.include b/Makefile.include index 59f5b573086a..6bc01de23bf4 100644 --- a/Makefile.include +++ b/Makefile.include @@ -78,21 +78,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 $(USEPKG) ; do "$(MAKE)" -C $(RIOTBASE)/pkg/$$i clean ; done ; rm -rf $(BINDIR) flash: all diff --git a/pkg/libcoap/Makefile b/pkg/libcoap/Makefile index 089d1c223036..9a91f013bd99 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 000000000000..0fbf281463e6 --- /dev/null +++ b/pkg/libcoap/Makefile.include @@ -0,0 +1 @@ +INCLUDES += -I $(RIOTBASE)/pkg/libcoap/include diff --git a/pkg/libcoap/include/coap.h b/pkg/libcoap/include/coap.h new file mode 100644 index 000000000000..b61cbd780fda --- /dev/null +++ b/pkg/libcoap/include/coap.h @@ -0,0 +1 @@ +#include "../libcoap/coap.h" From ee6f6830aac9aff6368f9cecb30337ac3e421b41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Kijewski?= Date: Wed, 12 Feb 2014 13:54:09 +0100 Subject: [PATCH 3/3] Apply @authmillenon's patch --- pkg/libcoap/Makefile.include | 2 +- pkg/libcoap/include/coap.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 pkg/libcoap/include/coap.h diff --git a/pkg/libcoap/Makefile.include b/pkg/libcoap/Makefile.include index 0fbf281463e6..1d16e598b5a6 100644 --- a/pkg/libcoap/Makefile.include +++ b/pkg/libcoap/Makefile.include @@ -1 +1 @@ -INCLUDES += -I $(RIOTBASE)/pkg/libcoap/include +INCLUDES += -I $(RIOTBASE)/pkg/libcoap/libcoap diff --git a/pkg/libcoap/include/coap.h b/pkg/libcoap/include/coap.h deleted file mode 100644 index b61cbd780fda..000000000000 --- a/pkg/libcoap/include/coap.h +++ /dev/null @@ -1 +0,0 @@ -#include "../libcoap/coap.h"