added ISABELLE_PLATFORM and ISABELLE_PLATFORM64 -- NB: ML and JVM may have a different idea;
authorwenzelm
Sat, 17 Apr 2010 22:58:29 +0200
changeset 36196 cbb9ee265cdd
parent 36195 9c098598db2a
child 36197 2e92aca73cab
added ISABELLE_PLATFORM and ISABELLE_PLATFORM64 -- NB: ML and JVM may have a different idea;
doc-src/System/Thy/Basics.thy
doc-src/System/Thy/document/Basics.tex
lib/scripts/getsettings
lib/scripts/isabelle-platform
--- a/doc-src/System/Thy/Basics.thy	Sat Apr 17 21:40:29 2010 +0200
+++ b/doc-src/System/Thy/Basics.thy	Sat Apr 17 22:58:29 2010 +0200
@@ -162,6 +162,17 @@
   some extend. In particular, site-wide defaults may be overridden by
   a private @{verbatim "$ISABELLE_HOME_USER/etc/settings"}.
   
+  \item[@{setting_def ISABELLE_PLATFORM}@{text "\<^sup>*"}] is automatically
+  set to a symbolic identifier for the underlying hardware and
+  operating system.  The Isabelle platform identification always
+  refers to the 32 bit variant, even this is a 64 bit machine.  Note
+  that the ML or Java runtime may have a different idea, depending on
+  which binaries are actually run.
+
+  \item[@{setting_def ISABELLE_PLATFORM64}@{text "\<^sup>*"}] is similar to
+  @{setting ISABELLE_PLATFORM} but refers to the proper 64 bit variant
+  on a platform that supports this; the value is empty for 32 bit.
+
   \item[@{setting_def ISABELLE_PROCESS}@{text "\<^sup>*"}, @{setting
   ISABELLE_TOOL}@{text "\<^sup>*"}] are automatically set to the full path
   names of the @{executable "isabelle-process"} and @{executable
--- a/doc-src/System/Thy/document/Basics.tex	Sat Apr 17 21:40:29 2010 +0200
+++ b/doc-src/System/Thy/document/Basics.tex	Sat Apr 17 22:58:29 2010 +0200
@@ -180,6 +180,17 @@
   some extend. In particular, site-wide defaults may be overridden by
   a private \verb|$ISABELLE_HOME_USER/etc/settings|.
   
+  \item[\indexdef{}{setting}{ISABELLE\_PLATFORM}\hypertarget{setting.ISABELLE-PLATFORM}{\hyperlink{setting.ISABELLE-PLATFORM}{\mbox{\isa{\isatt{ISABELLE{\isacharunderscore}PLATFORM}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}}] is automatically
+  set to a symbolic identifier for the underlying hardware and
+  operating system.  The Isabelle platform identification always
+  refers to the 32 bit variant, even this is a 64 bit machine.  Note
+  that the ML or Java runtime may have a different idea, depending on
+  which binaries are actually run.
+
+  \item[\indexdef{}{setting}{ISABELLE\_PLATFORM64}\hypertarget{setting.ISABELLE-PLATFORM64}{\hyperlink{setting.ISABELLE-PLATFORM64}{\mbox{\isa{\isatt{ISABELLE{\isacharunderscore}PLATFORM{\isadigit{6}}{\isadigit{4}}}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}}] is similar to
+  \hyperlink{setting.ISABELLE-PLATFORM}{\mbox{\isa{\isatt{ISABELLE{\isacharunderscore}PLATFORM}}}} but refers to the proper 64 bit variant
+  on a platform that supports this; the value is empty for 32 bit.
+
   \item[\indexdef{}{setting}{ISABELLE\_PROCESS}\hypertarget{setting.ISABELLE-PROCESS}{\hyperlink{setting.ISABELLE-PROCESS}{\mbox{\isa{\isatt{ISABELLE{\isacharunderscore}PROCESS}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}}, \hyperlink{setting.ISABELLE-TOOL}{\mbox{\isa{\isatt{ISABELLE{\isacharunderscore}TOOL}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}}] are automatically set to the full path
   names of the \hyperlink{executable.isabelle-process}{\mbox{\isa{\isatt{isabelle{\isacharminus}process}}}} and \hyperlink{executable.isabelle}{\mbox{\isa{\isatt{isabelle}}}} executables, respectively.  Thus other tools and scripts
   need not assume that the \hyperlink{file.$ISABELLE-HOME/bin}{\mbox{\isa{\isatt{{\isachardollar}ISABELLE{\isacharunderscore}HOME{\isacharslash}bin}}}} directory is
--- a/lib/scripts/getsettings	Sat Apr 17 21:40:29 2010 +0200
+++ b/lib/scripts/getsettings	Sat Apr 17 22:58:29 2010 +0200
@@ -27,6 +27,9 @@
   "$ISABELLE_TOOL" "$@"
 }
 
+#platform
+. "$ISABELLE_HOME/lib/scripts/isabelle-platform"
+
 #Isabelle distribution identifier -- filled in automatically!
 ISABELLE_IDENTIFIER=""
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/scripts/isabelle-platform	Sat Apr 17 22:58:29 2010 +0200
@@ -0,0 +1,63 @@
+#
+# determine general hardware and operating system type for Isabelle
+#
+# NOTE: The ML system or JVM may have their own idea about the platform!
+
+ISABELLE_PLATFORM="unknown-platform"
+ISABELLE_PLATFORM64=""
+
+case $(uname -s) in
+  Linux)
+    case $(uname -m) in
+      i?86)
+        ISABELLE_PLATFORM=x86-linux
+        ;;
+      x86_64)
+        ISABELLE_PLATFORM=x86-linux
+        ISABELLE_PLATFORM64=x86_64-linux
+        ;;
+    esac
+    ;;
+  Darwin)
+    case $(uname -m) in
+      i?86)
+        ISABELLE_PLATFORM=x86-darwin
+        if [ "$(sysctl -n hw.optional.x86_64 2>/dev/null)" = 1 ]; then
+          ISABELLE_PLATFORM64=x86_64-darwin
+        fi
+        ;;
+      Power* | power* | ppc)
+        ISABELLE_PLATFORM=ppc-darwin
+        ;;
+    esac
+    ;;
+  CYGWIN_NT*)
+    case $(uname -m) in
+      i?86)
+        ISABELLE_PLATFORM=x86-cygwin
+        ;;
+    esac
+    ;;
+  SunOS)
+    case $(uname -r) in
+      5.*)
+        case $(uname -p) in
+          sparc)
+            ISABELLE_PLATFORM=sparc-solaris
+            ;;
+          i?86)
+            ISABELLE_PLATFORM=x86-solaris
+            ;;
+        esac
+        ;;
+    esac
+    ;;
+  FreeBSD|NetBSD)
+    case $(uname -m) in
+      i?86)
+        ISABELLE_PLATFORM=x86-bsd
+        ;;
+    esac
+    ;;
+esac
+