diff --git a/tools/toolchain/scripts/stage0/install_cmake.sh b/tools/toolchain/scripts/stage0/install_cmake.sh index 8ec308be9c..5de1230bc7 100755 --- a/tools/toolchain/scripts/stage0/install_cmake.sh +++ b/tools/toolchain/scripts/stage0/install_cmake.sh @@ -20,23 +20,21 @@ cd "${BUILDDIR}" case "${with_cmake}" in __INSTALL__) echo "==================== Installing CMake ====================" - cmake_ver="3.31.7" - cmake_ext="sh" + cmake_ver="4.2.3" if [ "${OPENBLAS_ARCH}" = "arm64" ]; then if [ "$(uname -s)" = "Darwin" ]; then cmake_arch="macos-universal" - cmake_sha256="1cb11aa2edae8551bb0f22807c6f5246bd0eb60ae9fa1474781eb4095d299aca" - cmake_ext="tar.gz" + cmake_sha256="c2302d3e9c48daabee5ea7c4db4b2b93b989bcc89dae8b760880e00120641b5b" elif [ "$(uname -s)" = "Linux" ]; then cmake_arch="linux-aarch64" - cmake_sha256="ce8e32b2c1c497dd7f619124c043ac5c28a88677e390c58748dd62fe460c62a2" + cmake_sha256="e529c75f18f27ba27c52b329efe7b1f98dc32ccc0c6d193c7ab343f888962672" else report_error ${LINENO} \ "cmake installation for ARCH=${OPENBLAS_ARCH} under $(uname -s) is not supported. You can try to use the system installation using the flag --with-cmake=system instead." fi elif [ "${OPENBLAS_ARCH}" = "x86_64" ]; then cmake_arch="linux-x86_64" - cmake_sha256="b7a5c909cdafc36042c8c9bd5765e92ff1f2528cf01720aa6dc4df294ec7e1a0" + cmake_sha256="5bb505d5e0cca0480a330f7f27ccf52c2b8b5214c5bba97df08899f5ef650c23" else report_error ${LINENO} \ "cmake installation for ARCH=${OPENBLAS_ARCH} under $(uname -s) is not supported. You can try to use the system installation using the flag --with-cmake=system instead." @@ -47,14 +45,15 @@ case "${with_cmake}" in if verify_checksums "${install_lock_file}"; then echo "cmake-${cmake_ver} is already installed, skipping it." else - retrieve_package "${cmake_sha256}" "cmake-${cmake_ver}-${cmake_arch}.${cmake_ext}" + retrieve_package "${cmake_sha256}" "cmake-${cmake_ver}-${cmake_arch}.tar.gz" echo "Installing from scratch into ${pkg_install_dir}" mkdir -p ${pkg_install_dir} if [ "${cmake_arch}" = "macos-universal" ]; then - tar --strip-components=3 -xvf cmake-${cmake_ver}-${cmake_arch}.${cmake_ext} -C ${pkg_install_dir} > install.log 2>&1 || tail_excerpt install.log + strip_components=3 else - /bin/sh cmake-${cmake_ver}-${cmake_arch}.${cmake_ext} --prefix=${pkg_install_dir} --skip-license > install.log 2>&1 || tail_excerpt install.log + strip_components=1 fi + tar --strip-components=${strip_components} -xvf cmake-${cmake_ver}-${cmake_arch}.tar.gz -C ${pkg_install_dir} > install.log 2>&1 || tail_excerpt install.log write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage0/$(basename ${SCRIPT_NAME})" fi ;; diff --git a/tools/toolchain/scripts/stage3/install_libxc.sh b/tools/toolchain/scripts/stage3/install_libxc.sh index 989c717e1e..480aef13a5 100755 --- a/tools/toolchain/scripts/stage3/install_libxc.sh +++ b/tools/toolchain/scripts/stage3/install_libxc.sh @@ -53,6 +53,7 @@ case "$with_libxc" in fi # CP2K does not make use of fourth derivatives, so skip their compilation with -DDISABLE_KXC=OFF + # Add "-DCMAKE_POLICY_VERSION_MINIMUM=3.5" to keep legacy compatibility for CMake version 4.x CFLAGS="${LIBXC_CFLAGS}" cmake \ -DCMAKE_INSTALL_PREFIX="${pkg_install_dir}" \ -DCMAKE_INSTALL_LIBDIR=lib \ @@ -60,6 +61,7 @@ case "$with_libxc" in -DBUILD_TESTING=OFF \ -DENABLE_FORTRAN=ON \ -DDISABLE_KXC=OFF \ + -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ .. > configure.log 2>&1 || tail_excerpt configure.log make -j $(get_nprocs) > make.log 2>&1 || tail_excerpt make.log make install > install.log 2>&1 || tail_excerpt install.log diff --git a/tools/toolchain/scripts/stage4/install_cosma.sh b/tools/toolchain/scripts/stage4/install_cosma.sh index 0828efc820..ea94e7212d 100755 --- a/tools/toolchain/scripts/stage4/install_cosma.sh +++ b/tools/toolchain/scripts/stage4/install_cosma.sh @@ -142,7 +142,15 @@ case "$with_cosma" in fi cd .. - cd COSMA-${cosma_ver} && mkdir build-cpu && cd build-cpu + cd COSMA-${cosma_ver} + # Fix two bugs in src/cosma/CMakeLists.txt: + # 1) COSMA_GPU_VENDOR is undefined, should be COSMA_GPU_BACKEND; remove quotes around OFF + # 2) IN_LIST generator expression: quotes break list parsing, and BLISi is a typo for BLIS + sed -i 's|\$<\$:cosma::BLAS::blas>|$<$:cosma::BLAS::blas>|' \ + "src/cosma/CMakeLists.txt" + sed -i 's|\$<\$>:COSMA_WITH_BLAS>|$<$>:COSMA_WITH_BLAS>|' \ + "src/cosma/CMakeLists.txt" + mkdir build-cpu && cd build-cpu cmake \ -DCMAKE_INSTALL_PREFIX="${pkg_install_dir}" \ -DCMAKE_INSTALL_LIBDIR=lib \ diff --git a/tools/toolchain/scripts/stage4/install_scalapack.sh b/tools/toolchain/scripts/stage4/install_scalapack.sh index a50de29454..b717e2cdf1 100755 --- a/tools/toolchain/scripts/stage4/install_scalapack.sh +++ b/tools/toolchain/scripts/stage4/install_scalapack.sh @@ -35,6 +35,9 @@ case "$with_scalapack" in [ -d scalapack-${scalapack_ver} ] && rm -rf scalapack-${scalapack_ver} tar -xzf ${scalapack_pkg} + # Change the CMake policy requirement to keep legacy compatibility for CMake version 4.x + sed -e 's/2.8/3.5/g' -i scalapack-${scalapack_ver}/BLACS/INSTALL/CMakeLists.txt + mkdir -p "scalapack-${scalapack_ver}/build" pushd "scalapack-${scalapack_ver}/build" > /dev/null diff --git a/tools/toolchain/scripts/stage8/install_trexio.sh b/tools/toolchain/scripts/stage8/install_trexio.sh index 591a0853c5..b8cd1dc1f1 100755 --- a/tools/toolchain/scripts/stage8/install_trexio.sh +++ b/tools/toolchain/scripts/stage8/install_trexio.sh @@ -6,8 +6,8 @@ [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" -trexio_ver="2.6.0" -trexio_sha256="02b692c7792b4c8d041b1eeacdf144dca333a6ea699f66e911489768586de335" +trexio_ver="2.6.1" +trexio_sha256="c3694ec1528632a386a2af89199c75d70ecd45bfcc2ca1d4ccccbfa1308ad5fa" source "${SCRIPT_DIR}"/common_vars.sh source "${SCRIPT_DIR}"/tool_kit.sh @@ -40,8 +40,17 @@ case "$with_trexio" in tar -xzf trexio-${trexio_ver}.tar.gz cd trexio-${trexio_ver} - ./configure --prefix="${pkg_install_dir}" --libdir="${pkg_install_dir}/lib" > configure.log 2>&1 || tail_excerpt configure.log + CMAKE_OPTIONS="-DCMAKE_VERBOSE_MAKEFILE=ON" + if [ "${MPI_MODE}" != "no" ]; then + CMAKE_OPTIONS="-DCMAKE_C_COMPILER=${MPICC}" + fi + mkdir build && cd build + cmake \ + -DCMAKE_INSTALL_PREFIX="${pkg_install_dir}" \ + -DCMAKE_INSTALL_LIBDOR="lib" \ + ${CMAKE_OPTIONS} \ + .. > configure.log 2>&1 || tail_excerpt configure.log make -j $(get_nprocs) >> make.log 2>&1 || tail_excerpt make.log make install > install.log 2>&1 || tail_excerpt install.log cd ..