diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 47e634cf83..2cf1592bfe 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -163,6 +163,17 @@ jobs: with: name: ${{ matrix.artifact }} path: bloop-artifacts/${{ matrix.artifact }} + + - name: Sanity check of the generated binary + run: sbt publishLocal + + - name: Check on windows + if: matrix.os == 'windows-latest' + run: cli/target/graalvm-native-image/bloop-cli.exe about + + - name: Check on other systems + if: matrix.os == 'windows-latest' + run: cli/target/graalvm-native-image/bloop-cli about release: name: Release version on ${{ matrix.os }} diff --git a/build.sbt b/build.sbt index effb961215..e70d0f0375 100644 --- a/build.sbt +++ b/build.sbt @@ -227,7 +227,7 @@ lazy val cliSettings = Seq( graalVMNativeImageOptions ++= { val reflectionFile = (Compile / Keys.sourceDirectory).value./("graal")./("reflection.json") assert(reflectionFile.exists, s"${reflectionFile.getAbsolutePath()} doesn't exist") - List( + val baseOptions = List( "--add-exports=org.graalvm.nativeimage.base/com.oracle.svm.util=ALL-UNNAMED", "--add-exports=org.graalvm.nativeimage.builder/com.oracle.svm.core.jni=ALL-UNNAMED", "--add-exports=org.graalvm.nativeimage.builder/com.oracle.svm.core.jdk=ALL-UNNAMED", @@ -242,6 +242,13 @@ lazy val cliSettings = Seq( "--initialize-at-build-time=scala.runtime.StructuralCallSite", "--initialize-at-build-time=scala.runtime.EmptyMethodCache" ) + + if (scala.util.Properties.isWin) { + val staticLibs = (Compile / Keys.sourceDirectory).value./("graal")./("static-libs") + baseOptions :+ s"-H:CLibraryPath=${staticLibs}" + } else { + baseOptions + } } ) diff --git a/cli/src/main/graal/static-libs/csjniutils-0.3.3.lib b/cli/src/main/graal/static-libs/csjniutils-0.3.3.lib new file mode 100644 index 0000000000..74935b37ff Binary files /dev/null and b/cli/src/main/graal/static-libs/csjniutils-0.3.3.lib differ diff --git a/cli/src/main/scala/bloop/cli/Directories.scala b/cli/src/main/scala/bloop/cli/Directories.scala index d2191e8610..24f84825e1 100644 --- a/cli/src/main/scala/bloop/cli/Directories.scala +++ b/cli/src/main/scala/bloop/cli/Directories.scala @@ -3,6 +3,7 @@ package bloop.cli import scala.util.Properties import dev.dirs.ProjectDirectories +import dev.dirs.impl.Windows import dev.dirs.jni.WindowsJni trait Directories { @@ -31,7 +32,15 @@ object Directories { } def default(): Directories = { - OsLocations(ProjectDirectories.from(null, null, "ScalaCli", WindowsJni.getJdkAwareSupplier())) + val name = "ScalaCli" + val windows = + if (coursier.paths.Util.useJni()) + WindowsJni.getJdkAwareSupplier() + else + Windows.getDefaultSupplier() + + OsLocations(ProjectDirectories.from(null, null, name, windows)) + } def under(dir: os.Path): Directories =