mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
9a15a6def5
Currently you need to add every new sys and driver module into the respective Makefile. This requires rebasing if another module was merged in the meantime. This PR allows you to omit the entry to {sys,drivers}/Makefile, if the subfolder has the same name as the module name, which should be sensible in most cases.
74 lines
1.7 KiB
Makefile
74 lines
1.7 KiB
Makefile
ifeq (, $(__RIOTBUILD_FLAG))
|
|
$(error You cannot build a module on its own. Use "make" in your application's directory instead.)
|
|
endif
|
|
|
|
unexport DIRS
|
|
DIRS := $(sort $(abspath ${DIRS}))
|
|
|
|
MODULE ?= $(shell basename $(CURDIR))
|
|
|
|
.PHONY: all ${DIRS:%=ALL--%} ${DIRS:%=CLEAN--%}
|
|
|
|
all: $(BINDIR)$(MODULE).a ..nothing
|
|
|
|
..nothing:
|
|
@:
|
|
|
|
clean:: ${DIRS:%=CLEAN--%}
|
|
|
|
${DIRS:%=ALL--%}:
|
|
"$(MAKE)" -C ${@:ALL--%=%}
|
|
|
|
${DIRS:%=CLEAN--%}:
|
|
"$(MAKE)" -C ${@:CLEAN--%=%} clean
|
|
|
|
ifeq ($(strip $(SRC)),)
|
|
SRC := $(wildcard *.c)
|
|
endif
|
|
ifeq ($(strip $(SRCXX)),)
|
|
SRCXX := $(wildcard *.cpp)
|
|
endif
|
|
ifeq ($(strip $(ASMSRC)),)
|
|
ASMSRC := $(wildcard *.s)
|
|
endif
|
|
ifeq ($(strip $(ASSMSRC)),)
|
|
ASSMSRC := $(wildcard *.S)
|
|
endif
|
|
|
|
OBJC := $(SRC:%.c=$(BINDIR)$(MODULE)/%.o)
|
|
OBJCXX := $(SRCXX:%.cpp=$(BINDIR)$(MODULE)/%.o)
|
|
ASMOBJ := $(ASMSRC:%.s=$(BINDIR)$(MODULE)/%.o)
|
|
ASSMOBJ := $(ASSMSRC:%.S=$(BINDIR)$(MODULE)/%.o)
|
|
|
|
OBJ := $(OBJC) $(OBJCXX) $(ASMOBJ) $(ASSMOBJ)
|
|
DEP := $(OBJC:.o=.d) $(OBJCXX:.o=.d) $(ASSMOBJ:.o=.d)
|
|
|
|
$(BINDIR)$(MODULE)/:
|
|
$(AD)mkdir -p $@
|
|
|
|
$(BINDIR)$(MODULE).a $(OBJ): | $(BINDIR)$(MODULE)/
|
|
|
|
$(BINDIR)$(MODULE).a: $(OBJ) | ${DIRS:%=ALL--%}
|
|
$(AD)$(AR) -rcs $@ $?
|
|
|
|
|
|
CXXFLAGS = $(filter-out $(CXXUWFLAGS), $(CFLAGS)) $(CXXEXFLAGS)
|
|
|
|
# compile and generate dependency info
|
|
|
|
$(OBJC): $(BINDIR)$(MODULE)/%.o: %.c
|
|
$(AD)$(CC) $(CFLAGS) $(INCLUDES) -MD -MP -c -o $@ $(abspath $<)
|
|
|
|
$(OBJCXX): $(BINDIR)$(MODULE)/%.o: %.cpp
|
|
$(AD)$(CXX) $(CXXFLAGS) $(INCLUDES) -MD -MP -c -o $@ $(abspath $<)
|
|
|
|
$(ASMOBJ): $(BINDIR)$(MODULE)/%.o: %.s
|
|
$(AD)$(AS) $(ASFLAGS) -o $@ $(abspath $<)
|
|
|
|
$(ASSMOBJ): $(BINDIR)$(MODULE)/%.o: %.S
|
|
$(AD)$(CC) $(CFLAGS) $(INCLUDES) -MD -MP -c -o $@ $(abspath $<)
|
|
|
|
# pull in dependency info for *existing* .o files
|
|
# deleted header files will be silently ignored
|
|
-include $(DEP)
|