clarified command-line;
authorwenzelm
Fri, 11 Nov 2016 11:30:31 +0100
changeset 64489 db1bc2732554
parent 64488 bc77e19aad44
child 64490 abc34a149690
clarified command-line;
src/Pure/Admin/build_polyml.scala
--- a/src/Pure/Admin/build_polyml.scala	Fri Nov 11 11:02:31 2016 +0100
+++ b/src/Pure/Admin/build_polyml.scala	Fri Nov 11 11:30:31 2016 +0100
@@ -55,13 +55,14 @@
   lazy val default_platform = Isabelle_System.getenv_strict("ISABELLE_PLATFORM32")
 
   def build_polyml(
-    source: Path,
+    root: Path,
     progress: Progress = Ignore_Progress,
     platform: String = default_platform,
     options: List[String] = Nil,
     other_bash: String = "")
   {
-    source.is_dir || error("Bad source directory: " + source)
+    if (!((root + Path.explode("configure")).is_file && (root + Path.explode("PolyML")).is_dir))
+      error("Bad Poly/ML root directory: " + root)
 
     val info =
       platform_info.get(platform) getOrElse
@@ -87,7 +88,7 @@
 
     Isabelle_System.bash(
       if (other_bash == "") script else Bash.string(other_bash) + " -c " + Bash.string(script),
-      cwd = source.file, env = null,
+      cwd = root.file, env = null,
       progress_stdout = progress.echo(_),
       progress_stderr = progress.echo(_)).check
 
@@ -98,7 +99,7 @@
 
     for {
       d <- List("target/bin", "target/lib")
-      dir = source + Path.explode(d)
+      dir = root + Path.explode(d)
       entry <- File.read_dir(dir)
     } File.move(dir + Path.explode(entry), target)
 
@@ -113,34 +114,29 @@
     Isabelle_Tool("build_polyml", "build Poly/ML from sources", args =>
     {
       Command_Line.tool0 {
-        var options = List.empty[String]
         var other_bash = ""
         var platform = default_platform
 
         val getopts = Getopts("""
-Usage: isabelle build_polyml [OPTIONS] [SOURCE]
+Usage: isabelle build_polyml [OPTIONS] ROOT [CONFIGURE_OPTIONS]
 
   Options are:
-    -O OPTS...   additional options ./configure (e.g. --with-gmp)
     -b EXE       other bash executable (notably for msys on Windows)
-    -p PLATFORM  platform identifier and target directory
+    -p PLATFORM  platform identifier and target directory (default: """ + default_platform + """)
 
-  Build Poly/ML in SOURCE directory (default: .) for
-  given PLATFORM (default: """ + default_platform + """).
+  Build Poly/ML in its source ROOT directory of its sources, with additional
+  CONFIGURE_OPTIONS (e.g. --with-gmp).
 """,
-          "O:" -> (arg => options = options ::: List(arg)),
           "b:" -> (arg => other_bash = arg),
           "p:" -> (arg => platform = arg))
 
         val more_args = getopts(args)
-        val source =
+        val (root, options) =
           more_args match {
-            case Nil => Path.current
-            case List(source) => Path.explode(source)
-            case _ => getopts.usage()
+            case root :: options => (Path.explode(root), options)
+            case Nil => getopts.usage()
           }
-        build_polyml(source,
-          progress = new Console_Progress, platform = platform, options = options,
+        build_polyml(root, progress = new Console_Progress, platform = platform, options = options,
             other_bash = other_bash)
       }
     }, admin = true)