I tested it as Todd described on intrepid at Argonne, works. Pat
On Sat, Jul 3, 2010 at 12:18 AM, Todd Gamblin <tgamb...@llnl.gov> wrote: > Brad, > > Sorry for the slow response. This patch works on dawndev (BG/P FEN) at > LLNL. I tested it with cmake 2.8.2, and just did bootstrap > --prefix=/path/to/install. Everything went fine. > > -Todd > > > On Jun 30, 2010, at 7:58 AM, Brad King wrote: > > > Look for a C/C++ compiler pair from known toolchains on some platforms. > > This makes it less likely that mismatched compilers will be found. > > Check only if the environment variables CC and CXX are both empty. > > --- > > > > Todd Gamblin wrote: > >> 1. Bootstrap script doesn't seem to work quite right on the frontend. > >> > >> Building CMake was a bit hairy on the Power6 front end node on our > >> BlueGene systems. The machine runs Linux and has both GNU and IBM XL > >> toolchains for the frontend itself. The CMake bootstrap script detected > >> cc for the C compiler and xlC for the C++ compiler, and linking failed > >> on something 50% through the build because it was passing -dynamic to > >> xlC, which is the wrong flag. It would be nice if CMake would prefer > >> one or the other tool chain. > > > > Please try this patch on the Power6 front-end to your BlueGene. > > It should prefer matching compiler pairs first. > > > > -Brad > > > > bootstrap | 71 > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- > > 1 files changed, 69 insertions(+), 2 deletions(-) > > > > diff --git a/bootstrap b/bootstrap > > index 1687776..01d9e15 100755 > > --- a/bootstrap > > +++ b/bootstrap > > @@ -650,11 +650,74 @@ if ${cmake_system_haiku}; then > > cmake_ld_flags="${LDFLAGS} -lroot -lbe" > > fi > > > > > +#----------------------------------------------------------------------------- > > +# Detect known toolchains on some platforms. > > +cmake_toolchains='' > > +case "${cmake_system}" in > > + *AIX*) cmake_toolchains='XL GNU' ;; > > + *CYGWIN*) cmake_toolchains='GNU' ;; > > + *Darwin*) cmake_toolchains='GNU Clang' ;; > > + *Linux*) cmake_toolchains='GNU Clang XL PGI PathScale' ;; > > + *MINGW*) cmake_toolchains='GNU' ;; > > +esac > > + > > +# Toolchain compiler name table. > > +cmake_toolchain_Clang_CC='clang' > > +cmake_toolchain_Clang_CXX='clang++' > > +cmake_toolchain_GNU_CC='gcc' > > +cmake_toolchain_GNU_CXX='g++' > > +cmake_toolchain_PGI_CC='pgcc' > > +cmake_toolchain_PGI_CXX='pgCC' > > +cmake_toolchain_PathScale_CC='pathcc' > > +cmake_toolchain_PathScale_CXX='pathCC' > > +cmake_toolchain_XL_CC='xlc' > > +cmake_toolchain_XL_CXX='xlC' > > + > > +cmake_toolchain_try() > > +{ > > + tc="$1" > > + TMPFILE=`cmake_tmp_file` > > + > > + eval "tc_CC=\${cmake_toolchain_${tc}_CC}" > > + echo 'int main() { return 0; }' > "${TMPFILE}.c" > > + cmake_try_run "$tc_CC" "" "${TMPFILE}.c" >> cmake_bootstrap.log 2>&1 > > + tc_result_CC="$?" > > + rm -f "${TMPFILE}.c" > > + test "${tc_result_CC}" = "0" || return 1 > > + > > + eval "tc_CXX=\${cmake_toolchain_${tc}_CXX}" > > + echo 'int main() { return 0; }' > "${TMPFILE}.cpp" > > + cmake_try_run "$tc_CXX" "" "${TMPFILE}.cpp" >> cmake_bootstrap.log > 2>&1 > > + tc_result_CXX="$?" > > + rm -f "${TMPFILE}.cpp" > > + test "${tc_result_CXX}" = "0" || return 1 > > + > > + cmake_toolchain="$tc" > > +} > > + > > +cmake_toolchain_detect() > > +{ > > + cmake_toolchain= > > + for tc in ${cmake_toolchains}; do > > + echo "Checking for $tc toolchain" >> cmake_bootstrap.log 2>&1 > > + cmake_toolchain_try "$tc" && > > + echo "Found $tc toolchain" && > > + break > > + done > > +} > > + > > +if [ -z "${CC}" -a -z "${CXX}" ]; then > > + cmake_toolchain_detect > > +fi > > + > > > +#----------------------------------------------------------------------------- > > # Test C compiler > > cmake_c_compiler= > > > > # If CC is set, use that for compiler, otherwise use list of known > compilers > > -if [ -n "${CC}" ]; then > > +if [ -n "${cmake_toolchain}" ]; then > > + eval cmake_c_compilers="\${cmake_toolchain_${cmake_toolchain}_CC}" > > +elif [ -n "${CC}" ]; then > > cmake_c_compilers="${CC}" > > else > > cmake_c_compilers="${CMAKE_KNOWN_C_COMPILERS}" > > @@ -697,13 +760,16 @@ See cmake_bootstrap.log for compilers attempted. > > fi > > echo "C compiler on this system is: ${cmake_c_compiler} ${cmake_c_flags}" > > > > > +#----------------------------------------------------------------------------- > > # Test CXX compiler > > cmake_cxx_compiler= > > > > # On Mac OSX, CC is the same as cc, so make sure not to try CC as c++ > compiler. > > > > # If CC is set, use that for compiler, otherwise use list of known > compilers > > -if [ -n "${CXX}" ]; then > > +if [ -n "${cmake_toolchain}" ]; then > > + eval cmake_cxx_compilers="\${cmake_toolchain_${cmake_toolchain}_CXX}" > > +elif [ -n "${CXX}" ]; then > > cmake_cxx_compilers="${CXX}" > > else > > cmake_cxx_compilers="${CMAKE_KNOWN_CXX_COMPILERS}" > > @@ -754,6 +820,7 @@ See cmake_bootstrap.log for compilers attempted." > > fi > > echo "C++ compiler on this system is: ${cmake_cxx_compiler} > ${cmake_cxx_flags}" > > > > > +#----------------------------------------------------------------------------- > > # Test Make > > > > cmake_make_processor= > > -- > > 1.7.0 > > > > _______________________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Please keep messages on-topic and check the CMake FAQ at: > http://www.cmake.org/Wiki/CMake_FAQ > > Follow this link to subscribe/unsubscribe: > http://www.cmake.org/mailman/listinfo/cmake >
_______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake