linux-yocto/tools/include/nolibc/Makefile
Thomas Weißschuh ae1f550efc tools/nolibc: add stdbool.h header
stdbool.h is very simple.
Provide an implementation for the user convenience.

Acked-by: Willy Tarreau <w@1wt.eu>
Link: https://lore.kernel.org/r/20240725-nolibc-stdbool-v1-1-a6ee2c80bcde@weissschuh.net
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
2024-07-29 07:52:57 +02:00

2.5 KiB

SPDX-License-Identifier: GPL-2.0

Makefile for nolibc installation and tests

include ../../scripts/Makefile.include

we're in ".../tools/include/nolibc"

ifeq ($(srctree),) srctree := $(patsubst %/tools/include/,%,$(dir $(CURDIR))) endif

when run as make -C tools/ nolibc_ the arch is not set

ifeq ($(ARCH),) include $(srctree)/scripts/subarch.include ARCH = $(SUBARCH) endif

OUTPUT is only set when run from the main makefile, otherwise

it defaults to this nolibc directory.

OUTPUT ?= $(CURDIR)/

ifeq ($(V),1) Q= else Q=@ endif

nolibc_arch := $(patsubst arm64,aarch64,$(ARCH)) arch_file := arch-$(nolibc_arch).h all_files :=
compiler.h
crt.h
ctype.h
errno.h
nolibc.h
signal.h
stackprotector.h
std.h
stdarg.h
stdbool.h
stdint.h
stdlib.h
string.h
sys.h
time.h
types.h
unistd.h
stdio.h \

install all headers needed to support a bare-metal compiler

all: headers

install: help

help: @echo "Supported targets under nolibc:" @echo " all call "headers"" @echo " clean clean the sysroot" @echo " headers prepare a sysroot in tools/include/nolibc/sysroot" @echo " headers_standalone like "headers", and also install kernel headers" @echo " help this help" @echo "" @echo "These targets may also be called from tools as "make nolibc_"." @echo "" @echo "Currently using the following variables:" @echo " ARCH = $(ARCH)" @echo " OUTPUT = $(OUTPUT)" @echo ""

Note: when ARCH is "x86" we concatenate both x86_64 and i386

headers: $(Q)mkdir -p $(OUTPUT)sysroot $(Q)mkdir -p $(OUTPUT)sysroot/include $(Q)cp $(all_files) $(OUTPUT)sysroot/include/ $(Q)if [ "$(ARCH)" = "x86" ]; then
sed -e
's,^#ifndef _NOLIBC_ARCH_X86_64_H,#if !defined(_NOLIBC_ARCH_X86_64_H) && defined(x86_64),'
arch-x86_64.h;
sed -e
's,^#ifndef _NOLIBC_ARCH_I386_H,#if !defined(_NOLIBC_ARCH_I386_H) && !defined(x86_64),'
arch-i386.h;
elif [ -e "$(arch_file)" ]; then
cat $(arch_file);
else
echo "Fatal: architecture $(ARCH) not yet supported by nolibc." >&2;
exit 1;
fi > $(OUTPUT)sysroot/include/arch.h

headers_standalone: headers $(Q)$(MAKE) -C $(srctree) headers $(Q)$(MAKE) -C $(srctree) headers_install INSTALL_HDR_PATH=$(OUTPUT)sysroot

clean: $(call QUIET_CLEAN, nolibc) rm -rf "$(OUTPUT)sysroot"