I tried to build Graal by following this readme https://github.com/oracle/graal/blob/master/compiler/README.md exactly to the point. But whenever I called mx build it fails with the following message:
D:\downloads\graal\graal\compiler>mx.cmd build
python d:\downloads\graal\mx\/mx.py build
Note: d:\downloads\graal\mx\java\ListModules.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Compiling com.oracle.mxtool.compilerserver with javac... [d:\downloads\graal\mx\mxbuild\java\com.oracle.mxtool.compilerserver\bin\com\oracle\mxtool\compilerserver\CompilerDaemon.class does not exist]
Compiling com.oracle.truffle.api.source with javac-daemon... [D:\downloads\graal\graal\truffle\mxbuild\src\com.oracle.truffle.api.source\bin\com\oracle\truffle\api\source\CharSequenceReader.class does not exist]
Compiling org.graalvm.options with javac-daemon... [D:\downloads\graal\graal\sdk\mxbuild\src\org.graalvm.options\bin\org\graalvm\options\OptionCategory.class does not exist]
Compiling org.graalvm.polyglot with javac-daemon... [dependency org.graalvm.options updated]
Compiling org.graalvm.word with javac-daemon... [D:\downloads\graal\graal\sdk\mxbuild\src\org.graalvm.word\bin\org\graalvm\word\ComparableWord.class does not exist]
Compiling org.graalvm.nativeimage with javac-daemon... [dependency org.graalvm.word updated]
Compiling org.graalvm.collections with javac-daemon... [D:\downloads\graal\graal\sdk\mxbuild\src\org.graalvm.collections\bin\org\graalvm\collections\EconomicMap.class does not exist]
Archiving GRAAL_SDK... [dependency org.graalvm.polyglot updated]
Building Java module org.graalvm.graal_sdk from GRAAL_SDK
Compiling com.oracle.truffle.api with javac-daemon... [dependency com.oracle.truffle.api.source updated]
Compiling com.oracle.truffle.api.dsl with javac-daemon... [dependency com.oracle.truffle.api updated]
Compiling com.oracle.truffle.api.profiles with javac-daemon... [dependency com.oracle.truffle.api updated]
Compiling com.oracle.truffle.api.instrumentation with javac-daemon... [dependency com.oracle.truffle.api.profiles updated]
Compiling com.oracle.truffle.dsl.processor with javac-daemon... [dependency com.oracle.truffle.api.dsl updated]
Archiving TRUFFLE_DSL_PROCESSOR_INTERNAL... [dependency com.oracle.truffle.dsl.processor updated]
Compiling com.oracle.truffle.api.interop with javac-daemon... [dependency TRUFFLE_DSL_PROCESSOR_INTERNAL updated]
Compiling com.oracle.truffle.dsl.processor.interop with javac-daemon... [dependency com.oracle.truffle.api.interop updated]
Compiling com.oracle.truffle.api.utilities with javac-daemon... [dependency com.oracle.truffle.api updated]
Compiling com.oracle.truffle.api.object with javac-daemon... [dependency com.oracle.truffle.api.interop updated]
Compiling com.oracle.truffle.api.object.dsl with javac-daemon... [dependency com.oracle.truffle.api.object updated]
Compiling com.oracle.truffle.object.dsl.processor with javac-daemon... [dependency com.oracle.truffle.api.object.dsl updated]
Archiving TRUFFLE_DSL_PROCESSOR_INTEROP_INTERNAL... [dependency com.oracle.truffle.dsl.processor updated]
d:\downloads\graal\mx\/mx.py:1300: UserWarning: Duplicate name: 'META-INF/services/javax.annotation.processing.Processor'
arc.zf.writestr(arcname, contents)
d:\downloads\graal\mx\/mx.py:8450: UserWarning: Duplicate name: 'META-INF/services/javax.annotation.processing.Processor'
arc.zf.writestr(arcname, '\n'.join(dist.definedAnnotationProcessors) + '\n')
Traceback (most recent call last):
File "d:\downloads\graal\mx\/mx.py", line 17850, in <module>
main()
File "d:\downloads\graal\mx\/mx.py", line 17832, in main
retcode = c(command_args)
File "d:\downloads\graal\mx\/mx.py", line 11809, in build
t.execute()
File "d:\downloads\graal\mx\/mx.py", line 807, in execute
self.build()
File "d:\downloads\graal\mx\/mx.py", line 1611, in build
self.subject.make_archive()
File "d:\downloads\graal\mx\/mx.py", line 1415, in make_archive
self.notify_updated()
File "d:\downloads\graal\mx\/mx.py", line 937, in notify_updated
l(self)
File "d:\downloads\graal\mx\/mx.py", line 8452, in _refineAnnotationProcessorServiceConfig
arc.zf.writestr(arcname, lp.read(arcname))
File "d:\downloads\graal\mx\/mx.py", line 12318, in __exit__
SafeFileCreation.__exit__(self, exc_type, exc_value, traceback)
File "d:\downloads\graal\mx\/mx.py", line 12219, in __exit__
_handle_file(self.tmpPath, self.path)
File "d:\downloads\graal\mx\/mx.py", line 12218, in _handle_file
os.rename(tmpPath, path)
WindowsError: [Error 183] Eine Datei kann nicht erstellt werden, wenn sie bereits vorhanden ist
java.net.SocketException: Connection reset
java.net.SocketException: Connection reset
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:210)
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:210) at java.base/java.net.SocketInputStream.read(SocketInputStream.java:141)
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:141) at java.base/sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
at java.base/sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284) at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.base/java.io.InputStreamReader.read(InputStreamReader.java:185)
at java.base/java.io.InputStreamReader.read(InputStreamReader.java:185) at java.base/java.io.BufferedReader.fill(BufferedReader.java:161)
at java.base/java.io.BufferedReader.fill(BufferedReader.java:161)
at java.base/java.io.BufferedReader.readLine(BufferedReader.java:326)
at java.base/java.io.BufferedReader.readLine(BufferedReader.java:326) at java.base/java.io.BufferedReader.readLine(BufferedReader.java:392)
D:\downloads\graal\graal\compiler>
at java.base/java.io.BufferedReader.readLine(BufferedReader.java:392)
at com.oracle.mxtool.compilerserver.CompilerDaemon$Connection.run(CompilerDaemon.java:135) at com.oracle.mxtool.compilerserver.CompilerDaemon$Connection.run(CompilerDaemon.java:135)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:514) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:514)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:844)
at java.base/java.lang.Thread.run(Thread.java:844)
D:\downloads\graal\graal\compiler>
Information about the system:
I also did not see any appveyor build file, so I do not know whether I am doing something wrong or whether Graal can actually be built on Windows and whether JDK 10.0.1 is actually supported.
Regarding building on Windows, the README.md says (if on Windows, replace mx with mx.cmd), so I guess Graal can be built on Windows. Regarding JDK 10.0.1, the README.md says: Graal works with build 181 or later of JDK9. which can be interpreted as "Graal works with that build 181 of JDK9 or any higher build of JDK9", or: "Graal works with that build 181 of JDK9 or any higher build including any higher major JDK versions". So, which one is it?
Oh, btw. that error message "WindowsError: [Error 183] Eine Datei kann nicht erstellt werden, wenn sie bereits vorhanden ist" translate in English to: "The file cannot be created if it already exists."
Hi @httpdigest , this may not be the cause of the problem, but that looks like an old version of mx. Can you please mx update and try again.
Unfortunately we do not currently develop or test on Windows so this is not too surprising. I'll clarify that in the README. I will also clarify that Graal _should_ work with JDK 9,10,11...
Thank you for your reply! As part of that readme, it asks to git clone https://github.com/graalvm/mx.git. Will this not give me the latest mx? I also did mx update which says: Pulling head updates in D:\downloads\graal\mx with Git
True
Alright, I will develop on Ubuntu/Linux then.
What does mx version show? It should be 5.153.0.
Yes, exactly. It does show
D:\downloads\graal\mx>mx version
python D:\downloads\graal\mx\/mx.py version
5.153.0
Sorry - my version of mx was out of date! ;-)
@httpdigest Did you make further progress with the build?
I have made some progress compiling Graal on Windows 10, see my fork at https://github.com/harmanpa/graal
It requires some changes in mx (hence also my fork at https://github.com/harmanpa/mx) to deal with windows paths.
I have added a dependency on https://github.com/dlfcn-win32/dlfcn-win32 in order to compile the Truffle native code.
Currently the build is failing on compiling the libffi dependency.
I've also tried this today.
I had to modify the mx.cmd file to this:
@setlocal
@set PYTHONPATH=%PYTHONPATH%;%~dp0
@python %~dp0mx.py %*
@endlocal
Currently I'm running into a bunch of these when running mx build:
project org.graalvm.options was removed as JDK 1.8 is not available
project org.graalvm.polyglot was removed as JDK 1.8 is not available
project org.graalvm.word was removed as JDK 1.8 is not available
project org.graalvm.nativeimage was removed as JDK 1.8 is not available
project org.graalvm.collections was removed as JDK 1.8 is not available
distribution GRAAL_SDK was removed as all its dependencies were removed
project com.oracle.truffle.api was removed as JDK 1.8 is not available
project com.oracle.truffle.api.dsl was removed as JDK 1.8 is not available
project com.oracle.truffle.api.profiles was removed as JDK 1.8 is not available
project com.oracle.truffle.api.interop was removed as JDK 1.8 is not available
project com.oracle.truffle.api.interop.java was removed as JDK 1.8 is not available
project com.oracle.truffle.api.instrumentation was removed as JDK 1.8 is not available
project com.oracle.truffle.api.vm was removed as JDK 1.8 is not available
project com.oracle.truffle.tools was removed as JDK 1.8 is not available
project org.graalvm.compiler.api.directives was removed as JDK 1.8 is not available
project org.graalvm.compiler.api.runtime was removed as JDK 1.8 is not available
project org.graalvm.compiler.api.test was removed as JDK 1.8 is not available
project org.graalvm.compiler.nodeinfo was removed as JDK 1.8 is not available
project org.graalvm.compiler.serviceprovider was removed as JDK 1.8 is not available
I'm also using JDK 10 (build 10-ea+42). It seems like mx is checking that the JDK version is exactly 1.8?
Yes, mx now enforces strict JDK compliance for projects. Please see this thread for more detail.
@dougxc Ah yes! I ran into that in the mailing list as well, but didn't remember ;) I guess the documentation in graal/compiler/README.md
("Graal should work out of the box with JDK 9 or later.") should be updated.
Is building with JDK 9+ not supported any more? Or do the compliance values still need to be updated?
You should still be able to build with JAVA_HOME=/path/to/jdk9 as long as EXTRA_JAVA_HOMES=/path/to/jvmci-jdk8. It just means the projects with a Java compliance > 9 will be ignored.
as long as
EXTRA_JAVA_HOMES=/path/to/jvmci-jdk8
Ok, I never got the jvmci jdk 8 build working on windows, and there's no distribution :/ So I wanted to try with JDK 9.
Oh well.
Maybe you can build a "JVMCI jars only" JVMCI JDK8 on Windows following the advice here: http://mail.openjdk.java.net/pipermail/graal-dev/2018-June/005413.html
That would allow you to build Graal and try run on JDK 10.
That worked, running mx build now gets me to this point:
J:\Projects\graal\graal\compiler> mx build
JAVA_HOME: C:\Program Files\Java\jdk-11
EXTRA_JAVA_HOMES: J:\Projects\graal\graal-jvmci-8\jdk1.8.0_144\windows-amd64\product
Compiling com.oracle.mxtool.compilerserver with javac(JDK 11)... [J:\Projects\graal\mx\mxbuild\java\com.oracle.mxtool.compilerserver\bin\com\oracle\mxtool\compilerserver\CompilerDaemon.class does not exist]
Compiling org.graalvm.options with javac-daemon(JDK 1.8)... [J:\Projects\graal\graal\sdk\mxbuild\src\org.graalvm.options\bin\org\graalvm\options\OptionCategory.class does not exist]
Compiling org.graalvm.polyglot with javac-daemon(JDK 1.8)... [dependency org.graalvm.options updated]
Compiling org.graalvm.word with javac-daemon(JDK 1.8)... [J:\Projects\graal\graal\sdk\mxbuild\src\org.graalvm.word\bin\org\graalvm\word\ComparableWord.class does not exist]
Compiling org.graalvm.nativeimage with javac-daemon(JDK 1.8)... [dependency org.graalvm.word updated]
Compiling org.graalvm.collections with javac-daemon(JDK 1.8)... [J:\Projects\graal\graal\sdk\mxbuild\src\org.graalvm.collections\bin\org\graalvm\collections\EconomicMap.class does not exist]
Archiving GRAAL_SDK... [dependency org.graalvm.polyglot updated]
Building Java module org.graalvm.graal_sdk from GRAAL_SDK
Compiling com.oracle.truffle.api with javac-daemon(JDK 1.8)... [dependency GRAAL_SDK updated]
Compiling com.oracle.truffle.api.dsl with javac-daemon(JDK 1.8)... [dependency com.oracle.truffle.api updated]
Compiling com.oracle.truffle.api.profiles with javac-daemon(JDK 1.8)... [dependency com.oracle.truffle.api updated]
Compiling com.oracle.truffle.api.instrumentation with javac-daemon(JDK 1.8)... [dependency com.oracle.truffle.api.profiles updated]
Compiling com.oracle.truffle.dsl.processor with javac-daemon(JDK 1.8)... [dependency com.oracle.truffle.api.dsl updated]
Compiling com.oracle.truffle.dsl.processor.jdk9 with javac-daemon(JDK 11)... [dependency com.oracle.truffle.dsl.processor updated]
Archiving TRUFFLE_DSL_PROCESSOR_INTERNAL... [dependency com.oracle.truffle.dsl.processor updated]
Compiling com.oracle.truffle.api.interop with javac-daemon(JDK 1.8)... [dependency TRUFFLE_DSL_PROCESSOR_INTERNAL updated]
Compiling com.oracle.truffle.dsl.processor.interop with javac-daemon(JDK 1.8)... [dependency com.oracle.truffle.api.interop updated]
Compiling com.oracle.truffle.api.utilities with javac-daemon(JDK 1.8)... [dependency com.oracle.truffle.api updated]
Compiling com.oracle.truffle.api.object with javac-daemon(JDK 1.8)... [dependency com.oracle.truffle.api.interop updated]
Compiling com.oracle.truffle.api.object.dsl with javac-daemon(JDK 1.8)... [dependency com.oracle.truffle.api.object updated]
Compiling com.oracle.truffle.object.dsl.processor with javac-daemon(JDK 1.8)... [dependency com.oracle.truffle.api.object.dsl updated]
Archiving TRUFFLE_DSL_PROCESSOR_INTEROP_INTERNAL... [dependency com.oracle.truffle.dsl.processor updated]
WARNING: J:\Projects\graal\graal\truffle\mxbuild\dists\truffle-dsl-processor-interop-internal.jar: avoid overwrite of META-INF/services/javax.annotation.processing.Processor
new: J:\Projects\graal\graal\truffle\mxbuild\src\com.oracle.truffle.dsl.processor.interop\bin\META-INF\services\javax.annotation.processing.Processor
old: J:\Projects\graal\graal\truffle\mxbuild\src\com.oracle.truffle.dsl.processor\bin\META-INF\services\javax.annotation.processing.Processor
Traceback (most recent call last):
File "J:\Projects\graal\mx\mx.py", line 17671, in <module>
main()
File "J:\Projects\graal\mx\mx.py", line 17653, in main
retcode = c(command_args)
File "J:\Projects\graal\mx\mx.py", line 11709, in build
t.execute()
File "J:\Projects\graal\mx\mx.py", line 809, in execute
self.build()
File "J:\Projects\graal\mx\mx.py", line 1679, in build
self.subject.make_archive()
File "J:\Projects\graal\mx\mx.py", line 1469, in make_archive
self.notify_updated()
File "J:\Projects\graal\mx\mx.py", line 939, in notify_updated
l(self)
File "J:\Projects\graal\mx\mx.py", line 8512, in _refineAnnotationProcessorServiceConfig
arc.zf.writestr(arcname, lp.read(arcname))
File "J:\Projects\graal\mx\mx.py", line 12222, in __exit__
SafeFileCreation.__exit__(self, exc_type, exc_value, traceback)
File "J:\Projects\graal\mx\mx.py", line 12123, in __exit__
_handle_file(self.tmpPath, self.path)
File "J:\Projects\graal\mx\mx.py", line 12121, in _handle_file
os.remove(path)
WindowsError: [Error 32] The process cannot access the file because it is being used by another process: 'J:\\Projects\\graal\\graal\\truffle\\mxbuild\\dists\\truffle-dsl-processor-interop-internal.jar'
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:210)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)java.net.SocketException: Connection reset
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.io.InputStreamReader.read(InputStreamReader.java:184) at java.base/java.net.SocketInputStream.read(SocketInputStream.java:186)
at java.io.BufferedReader.fill(BufferedReader.java:161) at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140)
at java.io.BufferedReader.readLine(BufferedReader.java:324) at java.base/sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
at java.io.BufferedReader.readLine(BufferedReader.java:389) at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
at com.oracle.mxtool.compilerserver.CompilerDaemon$Connection.run(CompilerDaemon.java:137) at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.base/java.io.InputStreamReader.read(InputStreamReader.java:185)
at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.base/java.io.BufferedReader.fill(BufferedReader.java:161)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.base/java.io.BufferedReader.readLine(BufferedReader.java:326)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.base/java.io.BufferedReader.readLine(BufferedReader.java:392)
at java.lang.Thread.run(Thread.java:748)
at com.oracle.mxtool.compilerserver.CompilerDaemon$Connection.run(CompilerDaemon.java:137)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:831)
Seems like there's some kind of race condition going on?
@dougxc Thanks for the helps so far, but I think I'll just wait until someone else gets this working or there is a distribution of GraalVM for windows. I don't wanna keep tying you up.
Yes, it's probably best to wait for Windows to be a supported platform.
This is needed for Closure-Compiler native binaries to be available on Windows.
Currently running into an error on Windows 7 with openjdk1.8.0_192-jvmci-0.54 off master branch of graal and mx
Building libffi...
Extracting LIBFFI_SOURCES...
Applying patches...
Building libffi with Ninja...
[1/9] CC src\closures.obj
FAILED: src/closures.obj
cl -nologo -showIncludes -ID:\Documents\Programming\GRAAL\graal\truffle\mxbuild\windows-amd64\src\libffi\libffi-3.2.1\include -ID:\Documents\Programming\GRAAL\graal\truffle\mxbuild\windows-amd64\src\libffi\libffi-3.2.1\src -MD -O2 -c D:\Documents\Programming\GRAAL\graal\truffle\mxbuild\windows-amd64\src\libffi\libffi-3.2.1\src\closures.c -Fosrc\closures.obj
CreateProcess failed: The system cannot find the file specified.
[2/9] CC src\java_raw_api.obj
FAILED: src/java_raw_api.obj
cl -nologo -showIncludes -ID:\Documents\Programming\GRAAL\graal\truffle\mxbuild\windows-amd64\src\libffi\libffi-3.2.1\include -ID:\Documents\Programming\GRAAL\graal\truffle\mxbuild\windows-amd64\src\libffi\libffi-3.2.1\src -MD -O2 -c D:\Documents\Programming\GRAAL\graal\truffle\mxbuild\windows-amd64\src\libffi\libffi-3.2.1\src\java_raw_api.c -Fosrc\java_raw_api.obj
CreateProcess failed: The system cannot find the file specified.
[3/9] CC src\prep_cif.obj
FAILED: src/prep_cif.obj
cl -nologo -showIncludes -ID:\Documents\Programming\GRAAL\graal\truffle\mxbuild\windows-amd64\src\libffi\libffi-3.2.1\include -ID:\Documents\Programming\GRAAL\graal\truffle\mxbuild\windows-amd64\src\libffi\libffi-3.2.1\src -MD -O2 -c D:\Documents\Programming\GRAAL\graal\truffle\mxbuild\windows-amd64\src\libffi\libffi-3.2.1\src\prep_cif.c -Fosrc\prep_cif.obj
CreateProcess failed: The system cannot find the file specified.
[4/9] CC src\raw_api.obj
FAILED: src/raw_api.obj
cl -nologo -showIncludes -ID:\Documents\Programming\GRAAL\graal\truffle\mxbuild\windows-amd64\src\libffi\libffi-3.2.1\include -ID:\Documents\Programming\GRAAL\graal\truffle\mxbuild\windows-amd64\src\libffi\libffi-3.2.1\src -MD -O2 -c D:\Documents\Programming\GRAAL\graal\truffle\mxbuild\windows-amd64\src\libffi\libffi-3.2.1\src\raw_api.c -Fosrc\raw_api.obj
CreateProcess failed: The system cannot find the file specified.
[5/9] CC src\types.obj
FAILED: src/types.obj
cl -nologo -showIncludes -ID:\Documents\Programming\GRAAL\graal\truffle\mxbuild\windows-amd64\src\libffi\libffi-3.2.1\include -ID:\Documents\Programming\GRAAL\graal\truffle\mxbuild\windows-amd64\src\libffi\libffi-3.2.1\src -MD -O2 -c D:\Documents\Programming\GRAAL\graal\truffle\mxbuild\windows-amd64\src\libffi\libffi-3.2.1\src\types.c -Fosrc\types.obj
CreateProcess failed: The system cannot find the file specified.
[6/9] CC src\x86\ffi.obj
FAILED: src/x86/ffi.obj
cl -nologo -showIncludes -ID:\Documents\Programming\GRAAL\graal\truffle\mxbuild\windows-amd64\src\libffi\libffi-3.2.1\include -ID:\Documents\Programming\GRAAL\graal\truffle\mxbuild\windows-amd64\src\libffi\libffi-3.2.1\src -MD -O2 -c D:\Documents\Programming\GRAAL\graal\truffle\mxbuild\windows-amd64\src\libffi\libffi-3.2.1\src\x86\ffi.c -Fosrc\x86\ffi.obj
CreateProcess failed: The system cannot find the file specified.
[7/9] CPP src\x86\win64.asm
FAILED: src/x86/win64.asm
cl -nologo -showIncludes -EP -P -ID:\Documents\Programming\GRAAL\graal\truffle\mxbuild\windows-amd64\src\libffi\libffi-3.2.1\include -ID:\Documents\Programming\GRAAL\graal\truffle\mxbuild\windows-amd64\src\libffi\libffi-3.2.1\src -MD -O2 -c D:\Documents\Programming\GRAAL\graal\truffle\mxbuild\windows-amd64\src\libffi\libffi-3.2.1\src\x86\win64.S -Fisrc\x86\win64.asm
CreateProcess failed: The system cannot find the file specified.
ninja: build stopped: subcommand failed.
@pejovica is this just a matter of updating mx?
@deltasquad451 building of native projects on Windows (Truffle NFI and its dependencies) requires MSVC 2010 SP1 compiler, which seems to be missing. However, you should be able to build without native projects by running mx build --no-native.
@pejovica Thanks, issue has been resolved.
Most helpful comment
@httpdigest Did you make further progress with the build?
I have made some progress compiling Graal on Windows 10, see my fork at https://github.com/harmanpa/graal
It requires some changes in mx (hence also my fork at https://github.com/harmanpa/mx) to deal with windows paths.
I have added a dependency on https://github.com/dlfcn-win32/dlfcn-win32 in order to compile the Truffle native code.
Currently the build is failing on compiling the libffi dependency.