diff --git a/cmake/macos_aarch64_toolchain_clang.cmake b/cmake/macos_aarch64_toolchain_clang.cmake index 90342ec..23d8d3e 100644 --- a/cmake/macos_aarch64_toolchain_clang.cmake +++ b/cmake/macos_aarch64_toolchain_clang.cmake @@ -9,13 +9,24 @@ set(CMAKE_ASM_COMPILER /usr/local/bin/aarch64-apple-darwin25-as) set(CMAKE_STRIP /usr/local/bin/aarch64-apple-darwin25-strip) if(NOT DEFINED CMAKE_OSX_SYSROOT) -execute_process( - COMMAND ${CMAKE_C_COMPILER} -print-sysroot - OUTPUT_VARIABLE _OSX_SYSROOT - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - set(CMAKE_OSX_SYSROOT "${_OSX_SYSROOT}") + if(DEFINED ENV{SDKROOT} AND IS_DIRECTORY "$ENV{SDKROOT}") + set(CMAKE_OSX_SYSROOT "$ENV{SDKROOT}") + else() + foreach(_sdk_root "/usr/local/target/SDK" "/usr/local/osxcross/target/SDK" "/osxcross/target/SDK") + if(IS_DIRECTORY "${_sdk_root}") + file(GLOB _sdk_candidates "${_sdk_root}/MacOSX*.sdk") + list(SORT _sdk_candidates) + list(REVERSE _sdk_candidates) + if(_sdk_candidates) + list(GET _sdk_candidates 0 CMAKE_OSX_SYSROOT) + break() + endif() + endif() + endforeach() + endif() endif() -set(CMAKE_SYSROOT "${CMAKE_OSX_SYSROOT}") -set(CMAKE_SYSTEM_FRAMEWORK_PATH "${CMAKE_OSX_SYSROOT}/System/Library/Frameworks") +if(DEFINED CMAKE_OSX_SYSROOT AND CMAKE_OSX_SYSROOT) + set(CMAKE_SYSROOT "${CMAKE_OSX_SYSROOT}") + set(CMAKE_SYSTEM_FRAMEWORK_PATH "${CMAKE_OSX_SYSROOT}/System/Library/Frameworks") +endif() diff --git a/cmake/macos_x86_64_toolchain_clang.cmake b/cmake/macos_x86_64_toolchain_clang.cmake index 9034d6b..bc4d708 100644 --- a/cmake/macos_x86_64_toolchain_clang.cmake +++ b/cmake/macos_x86_64_toolchain_clang.cmake @@ -9,13 +9,24 @@ set(CMAKE_ASM_COMPILER /usr/local/bin/x86_64-apple-darwin25-as) set(CMAKE_STRIP /usr/local/bin/x86_64-apple-darwin25-strip) if(NOT DEFINED CMAKE_OSX_SYSROOT) -execute_process( - COMMAND ${CMAKE_C_COMPILER} -print-sysroot - OUTPUT_VARIABLE _OSX_SYSROOT - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - set(CMAKE_OSX_SYSROOT "${_OSX_SYSROOT}") + if(DEFINED ENV{SDKROOT} AND IS_DIRECTORY "$ENV{SDKROOT}") + set(CMAKE_OSX_SYSROOT "$ENV{SDKROOT}") + else() + foreach(_sdk_root "/usr/local/target/SDK" "/usr/local/osxcross/target/SDK" "/osxcross/target/SDK") + if(IS_DIRECTORY "${_sdk_root}") + file(GLOB _sdk_candidates "${_sdk_root}/MacOSX*.sdk") + list(SORT _sdk_candidates) + list(REVERSE _sdk_candidates) + if(_sdk_candidates) + list(GET _sdk_candidates 0 CMAKE_OSX_SYSROOT) + break() + endif() + endif() + endforeach() + endif() endif() -set(CMAKE_SYSROOT "${CMAKE_OSX_SYSROOT}") -set(CMAKE_SYSTEM_FRAMEWORK_PATH "${CMAKE_OSX_SYSROOT}/System/Library/Frameworks") +if(DEFINED CMAKE_OSX_SYSROOT AND CMAKE_OSX_SYSROOT) + set(CMAKE_SYSROOT "${CMAKE_OSX_SYSROOT}") + set(CMAKE_SYSTEM_FRAMEWORK_PATH "${CMAKE_OSX_SYSROOT}/System/Library/Frameworks") +endif() diff --git a/scripts/release/macos_aarch64/p2pool_macos_aarch64.sh b/scripts/release/macos_aarch64/p2pool_macos_aarch64.sh index 944668c..1be6bb2 100755 --- a/scripts/release/macos_aarch64/p2pool_macos_aarch64.sh +++ b/scripts/release/macos_aarch64/p2pool_macos_aarch64.sh @@ -19,7 +19,38 @@ flags_datetime="-D__DATE__=\"\\\"$CURRENT_DATE\\\"\" -D__TIME__=\"\\\"$CURRENT_T flags_libs="-Os -flto -w $flags_size $flags_datetime" flags_p2pool="$flags_size $flags_datetime" -sdk_sysroot="$(/usr/local/bin/aarch64-apple-darwin25-clang -print-sysroot)" +clang_bin="$(command -v aarch64-apple-darwin25-clang || true)" +if [ -z "$clang_bin" ]; then + echo "aarch64-apple-darwin25-clang not found in PATH" >&2 + exit 1 +fi + +find_macos_sdk() { + if [ -n "${SDKROOT:-}" ] && [ -d "${SDKROOT:-}" ]; then + echo "$SDKROOT" + return 0 + fi + + for base in /usr/local/target/SDK /usr/local/osxcross/target/SDK /osxcross/target/SDK; do + if [ -d "$base" ]; then + for candidate in "$base"/MacOSX*.sdk; do + if [ -d "$candidate" ]; then + echo "$candidate" + return 0 + fi + done + fi + done + + find /usr/local -maxdepth 4 -name 'MacOSX*.sdk' -type d 2>/dev/null | head -n 1 +} + +sdk_sysroot="$(find_macos_sdk)" +if [ -z "$sdk_sysroot" ]; then + echo "Unable to locate macOS SDK sysroot. Set SDKROOT to the SDK path." >&2 + exit 1 +fi + export SDKROOT="$sdk_sysroot" cmake_osx_args="-DCMAKE_OSX_SYSROOT=$sdk_sysroot -DCMAKE_SYSROOT=$sdk_sysroot -DCMAKE_SYSTEM_FRAMEWORK_PATH=$sdk_sysroot/System/Library/Frameworks" diff --git a/scripts/release/macos_x64/p2pool_macos_x64.sh b/scripts/release/macos_x64/p2pool_macos_x64.sh index 8aa98a3..60755d0 100755 --- a/scripts/release/macos_x64/p2pool_macos_x64.sh +++ b/scripts/release/macos_x64/p2pool_macos_x64.sh @@ -19,7 +19,38 @@ flags_datetime="-D__DATE__=\"\\\"$CURRENT_DATE\\\"\" -D__TIME__=\"\\\"$CURRENT_T flags_libs="-Os -flto -w $flags_size $flags_datetime" flags_p2pool="$flags_size $flags_datetime" -sdk_sysroot="$(/usr/local/bin/x86_64-apple-darwin25-clang -print-sysroot)" +clang_bin="$(command -v x86_64-apple-darwin25-clang || true)" +if [ -z "$clang_bin" ]; then + echo "x86_64-apple-darwin25-clang not found in PATH" >&2 + exit 1 +fi + +find_macos_sdk() { + if [ -n "${SDKROOT:-}" ] && [ -d "${SDKROOT:-}" ]; then + echo "$SDKROOT" + return 0 + fi + + for base in /usr/local/target/SDK /usr/local/osxcross/target/SDK /osxcross/target/SDK; do + if [ -d "$base" ]; then + for candidate in "$base"/MacOSX*.sdk; do + if [ -d "$candidate" ]; then + echo "$candidate" + return 0 + fi + done + fi + done + + find /usr/local -maxdepth 4 -name 'MacOSX*.sdk' -type d 2>/dev/null | head -n 1 +} + +sdk_sysroot="$(find_macos_sdk)" +if [ -z "$sdk_sysroot" ]; then + echo "Unable to locate macOS SDK sysroot. Set SDKROOT to the SDK path." >&2 + exit 1 +fi + export SDKROOT="$sdk_sysroot" cmake_osx_args="-DCMAKE_OSX_SYSROOT=$sdk_sysroot -DCMAKE_SYSROOT=$sdk_sysroot -DCMAKE_SYSTEM_FRAMEWORK_PATH=$sdk_sysroot/System/Library/Frameworks"