1 # SPDX-License-Identifier: GPL-2.0
2 # Makefile for nolibc installation and tests
3 include ..
/..
/scripts
/Makefile.
include
5 # we're in ".../tools/include/nolibc"
7 srctree
:= $(patsubst %/tools
/include/,%,$(dir $(CURDIR
)))
10 # when run as make -C tools/ nolibc_<foo> the arch is not set
12 include $(srctree
)/scripts
/subarch.
include
16 # OUTPUT is only set when run from the main makefile, otherwise
17 # it defaults to this nolibc directory.
26 nolibc_arch
:= $(patsubst arm64
,aarch64
,$(ARCH
))
27 arch_file
:= arch-
$(nolibc_arch
).h
49 # install all headers needed to support a bare-metal compiler
55 @echo
"Supported targets under nolibc:"
56 @echo
" all call \"headers\""
57 @echo
" clean clean the sysroot"
58 @echo
" headers prepare a sysroot in tools/include/nolibc/sysroot"
59 @echo
" headers_standalone like \"headers\", and also install kernel headers"
60 @echo
" help this help"
62 @echo
"These targets may also be called from tools as \"make nolibc_<target>\"."
64 @echo
"Currently using the following variables:"
65 @echo
" ARCH = $(ARCH)"
66 @echo
" OUTPUT = $(OUTPUT)"
69 # Note: when ARCH is "x86" we concatenate both x86_64 and i386
71 $(Q
)mkdir
-p
$(OUTPUT
)sysroot
72 $(Q
)mkdir
-p
$(OUTPUT
)sysroot
/include
73 $(Q
)cp
$(all_files
) $(OUTPUT
)sysroot
/include/
74 $(Q
)if
[ "$(ARCH)" = "x86" ]; then \
76 's,^#ifndef _NOLIBC_ARCH_X86_64_H,#if !defined(_NOLIBC_ARCH_X86_64_H) \&\& defined(__x86_64__),' \
79 's,^#ifndef _NOLIBC_ARCH_I386_H,#if !defined(_NOLIBC_ARCH_I386_H) \&\& !defined(__x86_64__),' \
81 elif
[ -e
"$(arch_file)" ]; then \
84 echo
"Fatal: architecture $(ARCH) not yet supported by nolibc." >&2; \
86 fi
> $(OUTPUT
)sysroot
/include/arch.h
88 headers_standalone
: headers
89 $(Q
)$(MAKE
) -C
$(srctree
) headers
90 $(Q
)$(MAKE
) -C
$(srctree
) headers_install INSTALL_HDR_PATH
=$(OUTPUT
)sysroot
93 $(call QUIET_CLEAN
, nolibc
) rm -rf
"$(OUTPUT)sysroot"