1
- # Provide a shallow sanity check. You cannot call `make` in the root directory.
1
+ # Provide a shallow sanity check. You cannot call `make` in a module directory.
2
2
export __RIOTBUILD_FLAG := RIOT
3
3
4
4
# set undefined variables
@@ -33,12 +33,14 @@ CPUDEF = $(shell echo $(CPU)|tr 'a-z' 'A-Z'|tr '-' '_')
33
33
CFLAGS += -DBOARD_$(BB) -DCPU_$(CPUDEF)
34
34
35
35
export CFLAGS
36
+ export APPLICATION
36
37
37
38
export BINDIRBASE ?= $(CURDIR)/bin
38
39
export BINDIR ?= $(abspath $(BINDIRBASE)/$(BOARD))/
39
40
40
41
ifeq ($(QUIET),1)
41
42
AD=@
43
+ MAKEFLAGS += --no-print-directory
42
44
else
43
45
AD=
44
46
endif
@@ -84,10 +86,8 @@ export ELFFILE ?= $(BINDIR)$(APPLICATION).elf
84
86
export HEXFILE ?= $(ELFFILE:.elf=.hex)
85
87
86
88
## make script for your application. Build RIOT-base here!
87
- all: $(BINDIR)$(APPLICATION).a
88
- @echo "Building application $(APPLICATION) for $(BOARD) w/ MCU $(MCU)."
89
- "$(MAKE)" -C $(RIOTBOARD)/$(BOARD)
90
- "$(MAKE)" -C $(RIOTBASE)
89
+ all: ..build-message $(USEPKG:%=${BINDIR}%.a) $(APPDEPS)
90
+ "$(MAKE)" -C $(CURDIR) -f $(RIOTBASE)/Makefile.application
91
91
ifeq (,$(RIOTNOLINK))
92
92
ifeq ($(BUILDOSXNATIVE),1)
93
93
$(AD)$(LINK) $(UNDEF) -o $(ELFFILE) $(BASELIBS) $(LINKFLAGS) -Wl,-no_pie
98
98
$(AD)$(OBJCOPY) $(OFLAGS) $(ELFFILE) $(HEXFILE)
99
99
endif
100
100
101
- # string array of all names of c files in dir
102
- SRC = $(wildcard *.c)
103
-
104
- # string array of all names replaced .c with .o
105
- OBJ = $(SRC:%.c=${BINDIR}${APPLICATION}/%.o)
106
-
107
- $(BINDIR)$(APPLICATION).a: $(OBJ)
108
- $(AD)$(AR) -rc $(BINDIR)$(APPLICATION).a $(OBJ)
101
+ ..build-message:
102
+ @echo "Building application $(APPLICATION) for $(BOARD) w/ MCU $(MCU)."
109
103
110
104
# add extra include paths for packages in $(USEMODULE)
111
105
export USEMODULE_INCLUDES =
@@ -119,7 +113,7 @@ INCLUDES += $(USEMODULE_INCLUDES_:%=-I%)
119
113
120
114
# The `clean` needs to be serialized before everything else.
121
115
ifneq (, $(filter clean, $(MAKECMDGOALS)))
122
- $(OBJ) $(BASELIBS) $(USEPKG:%=$(RIOTBASE)/pkg/%/Makefile.include): clean
116
+ all $(BASELIBS) $(USEPKG:%=$(RIOTBASE)/pkg/%/Makefile.include): clean
123
117
endif
124
118
125
119
# include Makefile.includes for packages in $(USEPKG)
@@ -130,14 +124,6 @@ $(RIOTBASE)/pkg/%/Makefile.include::
130
124
131
125
-include $(USEPKG:%=$(RIOTBASE)/pkg/%/Makefile.include)
132
126
133
- # pull in dependency info for *existing* .o files
134
- -include $(OBJ:.o=.d)
135
-
136
- $(BINDIR)$(APPLICATION)/%.o: %.c $(APPDEPS) $(USEPKG:%=${BINDIR}%.a)
137
- @echo; echo "Compiling.... $*.c"; echo
138
- $(AD)mkdir -p "$(dir $@)"
139
- $(AD)$(CC) $(CFLAGS) $(INCLUDES) -c "$<" -o "$@"
140
-
141
127
$(USEPKG:%=${BINDIR}%.a):
142
128
@mkdir -p ${BINDIR}
143
129
"$(MAKE)" -C $(RIOTBASE)/pkg/$(patsubst ${BINDIR}%.a,%,$@)
0 commit comments