Christian Ullrich
2018-Mar-04 18:32 UTC
"Cross" building for same architecture, different CPUTYPE
* 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 buildsDoesn'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
Marek Zarychta
2018-Mar-05 16:47 UTC
"Cross" building for same architecture, different CPUTYPE
On Sun, Mar 04, 2018 at 07:32:09PM +0100, Christian Ullrich wrote:> * 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.Maybe you should try to build using different make.conf(5) files for each build? It can be improved WITH_META_MODE=YES enabled in src-env.conf (requires loading filemon(4) first) and two differnt object directories mounted in /usr/obj with nullfs(5). I do such crossbuilds for some time compiling kernel and world for core2 on admfam10. Full build of STABLE takes usually < 10 minutes on 8 years old Phenom II. -- Marek Zarychta