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