diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 13058de6b..af4ffe375 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,7 +47,6 @@ jobs: os: [ubuntu-latest, ubuntu-20.04-aarch64, macos-latest, windows-latest] java: [11, 17] env: - BUILD_SVM: "${{ matrix.os != 'windows-latest' && matrix.java != 17 }}" RUN_TESTS: "${{ matrix.os == 'ubuntu-latest' || matrix.java == 11 }}" RUN_WITH_COVERAGE: "${{ matrix.os == 'ubuntu-latest' && matrix.java == 17 }}" GRAALVM_HOME_ENV: "${{ matrix.os == 'windows-latest' && 'trufflesqueak-jvm' || 'trufflesqueak-svm' }}" @@ -65,45 +64,36 @@ jobs: - name: Set up dependencies shell: bash run: mx.trufflesqueak/utils.sh set-up-dependencies java${{ matrix.java }} - - name: Build TruffleSqueak JVM component - run: mx.trufflesqueak/utils.sh build-component trufflesqueak-jvm ${{ matrix.java }} ${{ env.INSTALLABLE_JVM_TARGET }} - if: ${{ env.BUILD_SVM != 'true' && matrix.os != 'windows-latest' }} - - name: Build TruffleSqueak JVM component via cmd.exe + - name: Build TruffleSqueak SVM component + run: mx.trufflesqueak/utils.sh build-component trufflesqueak-svm ${{ matrix.java }} ${{ env.INSTALLABLE_SVM_TARGET }} + if: ${{ matrix.os != 'windows-latest' }} + - name: Build TruffleSqueak SVM component via cmd.exe shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64 - call mx --env trufflesqueak-jvm --no-download-progress build --dependencies SMALLTALK_INSTALLABLE_JAVA${{ matrix.java }},GRAALVM_TRUFFLESQUEAK_JAVA${{ matrix.java }} - call mx --env trufflesqueak-jvm graalvm-home > graalvm-home-with-forward-slashes.txt + call mx --env trufflesqueak-svm --no-download-progress build --dependencies SMALLTALK_INSTALLABLE_SVM_JAVA${{ matrix.java }},GRAALVM_TRUFFLESQUEAK_SVM_JAVA${{ matrix.java }} + call mx --env trufflesqueak-svm graalvm-home > graalvm-home-with-forward-slashes.txt set /p GRAALVM_HOME=>%GITHUB_PATH% echo GRAALVM_HOME=%GRAALVM_HOME%>>%GITHUB_ENV% echo [%GRAALVM_HOME% set as $GRAALVM_HOME] - call mx --env trufflesqueak-jvm paths SMALLTALK_INSTALLABLE_JAVA${{ matrix.java }} > installable-path-with-forward-slashes.txt + call mx --env trufflesqueak-svm paths SMALLTALK_INSTALLABLE_SVM_JAVA${{ matrix.java }} > installable-path-with-forward-slashes.txt set /p INSTALLABLE_PATH= getHeaderFiles() { return Collections.singletonList(""); diff --git a/src/de.hpi.swa.trufflesqueak/src/de/hpi/swa/trufflesqueak/aot/SqueakSDL2Display.java b/src/de.hpi.swa.trufflesqueak/src/de/hpi/swa/trufflesqueak/aot/SqueakSDL2Display.java index 264cf2261..33b4f355c 100644 --- a/src/de.hpi.swa.trufflesqueak/src/de/hpi/swa/trufflesqueak/aot/SqueakSDL2Display.java +++ b/src/de.hpi.swa.trufflesqueak/src/de/hpi/swa/trufflesqueak/aot/SqueakSDL2Display.java @@ -10,6 +10,8 @@ import java.util.Arrays; import org.graalvm.nativeimage.PinnedObject; +import org.graalvm.nativeimage.Platform; +import org.graalvm.nativeimage.Platforms; import org.graalvm.nativeimage.UnmanagedMemory; import org.graalvm.nativeimage.c.struct.SizeOf; import org.graalvm.nativeimage.c.type.CIntPointer; @@ -49,6 +51,7 @@ import de.hpi.swa.trufflesqueak.nodes.accessing.AbstractPointersObjectNodes.AbstractPointersObjectReadNode; import de.hpi.swa.trufflesqueak.util.OS; +@Platforms({Platform.LINUX.class, Platform.DARWIN.class}) public final class SqueakSDL2Display implements SqueakDisplayInterface { private static final String DEFAULT_WINDOW_TITLE = "TruffleSqueak + SubstrateVM + SDL2"; diff --git a/src/de.hpi.swa.trufflesqueak/src/de/hpi/swa/trufflesqueak/image/SqueakImageContext.java b/src/de.hpi.swa.trufflesqueak/src/de/hpi/swa/trufflesqueak/image/SqueakImageContext.java index 7c31272d8..0dfdc7efa 100644 --- a/src/de.hpi.swa.trufflesqueak/src/de/hpi/swa/trufflesqueak/image/SqueakImageContext.java +++ b/src/de.hpi.swa.trufflesqueak/src/de/hpi/swa/trufflesqueak/image/SqueakImageContext.java @@ -12,6 +12,8 @@ import java.nio.file.Paths; import java.util.HashMap; +import org.graalvm.nativeimage.Platform; + import com.oracle.truffle.api.CompilerAsserts; import com.oracle.truffle.api.CompilerDirectives; import com.oracle.truffle.api.CompilerDirectives.CompilationFinal; @@ -617,7 +619,14 @@ public boolean isHeadless() { public void attachDisplayIfNecessary() { if (!isHeadless) { CompilerDirectives.transferToInterpreterAndInvalidate(); - display = TruffleOptions.AOT ? new SqueakSDL2Display(this) : new SqueakDisplay(this); + if (TruffleOptions.AOT) { + /* SDL2 backend only supported on Linux and Darwin */ + if (Platform.includedIn(Platform.LINUX.class) || Platform.includedIn(Platform.DARWIN.class)) { + display = new SqueakSDL2Display(this); + } + } else { + display = new SqueakDisplay(this); + } } }