unified: Build kernel objects as a static library

Building kernel objects as a static library allows not
to include the initialization function for an object
type if this type is not used by the application.
It reduces memory footprint

Change-Id: I2b3c79cb2591fdd1ce15d27684c4a874e759c559
Signed-off-by: Dmitriy Korovkin <dmitriy.korovkin@windriver.com>
This commit is contained in:
Dmitriy Korovkin 2016-09-09 13:59:17 -04:00 committed by Benjamin Walsh
commit 9558d47fd3
2 changed files with 27 additions and 14 deletions

View file

@ -561,6 +561,11 @@ else
include/config/auto.conf: ;
endif # $(dot-config)
# Unified kernel objects are built as a static library
ifeq ($(CONFIG_KERNEL_V2),y)
libs-y := kernel/unified/
endif
ARCH = $(subst $(DQUOTE),,$(CONFIG_ARCH))
export ARCH
@ -775,7 +780,10 @@ OUTPUT_FORMAT ?= elf32-i386
OUTPUT_ARCH ?= i386
quiet_cmd_ar_target = AR $@
cmd_ar_target = rm -f $@; $(AR) rcT$(KBUILD_ARFLAGS) $@ $(KBUILD_ZEPHYR_MAIN)
# Assume that if the directory listed in libs-y contains built-in.o,
# it has been linked into the upper level built-in.o
cmd_ar_target = rm -f $@; $(AR) rcT$(KBUILD_ARFLAGS) $@ \
$(filter-out $(libs-y), $(KBUILD_ZEPHYR_MAIN))
libzephyr.a: $(zephyr-deps)
$(call cmd,ar_target)
@ -793,6 +801,7 @@ quiet_cmd_create-lnk = LINK $@
echo "$(app-y)"; \
echo "libzephyr.a"; \
echo "$(LINKFLAGPREFIX)--no-whole-archive"; \
echo "$(filter %/lib.a, $(libs-y))"; \
echo "$(objtree)/arch/$(ARCH)/core/offsets/offsets.o"; \
echo "$(LINKFLAGPREFIX)--end-group"; \
echo "$(LIB_INCLUDE_DIR) $(LINK_LIBS)"; \

View file

@ -4,20 +4,24 @@ asflags-y := ${ccflags-y}
obj-y =
obj-y += $(strip \
version.o \
)
lib-y =
lib-y += $(strip \
sys_clock.o \
thread.o \
init.o \
sem.o \
version.o \
device.o \
thread_abort.o \
)
obj-y += $(strip \
lib-y += $(strip \
sched.o \
mutex.o \
)
obj-y += $(strip \
lib-y += $(strip \
lifo.o \
fifo.o \
stack.o \
@ -31,15 +35,15 @@ obj-y += $(strip \
offload.o \
)
obj-$(CONFIG_INT_LATENCY_BENCHMARK) += int_latency_bench.o
obj-$(CONFIG_STACK_CANARIES) += compiler_stack_protect.o
obj-$(CONFIG_SYS_POWER_MANAGEMENT) += idle.o
obj-$(CONFIG_NANO_TIMERS) += timer.o
obj-$(CONFIG_KERNEL_EVENT_LOGGER) += event_logger.o
obj-$(CONFIG_KERNEL_EVENT_LOGGER) += kernel_event_logger.o
obj-$(CONFIG_RING_BUFFER) += ring_buffer.o
obj-$(CONFIG_ATOMIC_OPERATIONS_C) += atomic_c.o
obj-$(CONFIG_ERRNO) += errno.o
obj-$(CONFIG_NANO_WORKQUEUE) += work_q.o
lib-$(CONFIG_INT_LATENCY_BENCHMARK) += int_latency_bench.o
lib-$(CONFIG_STACK_CANARIES) += compiler_stack_protect.o
lib-$(CONFIG_SYS_POWER_MANAGEMENT) += idle.o
lib-$(CONFIG_NANO_TIMERS) += timer.o
lib-$(CONFIG_KERNEL_EVENT_LOGGER) += event_logger.o
lib-$(CONFIG_KERNEL_EVENT_LOGGER) += kernel_event_logger.o
lib-$(CONFIG_RING_BUFFER) += ring_buffer.o
lib-$(CONFIG_ATOMIC_OPERATIONS_C) += atomic_c.o
lib-$(CONFIG_ERRNO) += errno.o
lib-$(CONFIG_NANO_WORKQUEUE) += work_q.o
obj-y += legacy/