index e6b9591..e655934 100644 --- lib/app-critcl/runtime.tcl.orig +++ lib/app-critcl/runtime.tcl @@ -117,8 +117,19 @@ proc ::critcl::runtime::MapPlatform {{mapping {}}} { set v [split $version .] set v1 [lindex $v 0] set v2 [lindex $v 1] - incr v1 -4 - set version 10.$v1.$v2 + set v3 [lindex $v 2] + # Darwin 19 and earlier are macOS 10.x. Darwin 20-24 are macOS + # 11-15. Darwin 25 is macOS 26. + if {$v1 >= 25} { + incr v1 + set version $v1.$v2.$v3 + } elseif {$v1 >= 20} { + incr v1 -9 + set version $v1.$v2.$v3 + } else { + incr v1 -4 + set version 10.$v1.$v2 + } } else { # Strip trailing non-version info regsub -- {-.*$} $version {} version diff --git a/lib/critcl-platform/platform.tcl b/lib/critcl-platform/platform.tcl index fbfc535..d2a84b6 100644 --- lib/critcl-platform/platform.tcl.orig +++ lib/critcl-platform/platform.tcl @@ -183,9 +183,19 @@ proc ::platform::identify {} { macosx { set major [lindex [split $tcl_platform(osVersion) .] 0] if {$major > 8} { - incr major -4 - append plat 10.$major - return "${plat}-${cpu}" + # Darwin 19 and earlier are macOS 10.x. Darwin 20-24 + # are macOS 11-15. Darwin 25 is macOS 26. + if {$major >= 25} { + incr major + append plat $major + } elseif {$major >= 20} { + incr major -9 + append plat $major + } else { + incr major -4 + append plat 10.$major + } + return "${plat}-${cpu}" } } linux { index f4d1fd3..907cdf6 100644 --- lib/critcl/Config.in.orig +++ lib/critcl/Config.in @@ -129,8 +129,15 @@ if {[string match macosx-* $platform]} { } else { # use the current platform foreach {v1 v2 v3} [split $::tcl_platform(osVersion) .] break - incr v1 -4 - set osxmin 10.$v1.$v2 + # Darwin 19 and earlier are macOS 10.x. Darwin 20 and later are macOS + # 11, macOS 12, etc. + if {$v1 >= 20} { + incr v1 -9 + set osxmin ${v1}.0 + } else { + incr v1 -4 + set osxmin 10.$v1 + } # do we actually need to check if universal is supported, given the # gcc check below will do it for us? # set info [exec lipo -info /usr/lib/libSystem.dylib]