From 2261077738ae471825d6fb7af1d7814b2d01b62f Mon Sep 17 00:00:00 2001 From: Asuka Date: Tue, 26 Aug 2025 14:18:40 +0800 Subject: [PATCH 1/3] Support for new cmake version --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6901b9138579..78325edacc55 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,7 +51,7 @@ include_directories(SYSTEM ${JSONCPP_INCLUDE_DIR}) find_package(Threads) if ("${CMAKE_SYSTEM_NAME}" MATCHES "Darwin" AND "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") - if (CMAKE_VERSION VERSION_EQUAL "4.0.3" AND CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL "15.0.0.15000040") + if (CMAKE_VERSION VERSION_EQUAL "4.1.0" AND CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL "15.0.0.15000040") # for Apple clang 15 under cmake 4.0.0, disable pedantic warnings explicitly as it fails to treat boost properly as # system library, warnings propagate set(PEDANTIC OFF) From 79483a7f60ff2ffd0997989f320968dafdedd058 Mon Sep 17 00:00:00 2001 From: Asuka Date: Tue, 26 Aug 2025 16:50:06 +0800 Subject: [PATCH 2/3] cmake local install test --- .circleci/install_cmake.sh | 41 +++++++++++++++++++++++++++ .circleci/osx_install_dependencies.sh | 5 +++- 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 .circleci/install_cmake.sh diff --git a/.circleci/install_cmake.sh b/.circleci/install_cmake.sh new file mode 100644 index 000000000000..4876e6cb2516 --- /dev/null +++ b/.circleci/install_cmake.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# Usage: ./install_cmake.sh 3.28.3 +# This script installs the specified CMake version on macOS +# Installation path: /usr/local/cmake- +# A symlink will be created in /usr/local/bin for easy access + +set -e + +if [ -z "$1" ]; then + echo "Usage: $0 " + exit 1 +fi + +VERSION=$1 +INSTALL_DIR="/usr/local/cmake-$VERSION" + +# Check if the version is already installed +if [ -d "$INSTALL_DIR" ]; then + echo "CMake $VERSION is already installed in $INSTALL_DIR" + exit 0 +fi + +# Download official CMake binary release +URL="https://github.com/Kitware/CMake/releases/download/v$VERSION/cmake-$VERSION-macos-universal.tar.gz" +TMPFILE="/tmp/cmake-$VERSION.tar.gz" + +echo "Downloading CMake $VERSION..." +curl -L "$URL" -o "$TMPFILE" + +echo "Extracting to $INSTALL_DIR..." +sudo mkdir -p "$INSTALL_DIR" +sudo tar --strip-components=1 -xzf "$TMPFILE" -C "$INSTALL_DIR" + +# Create symlinks for system-wide access +sudo ln -sfn "$INSTALL_DIR/bin/cmake" /usr/local/bin/cmake +sudo ln -sfn "$INSTALL_DIR/bin/ccmake" /usr/local/bin/ccmake +sudo ln -sfn "$INSTALL_DIR/bin/cpack" /usr/local/bin/cpack +sudo ln -sfn "$INSTALL_DIR/bin/ctest" /usr/local/bin/ctest + +echo "CMake $VERSION installation completed." +cmake --version diff --git a/.circleci/osx_install_dependencies.sh b/.circleci/osx_install_dependencies.sh index 14318c27add5..b56dc320ec2f 100755 --- a/.circleci/osx_install_dependencies.sh +++ b/.circleci/osx_install_dependencies.sh @@ -52,12 +52,15 @@ then brew untap homebrew/homebrew-cask-versions brew update brew upgrade - brew install cmake +# brew install cmake brew install wget brew install coreutils brew install diffutils brew install grep + chmod +x install_cmake.sh + ./install_cmake.sh 3.28.3 + # boost boost_version="1.84.0" boost_package="boost_${boost_version//./_}.tar.bz2" From d3751dcf2e90375ef35487961167c045302ab882 Mon Sep 17 00:00:00 2001 From: Asuka Date: Tue, 26 Aug 2025 17:43:13 +0800 Subject: [PATCH 3/3] fix --- .circleci/install_cmake.sh | 76 ++++++++++++++++++--------- .circleci/osx_install_dependencies.sh | 5 +- 2 files changed, 54 insertions(+), 27 deletions(-) diff --git a/.circleci/install_cmake.sh b/.circleci/install_cmake.sh index 4876e6cb2516..5f039b102c19 100644 --- a/.circleci/install_cmake.sh +++ b/.circleci/install_cmake.sh @@ -1,41 +1,67 @@ #!/bin/bash # Usage: ./install_cmake.sh 3.28.3 -# This script installs the specified CMake version on macOS -# Installation path: /usr/local/cmake- -# A symlink will be created in /usr/local/bin for easy access +# Installs a specific CMake version on macOS from Kitware releases. +# Layout: +# /usr/local/cmake-/CMake.app/Contents/bin/{cmake,ccmake,cpack,ctest} +# Symlinks: +# /usr/local/bin/{cmake,ccmake,cpack,ctest} -> .../Contents/bin/ +# Works on both Intel and Apple Silicon (uses "macos-universal" tarball). -set -e +set -euo pipefail -if [ -z "$1" ]; then +if [ -z "${1:-}" ]; then echo "Usage: $0 " exit 1 fi -VERSION=$1 +VERSION="$1" INSTALL_DIR="/usr/local/cmake-$VERSION" +TARBALL="cmake-$VERSION-macos-universal.tar.gz" +URL="https://github.com/Kitware/CMake/releases/download/v$VERSION/$TARBALL" +TMPFILE="/tmp/$TARBALL" -# Check if the version is already installed -if [ -d "$INSTALL_DIR" ]; then - echo "CMake $VERSION is already installed in $INSTALL_DIR" - exit 0 -fi +# Require basic tools +for cmd in curl tar; do + command -v "$cmd" >/dev/null || { echo "Missing $cmd"; exit 1; } +done + +# Skip if already installed +if [ -d "$INSTALL_DIR" ] && [ -x "$INSTALL_DIR/CMake.app/Contents/bin/cmake" ]; then + echo "CMake $VERSION already installed at $INSTALL_DIR" +else + echo "Downloading $URL ..." + # --fail makes curl exit non-zero on 404/5xx; -L follows redirects + curl -fL "$URL" -o "$TMPFILE" + + echo "Creating $INSTALL_DIR and extracting..." + sudo mkdir -p "$INSTALL_DIR" -# Download official CMake binary release -URL="https://github.com/Kitware/CMake/releases/download/v$VERSION/cmake-$VERSION-macos-universal.tar.gz" -TMPFILE="/tmp/cmake-$VERSION.tar.gz" + # The tarball contains a top-level directory (e.g., cmake--macos-universal/*) + # We strip that first component so CMake.app ends up directly under $INSTALL_DIR. + sudo tar -xzf "$TMPFILE" -C "$INSTALL_DIR" --strip-components=1 -echo "Downloading CMake $VERSION..." -curl -L "$URL" -o "$TMPFILE" + # Work around Gatekeeper quarantine if present (harmless if attribute absent) + if command -v xattr >/dev/null; then + sudo xattr -dr com.apple.quarantine "$INSTALL_DIR/CMake.app" || true + fi -echo "Extracting to $INSTALL_DIR..." -sudo mkdir -p "$INSTALL_DIR" -sudo tar --strip-components=1 -xzf "$TMPFILE" -C "$INSTALL_DIR" + # Sanity check + if [ ! -x "$INSTALL_DIR/CMake.app/Contents/bin/cmake" ]; then + echo "Error: cmake binary not found under $INSTALL_DIR/CMake.app/Contents/bin" + exit 1 + fi +fi + +echo "Linking command-line tools into /usr/local/bin ..." +for tool in cmake ccmake cpack ctest; do + sudo ln -sfn "$INSTALL_DIR/CMake.app/Contents/bin/$tool" "/usr/local/bin/$tool" +done -# Create symlinks for system-wide access -sudo ln -sfn "$INSTALL_DIR/bin/cmake" /usr/local/bin/cmake -sudo ln -sfn "$INSTALL_DIR/bin/ccmake" /usr/local/bin/ccmake -sudo ln -sfn "$INSTALL_DIR/bin/cpack" /usr/local/bin/cpack -sudo ln -sfn "$INSTALL_DIR/bin/ctest" /usr/local/bin/ctest +# Optional: link cmake-gui (will open the GUI app) +if [ -x "$INSTALL_DIR/CMake.app/Contents/bin/cmake-gui" ]; then + sudo ln -sfn "$INSTALL_DIR/CMake.app/Contents/bin/cmake-gui" /usr/local/bin/cmake-gui +fi -echo "CMake $VERSION installation completed." +echo "CMake $VERSION installed successfully." +which cmake cmake --version diff --git a/.circleci/osx_install_dependencies.sh b/.circleci/osx_install_dependencies.sh index b56dc320ec2f..da1992dd15d8 100755 --- a/.circleci/osx_install_dependencies.sh +++ b/.circleci/osx_install_dependencies.sh @@ -58,8 +58,9 @@ then brew install diffutils brew install grep - chmod +x install_cmake.sh - ./install_cmake.sh 3.28.3 + # install cmake + chmod +x .circleci/install_cmake.sh + .circleci/install_cmake.sh 3.28.3 # boost boost_version="1.84.0"