src/Pure/System/isabelle_platform.scala
changeset 83124 921ca143fd94
parent 83111 a908a0d5168b
child 83138 c66d77fb729e
--- a/src/Pure/System/isabelle_platform.scala	Tue Sep 09 22:00:45 2025 +0200
+++ b/src/Pure/System/isabelle_platform.scala	Tue Sep 09 23:55:14 2025 +0200
@@ -38,14 +38,17 @@
     def apply(
       isabelle_platform: Isabelle_Platform = local,
       mingw: MinGW = MinGW.none,
+      apple: Boolean = true,
       progress: Progress = new Progress
     ): Context = {
       val context_platform = isabelle_platform
       val context_mingw = mingw
+      val context_apple = apple
       val context_progress = progress
       new Context {
         override def isabelle_platform: Isabelle_Platform = context_platform
         override def mingw: MinGW = context_mingw
+        override def apple: Boolean = context_apple
         override def progress: Progress = context_progress
       }
     }
@@ -54,17 +57,21 @@
   trait Context {
     def isabelle_platform: Isabelle_Platform
     def mingw: MinGW
+    def apple: Boolean
     def progress: Progress
 
+    def ISABELLE_PLATFORM: String = isabelle_platform.ISABELLE_PLATFORM(windows = true, apple = apple)
+    def is_linux_arm: Boolean = isabelle_platform.is_linux && isabelle_platform.is_arm
+    def is_macos_arm: Boolean = isabelle_platform.is_macos && isabelle_platform.is_arm && apple
+    def is_arm: Boolean = is_linux_arm || is_macos_arm
+
     def standard_path(path: Path): String =
       mingw.standard_path(File.platform_path(path))
 
     def execute(cwd: Path, script_lines: String*): Process_Result = {
       val script = cat_lines("set -e" :: script_lines.toList)
       val script1 =
-        if (isabelle_platform.is_arm && isabelle_platform.is_macos) {
-          "arch -arch arm64 bash -c " + Bash.string(script)
-        }
+        if (is_macos_arm) "arch -arch arm64 bash -c " + Bash.string(script)
         else mingw.bash_script(script)
       progress.bash(script1, cwd = cwd, echo = progress.verbose).check
     }