"Cross" building for same architecture, different CPUTYPE

Christian Ullrich chris at chrullrich.net
Sun Mar 4 18:32:17 UTC 2018


* Warner Losh wrote:

> On Sun, Mar 4, 2018 at 10:43 AM, Dimitry Andric <dim at freebsd.org 
> <mailto:dim at freebsd.org>> wrote:
> 
>     Again, this depends on how exactly you are overriding CPUTYPE.
> 
> I'd suggest *NOT* setting CPUTYPE and instead using TARGET_CPUTYPE to do 
> these sorts of things. CPUTYPE is known to only work on native builds 

Doesn't work either, sorry:

[chul at build /usr/obj/slm/usr/src/tmp/legacy/usr/bin]$ CCACHE_DISABLE=yes 
MAKEOBJDIRPREFIX=/usr/obj/slm make TARGET_CPUTYPE=slm -j4 buildworld 
buildkernel
...
[chul at build /usr/obj/slm/usr/src/tmp/legacy/usr/bin]$ objdump -d install 
| fgrep '(bad)' | wc -l
     8345

This objdump (in base, "GNU objdump 2.17.50 [FreeBSD] 2007-07-03") does 
not understand AVX, and most of the (bad)s are c4 and c5 prefixes, aka AVX.

For /usr/obj/slm/usr/src/lib/libc/libc.so.7 I get a lot of (bad), too, 
but these seem to be instructions that the chip actually has, only the 
old objdump does not know them.

The same happens with the TARGET_CPUTYPE in make.conf , and also if I 
spell it "silvermont". bsd.cpu.mk turns "slm" into "silvermont", but 
somehow it ends up as "-march=slm" on the command line again. gcc's docs 
say "-march=silvermont", and clang is apparently notorious for not 
providing any useful detail on what architecture variants it supports.

Should I try make release? I'm really interesting in something that will 
bring down build time, because buildworld/buildkernel on the Atom takes 
24 hours without ccache and at least 8 with.

-- 
Christian


More information about the freebsd-stable mailing list