Commit | Line | Data |
---|---|---|
362aecb2 WT |
1 | # SPDX-License-Identifier: GPL-2.0 |
2 | # Makefile for nolibc tests | |
1a1200b6 TW |
3 | # we're in ".../tools/testing/selftests/nolibc" |
4 | ifeq ($(srctree),) | |
5 | srctree := $(patsubst %/tools/testing/selftests/,%,$(dir $(CURDIR))) | |
6 | endif | |
7 | ||
1a1200b6 | 8 | include $(srctree)/tools/scripts/utilities.mak |
1bd75aeb TW |
9 | # We need this for the "__cc-option" macro. |
10 | include $(srctree)/scripts/Makefile.compiler | |
362aecb2 | 11 | |
69620b3a TW |
12 | ifneq ($(O),) |
13 | ifneq ($(call is-absolute,$(O)),y) | |
14 | $(error Only absolute O= parameters are supported) | |
15 | endif | |
ae574ae3 TW |
16 | objtree := $(O) |
17 | else | |
18 | objtree ?= $(srctree) | |
69620b3a TW |
19 | endif |
20 | ||
362aecb2 WT |
21 | ifeq ($(ARCH),) |
22 | include $(srctree)/scripts/subarch.include | |
23 | ARCH = $(SUBARCH) | |
24 | endif | |
25 | ||
1bd75aeb TW |
26 | cc-option = $(call __cc-option, $(CC),$(CLANG_CROSS_FLAGS),$(1),$(2)) |
27 | ||
c6c3734f ZW |
28 | # XARCH extends the kernel's ARCH with a few variants of the same |
29 | # architecture that only differ by the configuration, the toolchain | |
30 | # and the Qemu program used. It is copied as-is into ARCH except for | |
31 | # a few specific values which are mapped like this: | |
32 | # | |
33 | # XARCH | ARCH | config | |
34 | # -------------|-----------|------------------------- | |
35 | # ppc | powerpc | 32 bits | |
36 | # ppc64 | powerpc | 64 bits big endian | |
37 | # ppc64le | powerpc | 64 bits little endian | |
38 | # | |
39 | # It is recommended to only use XARCH, though it does not harm if | |
40 | # ARCH is already set. For simplicity, ARCH is sufficient for all | |
41 | # architectures where both are equal. | |
42 | ||
43 | # configure default variants for target kernel supported architectures | |
587e9845 | 44 | XARCH_powerpc = ppc |
c4c20a7d | 45 | XARCH_mips = mips32le |
a47b4b9f | 46 | XARCH_riscv = riscv64 |
c6c3734f ZW |
47 | XARCH = $(or $(XARCH_$(ARCH)),$(ARCH)) |
48 | ||
49 | # map from user input variants to their kernel supported architectures | |
cb839e0c | 50 | ARCH_armthumb = arm |
587e9845 | 51 | ARCH_ppc = powerpc |
faeb4e09 | 52 | ARCH_ppc64 = powerpc |
8a5040cb | 53 | ARCH_ppc64le = powerpc |
c4c20a7d | 54 | ARCH_mips32le = mips |
b4b9fb91 | 55 | ARCH_mips32be = mips |
60fe1823 | 56 | ARCH_riscv32 = riscv |
a47b4b9f | 57 | ARCH_riscv64 = riscv |
3d1e67c6 | 58 | ARCH_s390x = s390 |
8e193029 TW |
59 | ARCH_sparc32 = sparc |
60 | ARCH_sparc64 = sparc | |
c6c3734f ZW |
61 | ARCH := $(or $(ARCH_$(XARCH)),$(XARCH)) |
62 | ||
d248cabf | 63 | # kernel image names by architecture |
82e44139 FC |
64 | IMAGE_i386 = arch/x86/boot/bzImage |
65 | IMAGE_x86_64 = arch/x86/boot/bzImage | |
66 | IMAGE_x86 = arch/x86/boot/bzImage | |
67 | IMAGE_arm64 = arch/arm64/boot/Image | |
68 | IMAGE_arm = arch/arm/boot/zImage | |
cb839e0c | 69 | IMAGE_armthumb = arch/arm/boot/zImage |
c4c20a7d | 70 | IMAGE_mips32le = vmlinuz |
b4b9fb91 | 71 | IMAGE_mips32be = vmlinuz |
587e9845 | 72 | IMAGE_ppc = vmlinux |
faeb4e09 | 73 | IMAGE_ppc64 = vmlinux |
8a5040cb | 74 | IMAGE_ppc64le = arch/powerpc/boot/zImage |
82e44139 | 75 | IMAGE_riscv = arch/riscv/boot/Image |
60fe1823 | 76 | IMAGE_riscv32 = arch/riscv/boot/Image |
a47b4b9f | 77 | IMAGE_riscv64 = arch/riscv/boot/Image |
3d1e67c6 | 78 | IMAGE_s390x = arch/s390/boot/bzImage |
9c812b01 | 79 | IMAGE_s390 = arch/s390/boot/bzImage |
6cd77def | 80 | IMAGE_loongarch = arch/loongarch/boot/vmlinuz.efi |
8e193029 TW |
81 | IMAGE_sparc32 = arch/sparc/boot/image |
82 | IMAGE_sparc64 = arch/sparc/boot/image | |
66a4f9bb | 83 | IMAGE_m68k = vmlinux |
69620b3a | 84 | IMAGE = $(objtree)/$(IMAGE_$(XARCH)) |
82e44139 | 85 | IMAGE_NAME = $(notdir $(IMAGE)) |
d248cabf | 86 | |
5c43fd79 | 87 | # default kernel configurations that appear to be usable |
82e44139 FC |
88 | DEFCONFIG_i386 = defconfig |
89 | DEFCONFIG_x86_64 = defconfig | |
90 | DEFCONFIG_x86 = defconfig | |
91 | DEFCONFIG_arm64 = defconfig | |
92 | DEFCONFIG_arm = multi_v7_defconfig | |
cb839e0c | 93 | DEFCONFIG_armthumb = multi_v7_defconfig |
c4c20a7d | 94 | DEFCONFIG_mips32le = malta_defconfig |
e16214dc | 95 | DEFCONFIG_mips32be = malta_defconfig generic/eb.config |
587e9845 | 96 | DEFCONFIG_ppc = pmac32_defconfig |
faeb4e09 | 97 | DEFCONFIG_ppc64 = powernv_be_defconfig |
8a5040cb | 98 | DEFCONFIG_ppc64le = powernv_defconfig |
82e44139 | 99 | DEFCONFIG_riscv = defconfig |
60fe1823 | 100 | DEFCONFIG_riscv32 = rv32_defconfig |
a47b4b9f | 101 | DEFCONFIG_riscv64 = defconfig |
3d1e67c6 | 102 | DEFCONFIG_s390x = defconfig |
9c812b01 | 103 | DEFCONFIG_s390 = defconfig compat.config |
6cd77def | 104 | DEFCONFIG_loongarch = defconfig |
8e193029 TW |
105 | DEFCONFIG_sparc32 = sparc32_defconfig |
106 | DEFCONFIG_sparc64 = sparc64_defconfig | |
66a4f9bb | 107 | DEFCONFIG_m68k = virt_defconfig |
c6c3734f | 108 | DEFCONFIG = $(DEFCONFIG_$(XARCH)) |
5c43fd79 | 109 | |
66a4f9bb | 110 | EXTRACONFIG_m68k = -e CONFIG_BLK_DEV_INITRD |
3ab1e9db | 111 | EXTRACONFIG = $(EXTRACONFIG_$(XARCH)) |
256dc733 TW |
112 | EXTRACONFIG_arm = -e CONFIG_NAMESPACES |
113 | EXTRACONFIG_armthumb = -e CONFIG_NAMESPACES | |
3ab1e9db | 114 | |
662ea60e WT |
115 | # optional tests to run (default = all) |
116 | TEST = | |
117 | ||
118 | # QEMU_ARCH: arch names used by qemu | |
82e44139 FC |
119 | QEMU_ARCH_i386 = i386 |
120 | QEMU_ARCH_x86_64 = x86_64 | |
121 | QEMU_ARCH_x86 = x86_64 | |
122 | QEMU_ARCH_arm64 = aarch64 | |
123 | QEMU_ARCH_arm = arm | |
cb839e0c | 124 | QEMU_ARCH_armthumb = arm |
c4c20a7d | 125 | QEMU_ARCH_mips32le = mipsel # works with malta_defconfig |
b4b9fb91 | 126 | QEMU_ARCH_mips32be = mips |
587e9845 | 127 | QEMU_ARCH_ppc = ppc |
faeb4e09 | 128 | QEMU_ARCH_ppc64 = ppc64 |
17362f3d | 129 | QEMU_ARCH_ppc64le = ppc64 |
82e44139 | 130 | QEMU_ARCH_riscv = riscv64 |
60fe1823 | 131 | QEMU_ARCH_riscv32 = riscv32 |
a47b4b9f | 132 | QEMU_ARCH_riscv64 = riscv64 |
3d1e67c6 | 133 | QEMU_ARCH_s390x = s390x |
9c812b01 | 134 | QEMU_ARCH_s390 = s390x |
6cd77def | 135 | QEMU_ARCH_loongarch = loongarch64 |
8e193029 TW |
136 | QEMU_ARCH_sparc32 = sparc |
137 | QEMU_ARCH_sparc64 = sparc64 | |
66a4f9bb | 138 | QEMU_ARCH_m68k = m68k |
c6c3734f | 139 | QEMU_ARCH = $(QEMU_ARCH_$(XARCH)) |
662ea60e | 140 | |
d7233e2b TW |
141 | QEMU_ARCH_USER_ppc64le = ppc64le |
142 | QEMU_ARCH_USER = $(or $(QEMU_ARCH_USER_$(XARCH)),$(QEMU_ARCH_$(XARCH))) | |
143 | ||
bdeeeaba TW |
144 | QEMU_BIOS_DIR = /usr/share/edk2/ |
145 | QEMU_BIOS_loongarch = $(QEMU_BIOS_DIR)/loongarch64/OVMF_CODE.fd | |
146 | ||
147 | ifneq ($(QEMU_BIOS_$(XARCH)),) | |
148 | QEMU_ARGS_BIOS = -bios $(QEMU_BIOS_$(XARCH)) | |
149 | endif | |
150 | ||
662ea60e | 151 | # QEMU_ARGS : some arch-specific args to pass to qemu |
82e44139 FC |
152 | QEMU_ARGS_i386 = -M pc -append "console=ttyS0,9600 i8042.noaux panic=-1 $(TEST:%=NOLIBC_TEST=%)" |
153 | QEMU_ARGS_x86_64 = -M pc -append "console=ttyS0,9600 i8042.noaux panic=-1 $(TEST:%=NOLIBC_TEST=%)" | |
154 | QEMU_ARGS_x86 = -M pc -append "console=ttyS0,9600 i8042.noaux panic=-1 $(TEST:%=NOLIBC_TEST=%)" | |
155 | QEMU_ARGS_arm64 = -M virt -cpu cortex-a53 -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)" | |
156 | QEMU_ARGS_arm = -M virt -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)" | |
cb839e0c | 157 | QEMU_ARGS_armthumb = -M virt -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)" |
c4c20a7d | 158 | QEMU_ARGS_mips32le = -M malta -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)" |
b4b9fb91 | 159 | QEMU_ARGS_mips32be = -M malta -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)" |
587e9845 | 160 | QEMU_ARGS_ppc = -M g3beige -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" |
faeb4e09 | 161 | QEMU_ARGS_ppc64 = -M powernv -append "console=hvc0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" |
8a5040cb | 162 | QEMU_ARGS_ppc64le = -M powernv -append "console=hvc0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" |
82e44139 | 163 | QEMU_ARGS_riscv = -M virt -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" |
60fe1823 | 164 | QEMU_ARGS_riscv32 = -M virt -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" |
a47b4b9f | 165 | QEMU_ARGS_riscv64 = -M virt -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" |
3d1e67c6 | 166 | QEMU_ARGS_s390x = -M s390-ccw-virtio -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" |
9c812b01 | 167 | QEMU_ARGS_s390 = -M s390-ccw-virtio -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" |
6cd77def | 168 | QEMU_ARGS_loongarch = -M virt -append "console=ttyS0,115200 panic=-1 $(TEST:%=NOLIBC_TEST=%)" |
8e193029 TW |
169 | QEMU_ARGS_sparc32 = -M SS-5 -m 256M -append "console=ttyS0,115200 panic=-1 $(TEST:%=NOLIBC_TEST=%)" |
170 | QEMU_ARGS_sparc64 = -M sun4u -append "console=ttyS0,115200 panic=-1 $(TEST:%=NOLIBC_TEST=%)" | |
66a4f9bb | 171 | QEMU_ARGS_m68k = -M virt -append "console=ttyGF0,115200 panic=-1 $(TEST:%=NOLIBC_TEST=%)" |
ad0558f3 | 172 | QEMU_ARGS = -m 1G $(QEMU_ARGS_$(XARCH)) $(QEMU_ARGS_BIOS) $(QEMU_ARGS_EXTRA) |
662ea60e | 173 | |
362aecb2 WT |
174 | # OUTPUT is only set when run from the main makefile, otherwise |
175 | # it defaults to this nolibc directory. | |
176 | OUTPUT ?= $(CURDIR)/ | |
177 | ||
178 | ifeq ($(V),1) | |
179 | Q= | |
180 | else | |
181 | Q=@ | |
182 | endif | |
183 | ||
95315486 | 184 | CFLAGS_i386 = $(call cc-option,-m32) |
f8bedb30 | 185 | CFLAGS_arm = -marm |
cb839e0c | 186 | CFLAGS_armthumb = -mthumb -march=armv6t2 |
587e9845 | 187 | CFLAGS_ppc = -m32 -mbig-endian -mno-vsx $(call cc-option,-mmultiple) |
faeb4e09 | 188 | CFLAGS_ppc64 = -m64 -mbig-endian -mno-vsx $(call cc-option,-mmultiple) |
8a5040cb | 189 | CFLAGS_ppc64le = -m64 -mlittle-endian -mno-vsx $(call cc-option,-mabi=elfv2) |
3d1e67c6 | 190 | CFLAGS_s390x = -m64 |
9c812b01 | 191 | CFLAGS_s390 = -m31 |
54410245 | 192 | CFLAGS_mips32le = -EL -mabi=32 -fPIC |
b4b9fb91 | 193 | CFLAGS_mips32be = -EB -mabi=32 |
8e193029 | 194 | CFLAGS_sparc32 = $(call cc-option,-m32) |
fd293cb8 TW |
195 | ifeq ($(origin XARCH),command line) |
196 | CFLAGS_XARCH = $(CFLAGS_$(XARCH)) | |
197 | endif | |
0093c2da | 198 | CFLAGS_STACKPROTECTOR ?= $(call cc-option,-mstack-protector-guard=global $(call cc-option,-fstack-protector-all)) |
8509b5c9 | 199 | CFLAGS_SANITIZER ?= $(call cc-option,-fsanitize=undefined -fsanitize-trap=all) |
45f65f8d | 200 | CFLAGS ?= -Os -fno-ident -fno-asynchronous-unwind-tables -std=c89 -W -Wall -Wextra \ |
4da4e35e | 201 | $(call cc-option,-fno-stack-protector) $(call cc-option,-Wmissing-prototypes) \ |
8509b5c9 | 202 | $(CFLAGS_XARCH) $(CFLAGS_STACKPROTECTOR) $(CFLAGS_SANITIZER) $(CFLAGS_EXTRA) |
711edef8 | 203 | LDFLAGS := |
362aecb2 | 204 | |
801cf69c TW |
205 | LIBGCC := -lgcc |
206 | ||
207 | ifneq ($(LLVM),) | |
208 | # Not needed for clang | |
209 | LIBGCC := | |
210 | endif | |
211 | ||
ae574ae3 TW |
212 | # Modify CFLAGS based on LLVM= |
213 | include $(srctree)/tools/scripts/Makefile.include | |
214 | ||
8404af7e TW |
215 | # GCC uses "s390", clang "systemz" |
216 | CLANG_CROSS_FLAGS := $(subst --target=s390-linux,--target=systemz-linux,$(CLANG_CROSS_FLAGS)) | |
217 | ||
4beb9be8 | 218 | REPORT ?= awk '/\[OK\][\r]*$$/{p++} /\[FAIL\][\r]*$$/{if (!f) printf("\n"); f++; print;} /\[SKIPPED\][\r]*$$/{s++} \ |
7d92e893 | 219 | END{ printf("\n%3d test(s): %3d passed, %3d skipped, %3d failed => status: ", p+s+f, p, s, f); \ |
ddae1d7f | 220 | if (f || !p) printf("failure\n"); else if (s) printf("warning\n"); else printf("success\n");; \ |
7d92e893 | 221 | printf("\nSee all results in %s\n", ARGV[1]); }' |
5ef95663 | 222 | |
ffc297fe WT |
223 | help: |
224 | @echo "Supported targets under selftests/nolibc:" | |
45839d09 TW |
225 | @echo " all call the \"run\" target below" |
226 | @echo " help this help" | |
227 | @echo " sysroot create the nolibc sysroot here (uses \$$ARCH)" | |
228 | @echo " nolibc-test build the executable (uses \$$CC and \$$CROSS_COMPILE)" | |
229 | @echo " libc-test build an executable using the compiler's default libc instead" | |
230 | @echo " run-user runs the executable under QEMU (uses \$$XARCH, \$$TEST)" | |
231 | @echo " initramfs.cpio prepare the initramfs archive with nolibc-test" | |
232 | @echo " initramfs prepare the initramfs tree with nolibc-test" | |
233 | @echo " defconfig create a fresh new default config (uses \$$XARCH)" | |
234 | @echo " kernel (re)build the kernel (uses \$$XARCH)" | |
235 | @echo " kernel-standalone (re)build the kernel with the initramfs (uses \$$XARCH)" | |
236 | @echo " run runs the kernel in QEMU after building it (uses \$$XARCH, \$$TEST)" | |
237 | @echo " rerun runs a previously prebuilt kernel in QEMU (uses \$$XARCH, \$$TEST)" | |
238 | @echo " clean clean the sysroot, initramfs, build and output files" | |
ffc297fe WT |
239 | @echo "" |
240 | @echo "The output file is \"run.out\". Test ranges may be passed using \$$TEST." | |
241 | @echo "" | |
242 | @echo "Currently using the following variables:" | |
243 | @echo " ARCH = $(ARCH)" | |
c6c3734f | 244 | @echo " XARCH = $(XARCH)" |
ffc297fe WT |
245 | @echo " CROSS_COMPILE = $(CROSS_COMPILE)" |
246 | @echo " CC = $(CC)" | |
247 | @echo " OUTPUT = $(OUTPUT)" | |
248 | @echo " TEST = $(TEST)" | |
c6c3734f ZW |
249 | @echo " QEMU_ARCH = $(if $(QEMU_ARCH),$(QEMU_ARCH),UNKNOWN_ARCH) [determined from \$$XARCH]" |
250 | @echo " IMAGE_NAME = $(if $(IMAGE_NAME),$(IMAGE_NAME),UNKNOWN_ARCH) [determined from \$$XARCH]" | |
ffc297fe WT |
251 | @echo "" |
252 | ||
253 | all: run | |
362aecb2 | 254 | |
b25c5284 WT |
255 | sysroot: sysroot/$(ARCH)/include |
256 | ||
cdbf0f19 | 257 | sysroot/$(ARCH)/include: |
4a95be7e | 258 | $(Q)rm -rf sysroot/$(ARCH) sysroot/sysroot |
b25c5284 | 259 | $(QUIET_MKDIR)mkdir -p sysroot |
69620b3a | 260 | $(Q)$(MAKE) -C $(srctree) outputmakefile |
443c6467 | 261 | $(Q)$(MAKE) -C $(srctree)/tools/include/nolibc ARCH=$(ARCH) OUTPUT=$(CURDIR)/sysroot/ headers_standalone headers_check |
b25c5284 WT |
262 | $(Q)mv sysroot/sysroot sysroot/$(ARCH) |
263 | ||
850fad7d | 264 | ifneq ($(NOLIBC_SYSROOT),0) |
b8c60e8f | 265 | nolibc-test: nolibc-test.c nolibc-test-linkage.c sysroot/$(ARCH)/include |
362aecb2 | 266 | $(QUIET_CC)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ \ |
801cf69c | 267 | -nostdlib -nostdinc -static -Isysroot/$(ARCH)/include nolibc-test.c nolibc-test-linkage.c $(LIBGCC) |
850fad7d | 268 | else |
b8c60e8f | 269 | nolibc-test: nolibc-test.c nolibc-test-linkage.c |
850fad7d | 270 | $(QUIET_CC)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ \ |
801cf69c | 271 | -nostdlib -static -include $(srctree)/tools/include/nolibc/nolibc.h nolibc-test.c nolibc-test-linkage.c $(LIBGCC) |
850fad7d | 272 | endif |
362aecb2 | 273 | |
b8c60e8f TW |
274 | libc-test: nolibc-test.c nolibc-test-linkage.c |
275 | $(QUIET_CC)$(HOSTCC) -o $@ nolibc-test.c nolibc-test-linkage.c | |
fc82d7db | 276 | |
b8143407 | 277 | # local libc-test |
cfb672f9 ZW |
278 | run-libc-test: libc-test |
279 | $(Q)./libc-test > "$(CURDIR)/run.out" || : | |
280 | $(Q)$(REPORT) $(CURDIR)/run.out | |
281 | ||
b8143407 ZW |
282 | # local nolibc-test |
283 | run-nolibc-test: nolibc-test | |
284 | $(Q)./nolibc-test > "$(CURDIR)/run.out" || : | |
285 | $(Q)$(REPORT) $(CURDIR)/run.out | |
286 | ||
c54ba417 WT |
287 | # qemu user-land test |
288 | run-user: nolibc-test | |
d7233e2b | 289 | $(Q)qemu-$(QEMU_ARCH_USER) ./nolibc-test > "$(CURDIR)/run.out" || : |
5ef95663 | 290 | $(Q)$(REPORT) $(CURDIR)/run.out |
c54ba417 | 291 | |
45839d09 | 292 | initramfs.cpio: kernel nolibc-test |
69620b3a | 293 | $(QUIET_GEN)echo 'file /init nolibc-test 755 0 0' | $(objtree)/usr/gen_init_cpio - > initramfs.cpio |
45839d09 | 294 | |
362aecb2 WT |
295 | initramfs: nolibc-test |
296 | $(QUIET_MKDIR)mkdir -p initramfs | |
297 | $(call QUIET_INSTALL, initramfs/init) | |
298 | $(Q)cp nolibc-test initramfs/init | |
299 | ||
5c43fd79 | 300 | defconfig: |
25d5ef9e | 301 | $(Q)$(MAKE) -C $(srctree) ARCH=$(ARCH) CC=$(CC) CROSS_COMPILE=$(CROSS_COMPILE) $(DEFCONFIG) |
3ab1e9db TW |
302 | $(Q)if [ -n "$(EXTRACONFIG)" ]; then \ |
303 | $(srctree)/scripts/config --file $(objtree)/.config $(EXTRACONFIG); \ | |
304 | $(MAKE) -C $(srctree) ARCH=$(ARCH) CC=$(CC) CROSS_COMPILE=$(CROSS_COMPILE) olddefconfig < /dev/null; \ | |
305 | fi | |
5c43fd79 | 306 | |
d7d271ec | 307 | kernel: | defconfig |
89b212d4 | 308 | $(Q)$(MAKE) -C $(srctree) ARCH=$(ARCH) CC=$(CC) CROSS_COMPILE=$(CROSS_COMPILE) $(IMAGE_NAME) < /dev/null |
45839d09 | 309 | |
d7d271ec | 310 | kernel-standalone: initramfs | defconfig |
89b212d4 | 311 | $(Q)$(MAKE) -C $(srctree) ARCH=$(ARCH) CC=$(CC) CROSS_COMPILE=$(CROSS_COMPILE) $(IMAGE_NAME) CONFIG_INITRAMFS_SOURCE=$(CURDIR)/initramfs < /dev/null |
d248cabf | 312 | |
662ea60e | 313 | # run the tests after building the kernel |
45839d09 | 314 | run: kernel initramfs.cpio |
69620b3a | 315 | $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(IMAGE)" -initrd initramfs.cpio -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out" |
5ef95663 | 316 | $(Q)$(REPORT) $(CURDIR)/run.out |
662ea60e WT |
317 | |
318 | # re-run the tests from an existing kernel | |
319 | rerun: | |
69620b3a | 320 | $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(IMAGE)" -initrd initramfs.cpio -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out" |
5ef95663 | 321 | $(Q)$(REPORT) $(CURDIR)/run.out |
662ea60e | 322 | |
ce1bb82b ZW |
323 | # report with existing test log |
324 | report: | |
325 | $(Q)$(REPORT) $(CURDIR)/run.out | |
326 | ||
362aecb2 | 327 | clean: |
b25c5284 WT |
328 | $(call QUIET_CLEAN, sysroot) |
329 | $(Q)rm -rf sysroot | |
362aecb2 WT |
330 | $(call QUIET_CLEAN, nolibc-test) |
331 | $(Q)rm -f nolibc-test | |
fc82d7db TW |
332 | $(call QUIET_CLEAN, libc-test) |
333 | $(Q)rm -f libc-test | |
45839d09 TW |
334 | $(call QUIET_CLEAN, initramfs.cpio) |
335 | $(Q)rm -rf initramfs.cpio | |
362aecb2 WT |
336 | $(call QUIET_CLEAN, initramfs) |
337 | $(Q)rm -rf initramfs | |
662ea60e WT |
338 | $(call QUIET_CLEAN, run.out) |
339 | $(Q)rm -rf run.out | |
4a95be7e WT |
340 | |
341 | .PHONY: sysroot/$(ARCH)/include |