Skip to content
This repository has been archived by the owner on Nov 1, 2020. It is now read-only.

[X86/ARM] Build on windows #5903

Open
BredPet opened this issue Jun 6, 2018 · 1 comment
Open

[X86/ARM] Build on windows #5903

BredPet opened this issue Jun 6, 2018 · 1 comment

Comments

@BredPet
Copy link
Contributor

BredPet commented Jun 6, 2018

I tried to compile X86 and ARM on Win. It fails.
X86 logs:

build.cmd x86
...
Build FAILED.

       "corert\bin\obj\Native\Windows_NT.x86.Debug\install.vcxproj" (default target) (1) ->
       "corert\bin\obj\Native\Windows_NT.x86.Debug\ALL_BUILD.vcxproj" (default target) (3) ->
       "corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj" (default target) (13) ->
       (ClCompile target) ->
         corert\src\native\jitinterface\jitinterface.cpp(70): warning C4183: 'QueryInterface': missing return type; assumed to be a member function returning 'int' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(71): warning C4183: 'AddRef': missing return type; assumed to be a member function returning 'int' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(72): warning C4183: 'Release': missing return type; assumed to be a member function returning 'int' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(79): warning C4183: 'ClrVirtualAlloc': missing return type; assumed to be a member function returning 'int' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(85): warning C4183: 'ClrVirtualFree': missing return type; assumed to be a member function returning 'int' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(87): warning C4183: 'ClrVirtualQuery': missing return type; assumed to be a member function returning 'int' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(88): warning C4183: 'ClrVirtualProtect': missing return type; assumed to be a member function returning 'int' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(89): warning C4183: 'ClrGetProcessHeap': missing return type; assumed to be a member function returning 'int' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(90): warning C4183: 'ClrHeapCreate': missing return type; assumed to be a member function returning 'int' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(91): warning C4183: 'ClrHeapDestroy': missing return type; assumed to be a member function returning 'int' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(92): warning C4183: 'ClrHeapAlloc': missing return type; assumed to be a member function returning 'int' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(93): warning C4183: 'ClrHeapFree': missing return type; assumed to be a member function returning 'int' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(94): warning C4183: 'ClrHeapValidate': missing return type; assumed to be a member function returning 'int' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(95): warning C4183: 'ClrGetProcessExecutableHeap': missing return type; assumed to be a member function returning 'int' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitwrapper.cpp(45): warning C4183: 'compileMethod': missing return type; assumed to be a member function returning 'int' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]

        "corert\bin\obj\Native\Windows_NT.x86.Debug\install.vcxproj" (default target) (1) ->  
        "corert\bin\obj\Native\Windows_NT.x86.Debug\ALL_BUILD.vcxproj" (default target) (3) ->
        "corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj" (default target) (13) ->
       (ClCompile target) ->
         corert\src\native\jitinterface\jitinterface.cpp(70): error C2059: syntax error: '(' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(70): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(70): error C2059: syntax error: ')' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(71): error C2059: syntax error: '(' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(71): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(71): error C2535: 'int EEMemoryManager::__attribute__(void)': member function already defined or declared [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(71): error C2059: syntax error: ')' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(72): error C2059: syntax error: '(' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(72): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(72): error C2535: 'int EEMemoryManager::__attribute__(void)': member function already defined or declared [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(72): error C2059: syntax error: ')' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(76): error C2059: syntax error: '(' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(76): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(76): error C2556: 'int *EEMemoryManager::__attribute__(void)': overloaded function differs only by return type from 'int EEMemoryManager::__attribute__(void)' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(76): error C2040: 'EEMemoryManager::__attribute__': 'int *(void)' differs inlevels of indirection from 'int (void)' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(76): error C2059: syntax error: ')' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(77): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(81): error C2059: syntax error: '(' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(81): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(81): error C2059: syntax error: ')' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(82): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(87): error C2059: syntax error: '(' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(87): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(87): error C2059: syntax error: ')' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(88): error C2059: syntax error: '(' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(88): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(88): error C2059: syntax error: ')' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(89): error C2059: syntax error: '(' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(89): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(89): error C2059: syntax error: ')' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(90): error C2059: syntax error: '(' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(90): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(90): error C2059: syntax error: ')' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(91): error C2059: syntax error: '(' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(91): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(91): error C2059: syntax error: ')' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(92): error C2059: syntax error: '(' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(92): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(92): error C2059: syntax error: ')' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(93): error C2059: syntax error: '(' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(93): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(93): error C2059: syntax error: ')' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(94): error C2059: syntax error: '(' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(94): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(94): error C2059: syntax error: ')' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(95): error C2059: syntax error: '(' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(95): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(95): error C2059: syntax error: ')' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitinterface.cpp(78): error C2440: 'return': cannot convert from 'void *' to 'int' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitwrapper.cpp(40): error C2059: syntax error: '(' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitwrapper.cpp(40): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitwrapper.cpp(40): error C2059: syntax error: ')' [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitwrapper.cpp(45): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]
         corert\src\native\jitinterface\jitwrapper.cpp(40): error C2253: 'Jit::compileMethod': pure specifier or abstract override specifier only allowed on virtual function [corert\bin\obj\Native\Windows_NT.x86.Debug\jitinterface\jitinterface.vcxproj]

    15 Warning(s)
    54 Error(s)

Time Elapsed 00:00:31.48
Native component build failed. Refer corert\buildscrip
ts\..\bin\Logs\Native_Windows_NT__x86__Debug.log for details.
Native component build failed. Refer corert\buildscrip
ts\..\bin\Logs\Native_Windows_NT__x86__Debug.log for details.

corert>

ARM logs:

corert>build.cmd arm
...

CMake Error at Runtime/Full/CMakeLists.txt:12 (add_library):
  Cannot find source file:

    corert\src/Native/Runtime/GC.asm

  Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm
  .hpp .hxx .in .txx


CMake Error at System.Private.TypeLoader.Native/CMakeLists.txt:36 (add_library):

  Cannot find source file:

    corert\src/Native/System.Private.TypeLoader.Native/ConstrainedCallSupportHelpers.asm

  Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm
  .hpp .hxx .in .txx


CMake Error at Runtime/Full/CMakeLists.txt:12 (add_library):
  No SOURCES given to target: Runtime


CMake Error at Runtime/Full/CMakeLists.txt:14 (add_library):
  No SOURCES given to target: Runtime.ServerGC


CMake Error at System.Private.TypeLoader.Native/CMakeLists.txt:36 (add_library):

  No SOURCES given to target: System.Private.TypeLoader.Native


-- Build files have been written to: corert\bin/obj/Native/Windows_NT.arm.Debug
Failed to generate native component build project
Native component build failed. Refer corert\buildscripts\..\bin\Logs\Native_Windows_NT__arm__Debug.log for details.

corert>

I was able to compile X86 with various edits, but there everything doesn't work very well.
Has anyone tried to build these architectures?) Has it ever worked?
@dotnet/arm32-corert-contrib

@MichalStrehovsky
Copy link
Member

There is an issue tracking x86 build that had some work done in the past (see referenced pull requests): #4589.

ARM/ARM64 is probably in a similar state (the runtime and System.Private.* class libraries should be buildable and fully working - it just needs the MSBuild/CMake build work to get it going in the CoreRT build system). We do build these and use these with the closed source .NET Native compiler (the one used to build Universal Windows Apps). The closed source compiler/runtime uses a separate build system that lives on the closed source side, but the files to compile are all here in this repo.

There would be some compiler work needed to emit the assembly helpers to get it working end to end (see things that throw NotImplementedException here (X86)), and we'll need an ObjectWriter package. For ARM, we'll likely want to add support for cross builds in the Windows build system.

We would welcome pull requests in this direction.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants