Commit | Line | Data |
---|---|---|
24326164 WT |
1 | # SPDX-License-Identifier: GPL-2.0 |
2 | # Makefile for nolibc installation and tests | |
3 | include ../../scripts/Makefile.include | |
4 | ||
5 | # we're in ".../tools/include/nolibc" | |
6 | ifeq ($(srctree),) | |
7 | srctree := $(patsubst %/tools/include/,%,$(dir $(CURDIR))) | |
8 | endif | |
9 | ||
6a3ad243 WT |
10 | # when run as make -C tools/ nolibc_<foo> the arch is not set |
11 | ifeq ($(ARCH),) | |
12 | include $(srctree)/scripts/subarch.include | |
13 | ARCH = $(SUBARCH) | |
14 | endif | |
15 | ||
16 | # OUTPUT is only set when run from the main makefile, otherwise | |
17 | # it defaults to this nolibc directory. | |
18 | OUTPUT ?= $(CURDIR)/ | |
19 | ||
20 | ifeq ($(V),1) | |
21 | Q= | |
22 | else | |
23 | Q=@ | |
24 | endif | |
25 | ||
24326164 WT |
26 | nolibc_arch := $(patsubst arm64,aarch64,$(ARCH)) |
27 | arch_file := arch-$(nolibc_arch).h | |
e21a2eef | 28 | all_files := \ |
818924d1 | 29 | compiler.h \ |
17336755 | 30 | crt.h \ |
e21a2eef TW |
31 | ctype.h \ |
32 | errno.h \ | |
33 | nolibc.h \ | |
34 | signal.h \ | |
35 | stackprotector.h \ | |
36 | std.h \ | |
b56a9492 | 37 | stdarg.h \ |
e21a2eef TW |
38 | stdint.h \ |
39 | stdlib.h \ | |
40 | string.h \ | |
41 | sys.h \ | |
42 | time.h \ | |
43 | types.h \ | |
44 | unistd.h \ | |
45 | stdio.h \ | |
46 | ||
24326164 WT |
47 | |
48 | # install all headers needed to support a bare-metal compiler | |
fe20cad4 | 49 | all: headers |
24326164 | 50 | |
4f8126f3 WT |
51 | install: help |
52 | ||
53 | help: | |
54 | @echo "Supported targets under nolibc:" | |
55 | @echo " all call \"headers\"" | |
56 | @echo " clean clean the sysroot" | |
57 | @echo " headers prepare a sysroot in tools/include/nolibc/sysroot" | |
58 | @echo " headers_standalone like \"headers\", and also install kernel headers" | |
59 | @echo " help this help" | |
60 | @echo "" | |
61 | @echo "These targets may also be called from tools as \"make nolibc_<target>\"." | |
62 | @echo "" | |
63 | @echo "Currently using the following variables:" | |
64 | @echo " ARCH = $(ARCH)" | |
65 | @echo " OUTPUT = $(OUTPUT)" | |
66 | @echo "" | |
67 | ||
24326164 WT |
68 | # Note: when ARCH is "x86" we concatenate both x86_64 and i386 |
69 | headers: | |
70 | $(Q)mkdir -p $(OUTPUT)sysroot | |
71 | $(Q)mkdir -p $(OUTPUT)sysroot/include | |
72 | $(Q)cp $(all_files) $(OUTPUT)sysroot/include/ | |
73 | $(Q)if [ "$(ARCH)" = "x86" ]; then \ | |
74 | sed -e \ | |
75 | 's,^#ifndef _NOLIBC_ARCH_X86_64_H,#if !defined(_NOLIBC_ARCH_X86_64_H) \&\& defined(__x86_64__),' \ | |
76 | arch-x86_64.h; \ | |
77 | sed -e \ | |
78 | 's,^#ifndef _NOLIBC_ARCH_I386_H,#if !defined(_NOLIBC_ARCH_I386_H) \&\& !defined(__x86_64__),' \ | |
79 | arch-i386.h; \ | |
80 | elif [ -e "$(arch_file)" ]; then \ | |
81 | cat $(arch_file); \ | |
82 | else \ | |
83 | echo "Fatal: architecture $(ARCH) not yet supported by nolibc." >&2; \ | |
84 | exit 1; \ | |
85 | fi > $(OUTPUT)sysroot/include/arch.h | |
86 | ||
87 | headers_standalone: headers | |
88 | $(Q)$(MAKE) -C $(srctree) headers | |
6a3ad243 | 89 | $(Q)$(MAKE) -C $(srctree) headers_install INSTALL_HDR_PATH=$(OUTPUT)sysroot |
24326164 WT |
90 | |
91 | clean: | |
92 | $(call QUIET_CLEAN, nolibc) rm -rf "$(OUTPUT)sysroot" |