On Tue, 2 Feb 2010, Bill Nottingham wrote: > Panu Matilainen (pmatilai@xxxxxxxxxxxxxxx) said: >>> %{_host} is set by the rpm package in the macros file, %{_build} defaults >>> to the value of %{_host}. %{_target_platform} comes from --target on >>> the command line, plus the usual vendor/OS bits >>> >>> --target is what is set by rpm/mock. I think it defaults to %{_host} >>> if it's not otherwise specified, but we specify it when building for i686, >>> as we could theoretically still build i386 packages. >> >> Yup, and all wonderfully mixed up - rpm's idea of --target is something >> completely different from what auto*foo from this century thinks of it. >> Dunno if it ever was really valid but certainly not anymore. >> >> rpm >= 4.8.0 no longer sets the --target on %configure but that's been >> masked by the redhat-rpm-config version of %configure. That's been fixed >> too as of today. > > Is either %_host or %_build set based on --target? No... as there's no correct way to map rpm's --target to autotools expectations. --target does affect the optimization flags and bits like %{_libdir} value, so for the average --target i686 vs --target i386 style usage you'll get more or less what you'd expect. To put some sense into it requires turning the whole concept upside down in rpm, adding some new switches and most likely breaking some formerly "working" setups in the process. The whole host, build, target-triplet is three-way mixed up in rpm. With autotools --target out of the way for now, one possibility could be making changing what's currently %_host into %_build, and what's currently %_target into %_host. This would be correct (AFAICT) for native builds for default architecture, and "build arm binaries on x86" type of cross-builds. That's not correct for "sub-arch" builds, such as compiling i386 optimized binaries on i686 or i686 binaries on x86_64, as these are not cross-builds, and autotools will complain something like: checking build system type... x86_64-redhat-linux-gnu checking host system type... i686-redhat-linux-gnu checking target system type... i686-redhat-linux-gnu ... checking for i686-redhat-linux-strip... no checking for strip... strip configure: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@xxxxxxxx Another perhaps saner option would be changing what's currently %_host into %_build, taking --host switch out of default %configure flags and add a --host switch to rpmbuild, to be used for real cross-builds. And leave rpmbuild's --target more or less alone, ie it mostly means "optimize for this cpu". Would break some setups for sure, but I dont really see how it could be changed without breaking the 10+ years worth of broken "working" usage. Better ideas would be most welcome. - Panu - -- devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxxx https://admin.fedoraproject.org/mailman/listinfo/devel