Toolchain: Update to CMake 4.2.3, TREXIO 2.6.1, and workaround COSMA linking issue (#4954)

This commit is contained in:
SY Wang 2026-03-18 23:24:13 +08:00 committed by GitHub
parent e8d1ac1fd2
commit 2b3ee83444
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 34 additions and 13 deletions

View file

@ -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
;;

View file

@ -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

View file

@ -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|\$<\$<STREQUAL:\${COSMA_GPU_VENDOR},"OFF">:cosma::BLAS::blas>|$<$<STREQUAL:${COSMA_GPU_BACKEND},OFF>:cosma::BLAS::blas>|' \
"src/cosma/CMakeLists.txt"
sed -i 's|\$<\$<NOT:\$<IN_LIST:\${COSMA_BLAS_VENDOR},"MKL;BLISi;OFF">>:COSMA_WITH_BLAS>|$<$<NOT:$<IN_LIST:${COSMA_BLAS_VENDOR},MKL;BLIS;OFF>>:COSMA_WITH_BLAS>|' \
"src/cosma/CMakeLists.txt"
mkdir build-cpu && cd build-cpu
cmake \
-DCMAKE_INSTALL_PREFIX="${pkg_install_dir}" \
-DCMAKE_INSTALL_LIBDIR=lib \

View file

@ -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

View file

@ -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 ..