src/Pure/Admin/build_jcef.scala
author wenzelm
Fri, 01 Apr 2022 17:06:10 +0200
changeset 75393 87ebf5a50283
parent 75102 678fae02f9b3
child 75394 42267c650205
permissions -rw-r--r--
clarified formatting, for the sake of scala3;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
73476
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
     1
/*  Title:      Pure/Admin/build_jcef.scala
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
     3
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
     4
Build Isabelle component for Java Chromium Embedded Framework (JCEF).
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
     5
See also:
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
     6
75102
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
     7
  - https://github.com/jcefmaven/jcefbuild
73476
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
     8
  - https://github.com/chromiumembedded/java-cef
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
     9
*/
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    10
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    11
package isabelle
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    12
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    13
75393
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 75102
diff changeset
    14
object Build_JCEF {
73476
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    15
  /* platform information */
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    16
75102
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    17
  sealed case class JCEF_Platform(
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    18
    platform_name: String, archive: String, lib: String, library: String)
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    19
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    20
  private val linux_library =
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    21
    """ISABELLE_JCEF_LIBRARY="$ISABELLE_JCEF_LIB/libcef.so"
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    22
      export LD_LIBRARY_PATH="$ISABELLE_JCEF_LIB:$JAVA_HOME/lib:$LD_LIBRARY_PATH""""
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    23
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    24
  private val macos_library =
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    25
    """export JAVA_LIBRARY_PATH="$ISABELLE_JCEF_HOME/bin/jcef_app.app/Contents/Java:$ISABELLE_JCEF_LIB:$JAVA_LIBRARY_PATH""""
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    26
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    27
  private val windows_library =
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    28
    """export PATH="$ISABELLE_JCEF_LIB:$PATH""""
73476
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    29
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    30
  val platforms: List[JCEF_Platform] =
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    31
    List(
75102
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    32
      JCEF_Platform("x86_64-linux", "linux-amd64.tar.gz", "bin/lib/linux64", linux_library),
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    33
      JCEF_Platform("arm64-linux", "linux-arm64.tar.gz", "bin/lib/linux64", linux_library),
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    34
      JCEF_Platform("x86_64-darwin", "macosx-amd64.tar.gz",
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    35
        "bin/jcef_app.app/Contents/Frameworks/Chromium Embedded Framework.framework/Libraries", macos_library),
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    36
      JCEF_Platform("arm64-darwin", "macosx-arm64.tar.gz",
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    37
        "bin/jcef_app.app/Contents/Frameworks/Chromium Embedded Framework.framework/Libraries", macos_library),
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    38
      JCEF_Platform("x86_64-windows", "windows-amd64.tar.gz", "bin/lib/win64", windows_library))
73476
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    39
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    40
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    41
  /* build JCEF */
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    42
75102
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    43
  val default_url = "https://github.com/jcefmaven/jcefbuild/releases/download"
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    44
  val default_version = "1.0.18"
73476
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    45
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    46
  def build_jcef(
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    47
    base_url: String = default_url,
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    48
    version: String = default_version,
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    49
    target_dir: Path = Path.current,
75393
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 75102
diff changeset
    50
    progress: Progress = new Progress
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 75102
diff changeset
    51
  ): Unit = {
73476
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    52
    /* component name */
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    53
75102
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    54
    val component = "jcef-" + version
73476
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    55
    val component_dir = Isabelle_System.new_directory(target_dir + Path.basic(component))
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    56
    progress.echo("Component " + component_dir)
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    57
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    58
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    59
    /* download and assemble platforms */
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    60
75102
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    61
    val platform_settings: List[String] =
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    62
      for (platform <- platforms) yield {
75393
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 75102
diff changeset
    63
        Isabelle_System.with_tmp_file("archive", ext = "tar.gz")(archive_file => {
75102
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    64
          val url = base_url + "/" + version + "/" + platform.archive
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    65
          Isabelle_System.download_file(url, archive_file, progress = progress)
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    66
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    67
          val platform_dir = component_dir + Path.explode(platform.platform_name)
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    68
          Isabelle_System.make_directory(platform_dir)
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    69
          Isabelle_System.gnutar("-xzf " + File.bash_path(archive_file), dir = platform_dir).check
73476
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    70
75102
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    71
          for {
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    72
            file <- File.find_files(platform_dir.file).iterator
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    73
            name = file.getName
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    74
            if name.endsWith(".dll") || name.endsWith(".exe")
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    75
          } File.set_executable(File.path(file), true)
73476
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    76
75102
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    77
          val classpath =
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    78
            File.find_files(platform_dir.file, pred = (file => file.getName.endsWith(".jar")))
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    79
              .flatMap(file => File.relative_path(platform_dir, File.path(file)))
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    80
              .map(jar => "        " + quote("$ISABELLE_JCEF_HOME/" + jar.implode))
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    81
              .mkString(" \\\n")
73476
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    82
75102
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    83
          "    " + platform.platform_name + ")\n" +
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    84
          "      " + "classpath \\\n" + classpath + "\n" +
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    85
          "      " + "ISABELLE_JCEF_LIB=\"$ISABELLE_JCEF_HOME/" + platform.lib + "\"\n" +
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    86
          "      " + platform.library + "\n" +
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    87
          "      " + ";;"
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    88
        })
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    89
      }
73476
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    90
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    91
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    92
    /* settings */
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    93
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    94
    val etc_dir = Isabelle_System.make_directory(component_dir + Path.basic("etc"))
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    95
    File.write(etc_dir + Path.basic("settings"),
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    96
      """# -*- shell-script -*- :mode=shellscript:
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    97
75102
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    98
ISABELLE_JCEF_PLATFORM="${ISABELLE_WINDOWS_PLATFORM64:-${ISABELLE_APPLE_PLATFORM64:-$ISABELLE_PLATFORM64}}"
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
    99
if [ -d "$COMPONENT/$ISABELLE_JCEF_PLATFORM" ]
73476
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   100
then
75102
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
   101
  ISABELLE_JCEF_HOME="$COMPONENT/$ISABELLE_JCEF_PLATFORM"
73476
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   102
  ISABELLE_JCEF_LIBRARY=""
75102
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
   103
  case "$ISABELLE_JCEF_PLATFORM" in
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
   104
""" + cat_lines(platform_settings) + """
73476
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   105
  esac
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   106
fi
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   107
""")
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   108
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   109
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   110
    /* README */
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   111
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   112
    File.write(component_dir + Path.basic("README"),
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   113
      """This distribution of Java Chromium Embedded Framework (JCEF)
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   114
has been assembled from the binary builds from
75102
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
   115
https://github.com/jcefmaven/jcefbuild/releases/tag/""" +version + """
73476
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   116
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   117
Examples invocations:
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   118
75102
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
   119
* Command-line
73476
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   120
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   121
  isabelle env bash -c 'isabelle java -Djava.library.path="$(platform_path "$ISABELLE_JCEF_LIB")" tests.detailed.MainFrame'
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   122
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   123
* Scala REPL (e.g. Isabelle/jEdit Console)
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   124
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   125
  import isabelle._
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   126
  System.setProperty("java.library.path", File.platform_path(Path.explode("$ISABELLE_JCEF_LIB")))
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   127
  org.cef.CefApp.startup(Array())
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   128
  GUI_Thread.later { val frame = new tests.detailed.MainFrame(false, false, false, Array()); frame.setSize(1200,900); frame.setVisible(true) }
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   129
75102
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
   130
* Demo websites
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
   131
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
   132
    https://mozilla.github.io/pdf.js/web/viewer.html
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
   133
    https://www.w3schools.com/w3css/w3css_demo.asp
678fae02f9b3 improved support for Java Chromium Embedded Framework (JCEF): works on x86_64-linux and x86_64-windows with jdk-15 (not jdk-17), does not work on arm64 and darwin;
wenzelm
parents: 73566
diff changeset
   134
73476
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   135
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   136
        Makarius
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   137
        """ + Date.Format.date(Date.now()) + "\n")
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   138
  }
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   139
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   140
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   141
  /* Isabelle tool wrapper */
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   142
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   143
  val isabelle_tool =
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   144
    Isabelle_Tool("build_jcef", "build component for Java Chromium Embedded Framework",
75393
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 75102
diff changeset
   145
      Scala_Project.here, args => {
73476
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   146
      var target_dir = Path.current
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   147
      var base_url = default_url
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   148
      var version = default_version
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   149
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   150
      val getopts = Getopts("""
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   151
Usage: isabelle build_jcef [OPTIONS]
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   152
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   153
  Options are:
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   154
    -D DIR       target directory (default ".")
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   155
    -U URL       download URL (default: """" + default_url + """")
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   156
    -V VERSION   version (default: """" + default_version + """")
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   157
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   158
  Build component for Java Chromium Embedded Framework.
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   159
""",
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   160
        "D:" -> (arg => target_dir = Path.explode(arg)),
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   161
        "U:" -> (arg => base_url = arg),
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   162
        "V:" -> (arg => version = arg))
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   163
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   164
      val more_args = getopts(args)
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   165
      if (more_args.nonEmpty) getopts.usage()
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   166
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   167
      val progress = new Console_Progress()
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   168
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   169
      build_jcef(base_url = base_url, version = version, target_dir = target_dir,
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   170
        progress = progress)
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   171
    })
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   172
}