Kbuild: Build minimal libc as a static library.
This commit changes the way libc is built. Instead of building a hierarchy of objects linked into the microkernel, libc minimal is built as a static library and linked against the microkernel binary. The location of the libc is configurable with the variable KLIBC_DIR. This gives the flexibility to build against a different libc other than minimal. Change-Id: I9c0b6a684a9f3b407861aa387727c45eceb269c4 Signed-off-by: Juan Manuel Cruz <juan.m.cruz.alcaraz@linux.intel.com>
This commit is contained in:
parent
5fbb5f6420
commit
de1cec29d6
6
Makefile
6
Makefile
|
@ -7,7 +7,7 @@ PATCHLEVEL = 0
|
|||
SUBLEVEL = 0
|
||||
NAME = Tiny Mountain
|
||||
|
||||
export SOURCE_DIR PROJECT VPFILE
|
||||
export SOURCE_DIR PROJECT VPFILE KLIBC_DIR
|
||||
|
||||
# *DOCUMENTATION*
|
||||
# To see a list of typical targets execute "make help"
|
||||
|
@ -575,8 +575,10 @@ scripts: scripts_basic include/config/auto.conf include/config/tristate.conf \
|
|||
$(Q)$(MAKE) $(build)=$(@)
|
||||
|
||||
# Objects we will link into tinymountain / subdirs we need to visit
|
||||
core-y := arch/ kernel/ misc/ lib/ net/
|
||||
KLIBC_DIR := lib/libc/minimal
|
||||
core-y := arch/ kernel/ misc/ net/
|
||||
bsp-y := drivers/
|
||||
libs-y := $(KLIBC_DIR)/
|
||||
|
||||
ifneq ($(strip $(PROJECT)),)
|
||||
core-y += $(SOURCE_DIR)
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
obj-y = libc/
|
|
@ -1,5 +0,0 @@
|
|||
#FIXME This Makefile is skipping one level of recursivity
|
||||
# to avoid modifyng the file source/Makefile that
|
||||
# is needed by the current build system.
|
||||
|
||||
obj-y = minimal/source/
|
|
@ -1,60 +1,5 @@
|
|||
# Makefile - Makefile to build minimal stdlib
|
||||
|
||||
#
|
||||
# Copyright (c) 2014 Wind River Systems, Inc.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1) Redistributions of source code must retain the above copyright notice,
|
||||
# this list of conditions and the following disclaimer.
|
||||
#
|
||||
# 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the following disclaimer in the documentation
|
||||
# and/or other materials provided with the distribution.
|
||||
#
|
||||
# 3) Neither the name of Wind River Systems nor the names of its contributors
|
||||
# may be used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
|
||||
include $(subst \,/,${VXMICRO_BASE})/make/env/defs.base
|
||||
|
||||
LIB_NAME = minimal
|
||||
STDLIB = ${LIB_NAME}
|
||||
|
||||
vSTDLIB_HDR_PATH = ${vBASE}/lib/libc/${STDLIB}/include
|
||||
${LIB_NAME}_INCLUDE_DIR = ${vSTDLIB_HDR_PATH}
|
||||
|
||||
${LIB_NAME}_KERNEL = string stdout
|
||||
|
||||
${LIB_NAME}_SRC = $(foreach lib,${${LIB_NAME}_${STDLIB_TYPE}},$(wildcard source/${lib}/*.c))
|
||||
|
||||
${LIB_NAME}_CFLAGS += ${iSECTION_GC_CFLAGS}
|
||||
|
||||
.PHONY: aliases
|
||||
.DEFAULT_GOAL = aliases
|
||||
|
||||
include ${vMAKE}/target/make.library
|
||||
|
||||
ALIAS_DIR ?= ${vOUT_DIR}
|
||||
|
||||
aliases: ${ALIAS_DIR}/libc.a ${ALIAS_DIR}/libm.a
|
||||
|
||||
${ALIAS_DIR}/libm.a: ${ALIAS_DIR}/libc.a
|
||||
$q${HOS_CopyFile} $< $@
|
||||
|
||||
${ALIAS_DIR}/libc.a: ${vOUT_DIR}/lib${LIB_NAME}.a
|
||||
$q${HOS_CopyFile} $< $@
|
||||
lib-y := source/stdout/fprintf.o
|
||||
lib-y += source/stdout/prf.o
|
||||
lib-y += source/stdout/sprintf.o
|
||||
lib-y += source/stdout/stdout_console.o
|
||||
lib-y += source/string/string.o
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
obj-y = stdout/
|
||||
obj-y += string/
|
|
@ -1,4 +0,0 @@
|
|||
obj-y = fprintf.o
|
||||
obj-y += prf.o
|
||||
obj-y += sprintf.o
|
||||
obj-y += stdout_console.o
|
|
@ -1 +0,0 @@
|
|||
obj-y = string.o
|
|
@ -70,6 +70,7 @@ linker_command()
|
|||
initial_link()
|
||||
{
|
||||
${CC} -o ${1} @${2} -T ${3}
|
||||
cp ${KLIBC_DIR}/lib.a ${KLIBC_DIR}/libc.a
|
||||
}
|
||||
|
||||
#Generates IDT and merge them into final binary
|
||||
|
|
Loading…
Reference in a new issue