Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 18 additions & 4 deletions Makefile.include
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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
Expand All @@ -77,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 $(EXTERNAL_MODULES) ; do "$(MAKE)" -C $$i clean ; done ;
rm -rf $(BINDIR)

flash: all
Expand Down
2 changes: 1 addition & 1 deletion pkg/USING
Original file line number Diff line number Diff line change
Expand Up @@ -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/<pkg_name>
USEPKG += <pkg_name>
3 changes: 3 additions & 0 deletions pkg/libcoap/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,6 @@ clean::

distclean::
rm -rf $(CURDIR)/$(PKG_NAME)

Makefile.include:
@true
1 change: 1 addition & 0 deletions pkg/libcoap/Makefile.include
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
INCLUDES += -I $(RIOTBASE)/pkg/libcoap/libcoap