# HG changeset patch # User wenzelm # Date 1744287153 -7200 # Node ID 0a6d57c4d58bba5431bdaa24dffec48e4e97e807 # Parent fcefbef691bf8353db9ef1512139f83cfb8258c7 more explicit build stages; diff -r fcefbef691bf -r 0a6d57c4d58b src/Pure/Admin/component_polyml.scala --- a/src/Pure/Admin/component_polyml.scala Thu Apr 10 13:43:37 2025 +0200 +++ b/src/Pure/Admin/component_polyml.scala Thu Apr 10 14:12:33 2025 +0200 @@ -61,6 +61,36 @@ /** build stages **/ + def make_polyml_gmp( + platform_context: Platform_Context, + root: Path, + options: List[String] = Nil + ): Path = { + val progress = platform_context.progress + val platform = platform_context.platform + + val platform_arch = if (platform.is_arm) "aarch64" else "x86_64" + val platform_os = + if (platform.is_linux) "unknown-linux-gnu" + else if (platform.is_windows) "w64-mingw32" + else if (platform.is_macos) """apple-darwin"$(uname -r)"""" + else error("Bad platform " + platform) + + val target_dir = root + Path.explode("target") + + progress.echo("Building GMP library ...") + platform_context.execute(root, + "[ -f Makefile ] && make distclean", + "./configure --enable-cxx --build=" + platform_arch + "-" + platform_os + + " --prefix=" + Bash.string(platform_context.standard_path(target_dir)) + + if_proper(options, " " + Bash.strings(options)), + "make", + "make check", + "make install") + + target_dir + } + def make_polyml( platform_context: Platform_Context, root: Path, @@ -239,22 +269,7 @@ Isabelle_System.download_file(gmp_url, archive, progress = progress) Isabelle_System.extract(archive, gmp_dir, strip = true) - val platform_arch = if (platform.is_arm) "aarch64" else "x86_64" - val platform_os = - if (platform.is_linux) "unknown-linux-gnu" - else if (platform.is_windows) "w64-mingw32" - else if (platform.is_macos) """apple-darwin"$(uname -r)"""" - else error("Bad platform " + platform) - - progress.echo("Building GMP library ...") - platform_context.execute(gmp_dir, - "./configure --enable-cxx --build=" + platform_arch + "-" + platform_os + - """ --prefix="$PWD/target"""", - "make", - "make check", - "make install") - - Some(gmp_dir + Path.explode("target")) + Some(make_polyml_gmp(platform_context, gmp_dir)) } @@ -367,6 +382,32 @@ /** Isabelle tool wrappers **/ val isabelle_tool1 = + Isabelle_Tool("make_polyml_gmp", "make GMP library from existing sources", Scala_Project.here, + { args => + var mingw = MinGW.none + + val getopts = Getopts(""" +Usage: isabelle make_polyml_gmp [OPTIONS] ROOT [CONFIGURE_OPTIONS] + + Options are: + -M DIR msys/mingw root specification for Windows + + Make GMP library in the ROOT directory of its sources, with additional + CONFIGURE_OPTIONS. +""", + "M:" -> (arg => mingw = MinGW(Path.explode(arg)))) + + val more_args = getopts(args) + val (root, options) = + more_args match { + case root :: options => (Path.explode(root), options) + case Nil => getopts.usage() + } + make_polyml_gmp(Platform_Context(mingw = mingw, progress = new Console_Progress), + root, options = options) + }) + + val isabelle_tool2 = Isabelle_Tool("make_polyml", "make Poly/ML from existing sources", Scala_Project.here, { args => var gmp_root: Option[Path] = None @@ -407,7 +448,7 @@ root, gmp_root = gmp_root, sha1_root = sha1_root, arch_64 = arch_64, options = options) }) - val isabelle_tool2 = + val isabelle_tool3 = Isabelle_Tool("component_polyml", "build Poly/ML component from official repository", Scala_Project.here, { args => diff -r fcefbef691bf -r 0a6d57c4d58b src/Pure/System/isabelle_tool.scala --- a/src/Pure/System/isabelle_tool.scala Thu Apr 10 13:43:37 2025 +0200 +++ b/src/Pure/System/isabelle_tool.scala Thu Apr 10 14:12:33 2025 +0200 @@ -196,6 +196,7 @@ Component_PDFjs.isabelle_tool, Component_PolyML.isabelle_tool1, Component_PolyML.isabelle_tool2, + Component_PolyML.isabelle_tool3, Component_PostgreSQL.isabelle_tool, Component_Prismjs.isabelle_tool, Component_Rsync.isabelle_tool,