1
0
mirror of https://git.FreeBSD.org/src.git synced 2026-06-02 11:24:32 +00:00

universe: emit warning instead of error for bad/missing KERNCONF

When doing a large `make universe` build with multiple KERNCONFS,
it should not be an error when a particular target has a missing
KERNCONF.

In this example,

```
$ make universe TARGETS='arm64 riscv' KERNCONFS='QEMU VIRT'
```

Currently, arm64 does not have a QEMU conf, and riscv
does not have a VIRT conf. However, this command should still
succeed instead of failing with the following message:

```
make[2]: /usr/src/Makefile:767: Target architecture for riscv/conf/VIRT unknown.  config(8) likely too old.
	in .for loop from /usr/src/Makefile:761 with kernel = VIRT
	in make[2] in directory "/usr/src"

make[2]: stopped making "universe_kernels" in /usr/src
```

Since the opposite is true, we should build whatever confs are available
from the requested list of KERNCONFS, while making sure to still
emit warnings along the way.

Reviewed by:	imp
Approved by:	lwhsu (mentor), emaste (mentor)
MFC after:	3 days
Differential Revision:	https://reviews.freebsd.org/D55571
This commit is contained in:
Siva Mahadevan
2026-05-21 10:08:32 -04:00
parent 02ef0b6d76
commit c170a96dbe
+5 -1
View File
@@ -758,12 +758,16 @@ KERNCONFS!= cd ${KERNSRCDIR}/${TARGET}/conf && \
${_THINNER} ${_THINNER}
universe_kernconfs: universe_kernels_prologue .PHONY universe_kernconfs: universe_kernels_prologue .PHONY
.for kernel in ${KERNCONFS} .for kernel in ${KERNCONFS}
.if !exists(${KERNSRCDIR}/${TARGET}/conf/${kernel})
.warning ${TARGET}/conf/${kernel} missing; skipping.
.else
TARGET_ARCH_${kernel}!= cd ${KERNSRCDIR}/${TARGET}/conf && \ TARGET_ARCH_${kernel}!= cd ${KERNSRCDIR}/${TARGET}/conf && \
env PATH=${HOST_OBJTOP}/tmp/legacy/bin:${PATH:Q} \ env PATH=${HOST_OBJTOP}/tmp/legacy/bin:${PATH:Q} \
config -m ${KERNSRCDIR}/${TARGET}/conf/${kernel} 2> /dev/null | \ config -m ${KERNSRCDIR}/${TARGET}/conf/${kernel} 2> /dev/null | \
grep -v WARNING: | cut -f 2 grep -v WARNING: | cut -f 2
.if empty(TARGET_ARCH_${kernel}) .if empty(TARGET_ARCH_${kernel})
.error Target architecture for ${TARGET}/conf/${kernel} unknown. config(8) likely too old. .error Target architecture for ${TARGET}/conf/${kernel} cannot be determined, kernconf file may be invalid!
.endif
.endif .endif
universe_kernconfs_${TARGET_ARCH_${kernel}}: universe_kernconf_${TARGET}_${kernel} universe_kernconfs_${TARGET_ARCH_${kernel}}: universe_kernconf_${TARGET}_${kernel}
universe_kernconf_${TARGET}_${kernel}: .MAKE universe_kernconf_${TARGET}_${kernel}: .MAKE