Hallo Ralf, I think this is an excellent idea... and not a moment too soon :)
On 23 Aug 2010, at 01:44, Ralf Wildenhues wrote: > * Ralf Wildenhues wrote on Sun, Aug 22, 2010 at 08:38:19PM CEST: >> configure: autobuild mode... default > [...] > > Autobuild uses a few strings to categorize log results: package version, > $build, $host, hostname, time and date, and a so-called "mode" which my > patch sets with the $autobuild_mode variable. > > I will be using something like the following values for $autobuild_mode. > Suggestions and additions welcome, I think we could profit from a > common, recognizable scheme: that way, when different people all mail > their results to the autobuild site, results become more easily > comparable. > > Here's the scheme: > > $autobuild_mode is > > - either 'default' (when the user forgets, or knows no better ;-) > > or a hyphen-separated string denoting: > > - the compiler vendor (gcc, llvm, clang, xl, hp, sun, sgi, dec, intel, pgi, > msvc), Is the compiler version number interesting? (or the os release number for native compilers with a hard to extract version string) > - the binutils vendor (bfd or gold, native), > > and then zero or more features from the following list, in that order, > and denoting that configure was passed the respective arguments: > > - shared --disable-static > - static --disable-shared > - pic --with-pic > - nonpic --without-pic > - fast --enable-fast-install > - nofast --disable-fast-install > - rtl runtimelinking on AIX (LDFLAGS=-Wl,-brtl) > - c++ CC=g++ I often run on machines with no f77,gfortran,gcj etc: - nof77 test -z "${F77}" - nofc test -z "${FC}" - nogcj test -z "${GCJ}" - rc test -n "${RC}" (picking the "no"-ness to minimize the mode string length in the common case) > - lto CC='gcc -flto' CXX='gcc -flto' FC='gfortran -flto' F77='gfortran > -flto' > - lto-plugin same as lto with gold, but also LDFLAGS=-fuse-linker-plugin > (or '-O4 -use-gold-plugin' with llvm) > - ksh/ksh93/dash/... > CONFIG_SHELL=/bin/ksh was set in the environment and > /bin/ksh was used to call configure > - debian-X.Y/gentoo-X.Y/rhel-X.Y/ubuntu-X.Y/... > distribution (maybe including version) that was used > (for those systems where $host is not distinguishing) > - ac-X.Y/am-X.Z > Autoconf and Automake versions used (if interesting) > - pmake/gmake > setting MAKE=pmake and running the build with $MAKE rather > than the native make. Instead of using 'default' as the default, we can make things a lot more accurate with something along the lines of (off the top of my head, and completely untested!): : ${autobuild_mode=$host} case $enable_shared,$enable_static,-$autobuild_mode- in *,*,*-static-*) ;; no,yes,*) autobuild_mode="$autobuild_mode-static" ;; esac case $enable_shared,$enable_static,-$autobuild_mode- in *,*,*-shared-*) ;; yes,no,*) autobuild_mode="$autobuild_mode-shared" ;; esac case $pic_mode,-$autobuild_mode- in *,*-pic-*|*,*-nonpic-*) ;; yes,*) autobuild_mode="$autobuild_mode-pic" ;; no,*) autobuild_mode="$autobuild_mode-nonpic ;; esac case $enable_fast_install,-$autobuild_mode- in *,*-fast-*|*,*-nofast-*) ;; yes,*) autobuild_mode="$autobuild_mode-fast" ;; no,*) autobuild_mode="$autobuild_mode-nofast" ;; esac case $LDFLAGS,-$autobuild_mode- in *,*-rtl-*) ;; *" -Wl,-brtl "*,*) autobuild_mode="$autobuild_mode-rtl" ;; esac case $CC,-$autobuild_mode- in *,*-c++-*) ;; g++*,*|c++*,*|xlC*,*|cxx*,*|CC*,*) # a list of all the C++ compiler we support autobuild_mode="$autobuild_mode-c++" ;; esac case $F77,-$autobuild_mode- in ,*-nof77-*) ;; ,*) autobuild_mode="$autobuild_mode-nof77" ;; esac case $FC,-$autobuild_mode- in ,*-nofc-*) ;; ,*) autobuild_mode="$autobuild_mode-nofc" ;; esac case $GCJ,-$autobuild_mode- in ,*-nogcj-*) ;; ,*) autobuild_mode="$autobuild_mode-nogcj" ;; esac case -$RC-,-$autobuild_mode- in --,*|*,*-rc-*) ;; -?*-,*) autobuild_mode="$autobuild_mode-rc" ;; esac case $CC ,-$autobuild_mode- in *,*-lto-*) ;; *" -flto ",*) autobuild_mode="$autobuild_mode-lto" ;; esac ... and so on. This is long-wined enough too, I think, that putting it in a new m4 macro rather than hard-coding into configure.ac seems worthwhile. > So, for example, using GCC on AIX 5.2 with the system ld and > runtimelinking, $host would be powerpc-aix53-.., my autobuild_mode would > be > gcc-native-rtl > > I'm not yet sure whether and when to leave out the compiler and binutils > vendor strings; on some systems there is one canonical choice and there > would be no need to distinguish. Not sure if the vendor one would > always be the best default though. Considering the amount of data we (or at least the autoconf and gnulib list) collects about bugs in particular vendor compiler patch levels, I think that it would be useful to capture this information too -- and then we can take note of trends in test failures caused by particular releases. > Additions welcome. HTH, -- Gary V. Vaughan (g...@gnu.org)
PGP.sig
Description: This is a digitally signed message part