src/Pure/Build/build.scala
changeset 82972 ae65438eec0c
parent 82951 c5b07e7ab7f3
child 82974 9c34a1768178
equal deleted inserted replaced
82971:7e8c6cf127f0 82972:ae65438eec0c
   297     progress: Progress = new Progress,
   297     progress: Progress = new Progress,
   298     build_heap: Boolean = false,
   298     build_heap: Boolean = false,
   299     dirs: List[Path] = Nil,
   299     dirs: List[Path] = Nil,
   300     fresh: Boolean = false,
   300     fresh: Boolean = false,
   301     strict: Boolean = false
   301     strict: Boolean = false
   302   ): Int = {
   302   ): Results = {
   303     val selection = Sessions.Selection.session(logic)
   303     val selection = Sessions.Selection.session(logic)
   304     val rc =
   304 
   305       if (!fresh && build(options, selection = selection,
   305     def test_build(): Results =
   306             build_heap = build_heap, no_build = true, dirs = dirs).ok) Process_Result.RC.ok
   306       build(options, selection = selection,
       
   307         build_heap = build_heap, no_build = true, dirs = dirs)
       
   308 
       
   309     def full_build(): Results = {
       
   310       progress.echo("Build started for Isabelle/" + logic + " ...")
       
   311       build(options, selection = selection, progress = progress,
       
   312         build_heap = build_heap, fresh_build = fresh, dirs = dirs)
       
   313     }
       
   314 
       
   315     val results =
       
   316       if (fresh) full_build()
   307       else {
   317       else {
   308         progress.echo("Build started for Isabelle/" + logic + " ...")
   318         val results0 = test_build()
   309         build(options, selection = selection, progress = progress,
   319         if (results0.ok) results0 else full_build()
   310           build_heap = build_heap, fresh_build = fresh, dirs = dirs).rc
   320       }
   311       }
   321 
   312     if (strict && rc != Process_Result.RC.ok) error("Failed to build Isabelle/" + logic) else rc
   322     if (strict && !results.ok) error("Failed to build Isabelle/" + logic) else results
   313   }
   323   }
   314 
   324 
   315 
   325 
   316   /* Isabelle tool wrappers */
   326   /* Isabelle tool wrappers */
   317 
   327