diff --git a/make/build.mk b/make/build.mk index c9db4bec..cef1271b 100644 --- a/make/build.mk +++ b/make/build.mk @@ -6,10 +6,10 @@ $(OUTBIN): $(OUTELF) $(NOECHO)$(SIZE) $< $(NOCOPY)$(OBJCOPY) -O binary $< $@ -$(OUTELF): $(ALLMODULE_OBJS) $(LINKER_SCRIPT) +$(OUTELF): $(ALLMODULE_OBJS) $(EXTRA_OBJS) $(LINKER_SCRIPT) @echo linking $@ $(NOECHO)$(SIZE) -t $(ALLMODULE_OBJS) - $(NOECHO)$(LD) $(GLOBAL_LDFLAGS) -T $(LINKER_SCRIPT) $(ALLMODULE_OBJS) $(LIBGCC) -o $@ + $(NOECHO)$(LD) $(GLOBAL_LDFLAGS) -T $(LINKER_SCRIPT) $(ALLMODULE_OBJS) $(EXTRA_OBJS) $(LIBGCC) -o $@ $(OUTELF).sym: $(OUTELF) @echo generating symbols: $@ diff --git a/make/module.mk b/make/module.mk index 777ad566..09785341 100644 --- a/make/module.mk +++ b/make/module.mk @@ -12,6 +12,7 @@ # MODULE_CPPFLAGS : CPPFLAGS local to this module # MODULE_ASMFLAGS : ASMFLAGS local to this module # MODULE_SRCDEPS : extra dependencies that all of this module's files depend on +# MODULE_EXTRA_OBJS : extra .o files that should be linked with the module # MODULE_ARM_OVERRIDE_SRCS : list of source files, local path that should be force compiled with ARM (if applicable) @@ -67,7 +68,7 @@ include make/compile.mk # build a ld -r style combined object MODULE_OBJECT := $(call TOBUILDDIR,$(MODULE_SRCDIR).mod.o) -$(MODULE_OBJECT): $(MODULE_OBJS) +$(MODULE_OBJECT): $(MODULE_OBJS) $(MODULE_EXTRA_OBJS) @$(MKDIR) @echo linking $@ $(NOECHO)$(LD) -r $^ -o $@ @@ -95,6 +96,7 @@ MODULE_CFLAGS := MODULE_CPPFLAGS := MODULE_ASMFLAGS := MODULE_SRCDEPS := +MODULE_EXTRA_OBJS := MODULE_CONFIG := MODULE_OBJECT := MODULE_ARM_OVERRIDE_SRCS := diff --git a/makefile b/makefile index 42ddecfc..6c83f849 100644 --- a/makefile +++ b/makefile @@ -82,6 +82,9 @@ EXTRA_BUILDDEPS := # any rules you put here will be depended on in clean builds EXTRA_CLEANDEPS := +# any objects you put here get linked with the final image +EXTRA_OBJS := + include project/$(PROJECT).mk include target/$(TARGET)/rules.mk include platform/$(PLATFORM)/rules.mk