diff options
Diffstat (limited to 'src/jit/protononjit')
-rw-r--r-- | src/jit/protononjit/.gitmirror | 1 | ||||
-rw-r--r-- | src/jit/protononjit/CMakeLists.txt | 84 | ||||
-rw-r--r-- | src/jit/protononjit/SOURCES | 10 | ||||
-rw-r--r-- | src/jit/protononjit/makefile | 7 | ||||
-rw-r--r-- | src/jit/protononjit/protononjit.def | 7 | ||||
-rw-r--r-- | src/jit/protononjit/protononjit.nativeproj | 86 |
6 files changed, 195 insertions, 0 deletions
diff --git a/src/jit/protononjit/.gitmirror b/src/jit/protononjit/.gitmirror new file mode 100644 index 0000000000..f507630f94 --- /dev/null +++ b/src/jit/protononjit/.gitmirror @@ -0,0 +1 @@ +Only contents of this folder, excluding subfolders, will be mirrored by the Git-TFS Mirror.
\ No newline at end of file diff --git a/src/jit/protononjit/CMakeLists.txt b/src/jit/protononjit/CMakeLists.txt new file mode 100644 index 0000000000..e209e4cd36 --- /dev/null +++ b/src/jit/protononjit/CMakeLists.txt @@ -0,0 +1,84 @@ +project(protononjit) + +add_definitions(-DALT_JIT) +add_definitions(-DFEATURE_NO_HOST) +add_definitions(-DSELF_NO_HOST) +add_definitions(-DFEATURE_READYTORUN_COMPILER) +remove_definitions(-DFEATURE_MERGE_JIT_AND_ENGINE) + +remove_definitions(-DFEATURE_SIMD) +remove_definitions(-DFEATURE_AVX_SUPPORT) + +if (CLR_CMAKE_PLATFORM_ARCH_I386) + remove_definitions(-D_TARGET_X86_=1) + add_definitions(-D_TARGET_ARM_) + set(JIT_ARCH_ALTJIT_SOURCES ${JIT_ARM_SOURCES}) +elseif(CLR_CMAKE_PLATFORM_ARCH_AMD64) + remove_definitions(-D_TARGET_AMD64_=1) + add_definitions(-D_TARGET_ARM64_) + set(JIT_ARCH_ALTJIT_SOURCES ${JIT_ARM64_SOURCES}) +else() + clr_unknown_arch() +endif() + +if (NOT WIN32) + if (CLR_CMAKE_PLATFORM_ARCH_I386) + remove_definitions(-DUNIX_X86_ABI) + elseif(CLR_CMAKE_PLATFORM_ARCH_AMD64) + remove_definitions(-DUNIX_AMD64_ABI) + remove_definitions(-DFEATURE_UNIX_AMD64_STRUCT_PASSING) + else() + clr_unknown_arch() + endif() +endif(NOT WIN32) + +if(WIN32) + add_definitions(-DFX_VER_INTERNALNAME_STR=protononjit.dll) +endif(WIN32) + +add_library_clr(protononjit + SHARED + ${SHARED_LIB_SOURCES} + ${JIT_ARCH_ALTJIT_SOURCES} +) + +add_dependencies(protononjit jit_exports) + +set_property(TARGET protononjit APPEND_STRING PROPERTY LINK_FLAGS ${JIT_EXPORTS_LINKER_OPTION}) +set_property(TARGET protononjit APPEND_STRING PROPERTY LINK_DEPENDS ${JIT_EXPORTS_FILE}) + +set(RYUJIT_LINK_LIBRARIES + utilcodestaticnohost + gcinfo +) + +if(CLR_CMAKE_PLATFORM_UNIX) + list(APPEND RYUJIT_LINK_LIBRARIES + mscorrc_debug + coreclrpal + palrt + ) +else() + list(APPEND RYUJIT_LINK_LIBRARIES + ${STATIC_MT_CRT_LIB} + ${STATIC_MT_VCRT_LIB} + kernel32.lib + advapi32.lib + ole32.lib + oleaut32.lib + uuid.lib + user32.lib + version.lib + shlwapi.lib + bcrypt.lib + crypt32.lib + RuntimeObject.lib + ) +endif(CLR_CMAKE_PLATFORM_UNIX) + +target_link_libraries(protononjit + ${RYUJIT_LINK_LIBRARIES} +) + +# add the install targets +install_clr(protononjit) diff --git a/src/jit/protononjit/SOURCES b/src/jit/protononjit/SOURCES new file mode 100644 index 0000000000..353c501873 --- /dev/null +++ b/src/jit/protononjit/SOURCES @@ -0,0 +1,10 @@ + +# +# DO NOT EDIT THIS FILE!!! Modify the project file in this directory +# This file merely allows the MSBuild project file in this directory to be integrated with Build.Exe +# +TARGETTYPE=NOTARGET +CLR_TARGETTYPE=DLL +MSBuildProjectFile=protononjit.nativeproj +SOURCES= +
\ No newline at end of file diff --git a/src/jit/protononjit/makefile b/src/jit/protononjit/makefile new file mode 100644 index 0000000000..bf27e8c84b --- /dev/null +++ b/src/jit/protononjit/makefile @@ -0,0 +1,7 @@ + +# +# DO NOT EDIT THIS FILE!!! Modify the project file in this directory +# This file merely allows the MSBuild project file in this directory to be integrated with Build.Exe +# + +!INCLUDE $(NTMAKEENV)\devdiv.def diff --git a/src/jit/protononjit/protononjit.def b/src/jit/protononjit/protononjit.def new file mode 100644 index 0000000000..1603af74ca --- /dev/null +++ b/src/jit/protononjit/protononjit.def @@ -0,0 +1,7 @@ +; Licensed to the .NET Foundation under one or more agreements. +; The .NET Foundation licenses this file to you under the MIT license. +; See the LICENSE file in the project root for more information. +EXPORTS + getJit + jitStartup + sxsJitStartup diff --git a/src/jit/protononjit/protononjit.nativeproj b/src/jit/protononjit/protononjit.nativeproj new file mode 100644 index 0000000000..64df6c5739 --- /dev/null +++ b/src/jit/protononjit/protononjit.nativeproj @@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + + <!-- + PROTO JIT: The purpose of this module is to provide an isolated environment to develop + the RyuJIT backend without interfering with the development of the frontend. The + idea is to fork codegen and registerfp, that way we leave the PUCLR backend intact so + it can be still consumed by the RyuJIT frontend separately maintaining the code stability + of the PUCLR codegen.cpp logic. + + This module is meant to be used as a throwaway or fallback cross-JIT (x86 -> arm) that will just + attempt to generate arm code, throw it away and then re-jit using the default jit on x86. + --> + + <!-- + Note that we are defining TargetArch directly because of altjit is not a real fully functional cross + compiled binary. It is just a convenience workaround for JIT devs. + --> + <PropertyGroup> + <TargetArch>arm</TargetArch> + </PropertyGroup> + + <!-- Import the CLR's settings --> + + <Import Project="$(_NTDRIVE)$(_NTROOT)\ndp\clr\clr.props" /> + + <PropertyGroup> + + <!-- Set the output --> + + <OutputName>protononjit</OutputName> + <FeatureMergeJitAndEngine>false</FeatureMergeJitAndEngine> + <TargetType>DYNLINK</TargetType> + <BuildCoreBinaries>false</BuildCoreBinaries> + <BuildSysBinaries>false</BuildSysBinaries> + + <!-- Motherhood & apple pie here --> + + <DllEntryPoint>_DllMainCRTStartup</DllEntryPoint> + <LinkSubsystem>windows</LinkSubsystem> + <LibCLib Condition="'$(FeatureMergeJitAndEngine)'!='true'">$(ClrCrtLib)</LibCLib> + + <!-- JIT specific baloney --> + + <LinkModuleDefinitionFile>$(OutputName).def</LinkModuleDefinitionFile> + + <ClDefines>$(ClDefines);_TARGET_ARM_=1</ClDefines> + <ClDefines>$(ClDefines);ALT_JIT</ClDefines> + + <Win32DllLibs>$(SdkLibPath)\kernel32.lib;$(SdkLibPath)\user32.lib;$(SdkLibPath)\advapi32.lib;$(SdkLibPath)\oleaut32.lib;$(SdkLibPath)\uuid.lib</Win32DllLibs> + <Win32DllLibs>$(Win32DllLibs);$(ClrLibPath)\utilcode.lib</Win32DllLibs> + + <!-- Profile-guided optimization --> + + <PogoOptimize>false</PogoOptimize> + <PogoInstrument>false</PogoInstrument> + <PogoUpdate>false</PogoUpdate> + + <!-- Do we want to build with msvcdis disassembly? This should be enabled for DEBUG, disabled otherwise. + However, it can be useful to enable it temporarily in non-DEBUG builds, by changing the EnableLateDisasm property. + --> + <EnableLateDisasm>false</EnableLateDisasm> + <ClDefines Condition="'$(EnableLateDisasm)' == 'true'">$(ClDefines);LATE_DISASM=1</ClDefines> + <LinkDelayLoad Condition="'$(EnableLateDisasm)' == 'true'">$(LinkDelayLoad);msvcdis$(VC_NONCRT_ProdVerX).dll</LinkDelayLoad> + <UseDelayimpLib Condition="'$(EnableLateDisasm)' == 'true' and '$(FeatureMergeJitAndEngine)'!='true'">true</UseDelayimpLib> + + </PropertyGroup> + + <!-- Leaf Project Items --> + <ItemGroup> + <ProjectReference Include="$(ClrSrcDirectory)utilcode\dyncrt\dyncrt.nativeproj" /> + <TargetLib Include="$(SdkLibPath)\mscoree.lib" /> + <TargetLib Include="$(ClrLibPath)\ArmGCInfo.lib"> + <ProjectReference>$(ClrSrcDirectory)gcinfo\armlib\ArmGCInfo.nativeproj</ProjectReference> + </TargetLib> + <TargetLib Condition="'$(UseDelayimpLib)' == 'true'" Include="$(ClrLibPath)\delayimp.lib"> + <ProjectReference>$(ClrSrcDirectory)delayimp\delayimp.nativeproj</ProjectReference> + </TargetLib> + <TargetLib Condition="'$(DebugBuild)' == 'true'" Include="$(SdkLibPath)\ole32.lib" /> + <TargetLib Condition="'$(EnableLateDisasm)' == 'true'" Include="$(VCToolsLibPath)\msvcdis.lib" /> + <RCResourceFile Include="..\native.rc" /> + </ItemGroup> + + <Import Project="..\jit.settings.targets" /> + +</Project> |