xref: /openbmc/linux/tools/include/nolibc/Makefile (revision 24326164)
1*24326164SWilly Tarreau# SPDX-License-Identifier: GPL-2.0
2*24326164SWilly Tarreau# Makefile for nolibc installation and tests
3*24326164SWilly Tarreauinclude ../../scripts/Makefile.include
4*24326164SWilly Tarreau
5*24326164SWilly Tarreau# we're in ".../tools/include/nolibc"
6*24326164SWilly Tarreauifeq ($(srctree),)
7*24326164SWilly Tarreausrctree := $(patsubst %/tools/include/,%,$(dir $(CURDIR)))
8*24326164SWilly Tarreauendif
9*24326164SWilly Tarreau
10*24326164SWilly Tarreaunolibc_arch := $(patsubst arm64,aarch64,$(ARCH))
11*24326164SWilly Tarreauarch_file := arch-$(nolibc_arch).h
12*24326164SWilly Tarreauall_files := ctype.h errno.h nolibc.h signal.h std.h stdio.h stdlib.h string.h \
13*24326164SWilly Tarreau             sys.h time.h types.h unistd.h
14*24326164SWilly Tarreau
15*24326164SWilly Tarreau# install all headers needed to support a bare-metal compiler
16*24326164SWilly Tarreauall:
17*24326164SWilly Tarreau
18*24326164SWilly Tarreau# Note: when ARCH is "x86" we concatenate both x86_64 and i386
19*24326164SWilly Tarreauheaders:
20*24326164SWilly Tarreau	$(Q)mkdir -p $(OUTPUT)sysroot
21*24326164SWilly Tarreau	$(Q)mkdir -p $(OUTPUT)sysroot/include
22*24326164SWilly Tarreau	$(Q)cp $(all_files) $(OUTPUT)sysroot/include/
23*24326164SWilly Tarreau	$(Q)if [ "$(ARCH)" = "x86" ]; then      \
24*24326164SWilly Tarreau		sed -e                          \
25*24326164SWilly Tarreau		  's,^#ifndef _NOLIBC_ARCH_X86_64_H,#if !defined(_NOLIBC_ARCH_X86_64_H) \&\& defined(__x86_64__),' \
26*24326164SWilly Tarreau		  arch-x86_64.h;                \
27*24326164SWilly Tarreau		sed -e                          \
28*24326164SWilly Tarreau		  's,^#ifndef _NOLIBC_ARCH_I386_H,#if !defined(_NOLIBC_ARCH_I386_H) \&\& !defined(__x86_64__),' \
29*24326164SWilly Tarreau		  arch-i386.h;                  \
30*24326164SWilly Tarreau	elif [ -e "$(arch_file)" ]; then        \
31*24326164SWilly Tarreau		cat $(arch_file);               \
32*24326164SWilly Tarreau	else                                    \
33*24326164SWilly Tarreau		echo "Fatal: architecture $(ARCH) not yet supported by nolibc." >&2; \
34*24326164SWilly Tarreau		exit 1;                         \
35*24326164SWilly Tarreau	fi > $(OUTPUT)sysroot/include/arch.h
36*24326164SWilly Tarreau
37*24326164SWilly Tarreauheaders_standalone: headers
38*24326164SWilly Tarreau	$(Q)$(MAKE) -C $(srctree) headers
39*24326164SWilly Tarreau	$(Q)$(MAKE) -C $(srctree) headers_install INSTALL_HDR_PATH=$(OUTPUT)/sysroot
40*24326164SWilly Tarreau
41*24326164SWilly Tarreauclean:
42*24326164SWilly Tarreau	$(call QUIET_CLEAN, nolibc) rm -rf "$(OUTPUT)sysroot"
43