diff options
author | Bruce Forstall <brucefo@microsoft.com> | 2016-11-22 16:42:57 -0800 |
---|---|---|
committer | Bruce Forstall <brucefo@microsoft.com> | 2016-11-23 14:31:00 -0800 |
commit | aad84026d7c5dc10b877bec263f4456a31584772 (patch) | |
tree | 65d14bacd30f614153859a20bcaf3c34f1fcd8bf /src | |
parent | 965e50d7ee6f860fd71d40dd74af74b87dcc930b (diff) | |
download | coreclr-aad84026d7c5dc10b877bec263f4456a31584772.tar.gz coreclr-aad84026d7c5dc10b877bec263f4456a31584772.tar.bz2 coreclr-aad84026d7c5dc10b877bec263f4456a31584772.zip |
Make RyuJIT/x86 the default x86 JIT
JIT32 becomes compatjit.dll and RyuJIT LEGACY_BACKEND becomes legacyjit.dll
(and is an altjit).
If JIT32 is not being built, then RyuJIT LEGACY_BACKEND becomes compatjit.dll
and is a normal jit (not an altjit).
Both clrjit.dll and compatjit.dll are added to the JIT NuGet package.
Diffstat (limited to 'src')
-rw-r--r-- | src/.nuget/Microsoft.NETCore.Jit/win/Microsoft.NETCore.Jit.pkgproj | 1 | ||||
-rw-r--r-- | src/jit/CMakeLists.txt | 22 | ||||
-rw-r--r-- | src/jit/compatjit/.gitmirror | 1 | ||||
-rw-r--r-- | src/jit/compatjit/CMakeLists.txt | 66 | ||||
-rw-r--r-- | src/jit/crossgen/CMakeLists.txt | 4 | ||||
-rw-r--r-- | src/jit/dll/CMakeLists.txt | 10 | ||||
-rw-r--r-- | src/jit/legacyjit/.gitmirror | 1 | ||||
-rw-r--r-- | src/jit/legacyjit/CMakeLists.txt | 62 | ||||
-rw-r--r-- | src/jit/protojit/CMakeLists.txt | 11 | ||||
-rw-r--r-- | src/jit/standalone/CMakeLists.txt | 21 |
10 files changed, 166 insertions, 33 deletions
diff --git a/src/.nuget/Microsoft.NETCore.Jit/win/Microsoft.NETCore.Jit.pkgproj b/src/.nuget/Microsoft.NETCore.Jit/win/Microsoft.NETCore.Jit.pkgproj index 0a43ac4ceb..66106c30dc 100644 --- a/src/.nuget/Microsoft.NETCore.Jit/win/Microsoft.NETCore.Jit.pkgproj +++ b/src/.nuget/Microsoft.NETCore.Jit/win/Microsoft.NETCore.Jit.pkgproj @@ -8,6 +8,7 @@ </PropertyGroup> <ItemGroup> <ArchitectureSpecificNativeFile Include="$(BinDir)clrjit.dll" /> + <ArchitectureSpecificNativeFile Condition="'$(PackagePlatform)' == 'x86'" Include="$(BinDir)compatjit.dll" /> <CrossArchitectureSpecificNativeFile Include="$(BinDir)$(CrossTargetComponentFolder)\clrjit.dll" /> <File Include="@(ArchitectureSpecificNativeFile)"> <TargetPath>runtimes/$(PackageTargetRuntime)/native</TargetPath> diff --git a/src/jit/CMakeLists.txt b/src/jit/CMakeLists.txt index a5b5fc55d9..fb3c1cab56 100644 --- a/src/jit/CMakeLists.txt +++ b/src/jit/CMakeLists.txt @@ -7,7 +7,7 @@ include_directories("../inc") # Enable the following for UNIX altjit on Windows # add_definitions(-DALT_JIT) -if (CLR_CMAKE_TARGET_ARCH_AMD64) +if (CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_I386) add_definitions(-DFEATURE_SIMD) add_definitions(-DFEATURE_AVX_SUPPORT) endif () @@ -195,19 +195,17 @@ endif() add_custom_target(jit_exports DEPENDS ${JIT_EXPORTS_FILE}) -set(JIT_BASE_NAME clrjit) -if (CLR_BUILD_JIT32) - set(JIT_BASE_NAME ryujit) -endif() - -if(WIN32) - add_definitions(-DFX_VER_INTERNALNAME_STR=${JIT_BASE_NAME}.dll) -endif(WIN32) - add_subdirectory(dll) add_subdirectory(crossgen) add_subdirectory(standalone) -if (CLR_CMAKE_PLATFORM_ARCH_I386 OR CLR_CMAKE_PLATFORM_ARCH_ARM) +if (CLR_CMAKE_PLATFORM_ARCH_ARM) add_subdirectory(protojit) -endif (CLR_CMAKE_PLATFORM_ARCH_I386 OR CLR_CMAKE_PLATFORM_ARCH_ARM) +endif (CLR_CMAKE_PLATFORM_ARCH_ARM) + +if (CLR_CMAKE_PLATFORM_ARCH_I386) + add_subdirectory(legacyjit) + if (NOT CLR_BUILD_JIT32) + add_subdirectory(compatjit) + endif () +endif (CLR_CMAKE_PLATFORM_ARCH_I386) diff --git a/src/jit/compatjit/.gitmirror b/src/jit/compatjit/.gitmirror new file mode 100644 index 0000000000..f507630f94 --- /dev/null +++ b/src/jit/compatjit/.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/compatjit/CMakeLists.txt b/src/jit/compatjit/CMakeLists.txt new file mode 100644 index 0000000000..360be96c91 --- /dev/null +++ b/src/jit/compatjit/CMakeLists.txt @@ -0,0 +1,66 @@ +project(compatjit) + +# This compatjit.dll is only built if we are not building JIT32 as compatjit.dll. +# It is the same build as legacyjit.dll, just with a different name, and not +# built as an altjit. + +add_definitions(-DLEGACY_BACKEND) + +add_definitions(-DFEATURE_NO_HOST) +add_definitions(-DSELF_NO_HOST) +# Note that legacy back-end does not define FEATURE_READYTORUN_COMPILER. +remove_definitions(-DFEATURE_MERGE_JIT_AND_ENGINE) + +# No SIMD in legacy back-end. +remove_definitions(-DFEATURE_SIMD) +remove_definitions(-DFEATURE_AVX_SUPPORT) + +if(WIN32) + add_definitions(-DFX_VER_INTERNALNAME_STR=compatjit.dll) +endif(WIN32) + +add_library_clr(compatjit + SHARED + ${SHARED_LIB_SOURCES} +) + +add_dependencies(compatjit jit_exports) + +set_property(TARGET compatjit APPEND_STRING PROPERTY LINK_FLAGS ${JIT_EXPORTS_LINKER_OPTION}) +set_property(TARGET compatjit 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(compatjit + ${RYUJIT_LINK_LIBRARIES} +) + +# add the install targets +install_clr(compatjit) diff --git a/src/jit/crossgen/CMakeLists.txt b/src/jit/crossgen/CMakeLists.txt index f79d9e72ce..6440e91a04 100644 --- a/src/jit/crossgen/CMakeLists.txt +++ b/src/jit/crossgen/CMakeLists.txt @@ -1,7 +1,7 @@ include(${CLR_DIR}/crossgen.cmake) -if(CLR_CMAKE_TARGET_ARCH_I386 OR CLR_CMAKE_TARGET_ARCH_ARM) +if(CLR_CMAKE_TARGET_ARCH_ARM) add_definitions(-DLEGACY_BACKEND) endif() -add_library_clr(${JIT_BASE_NAME}_crossgen ${SOURCES}) +add_library_clr(clrjit_crossgen ${SOURCES}) diff --git a/src/jit/dll/CMakeLists.txt b/src/jit/dll/CMakeLists.txt index fcf869c98f..43ed07eae5 100644 --- a/src/jit/dll/CMakeLists.txt +++ b/src/jit/dll/CMakeLists.txt @@ -1,20 +1,20 @@ project(ClrJit) -if(CLR_CMAKE_TARGET_ARCH_I386 OR CLR_CMAKE_TARGET_ARCH_ARM) +if(CLR_CMAKE_TARGET_ARCH_ARM) add_definitions(-DLEGACY_BACKEND) -endif(CLR_CMAKE_TARGET_ARCH_I386 OR CLR_CMAKE_TARGET_ARCH_ARM) +endif(CLR_CMAKE_TARGET_ARCH_ARM) # Disable the following for UNIX altjit on Windows if(CLR_CMAKE_PLATFORM_UNIX) add_compile_options(-fPIC) - add_library_clr(${JIT_BASE_NAME}_static + add_library_clr(clrjit_static STATIC ${SHARED_LIB_SOURCES} ) - add_dependencies(${JIT_BASE_NAME}_static coreclrpal gcinfo) + add_dependencies(clrjit_static coreclrpal gcinfo) else() - add_library_clr(${JIT_BASE_NAME}_static + add_library_clr(clrjit_static ${SOURCES} ) # Disable up to here (see above) the following for UNIX altjit on Windows diff --git a/src/jit/legacyjit/.gitmirror b/src/jit/legacyjit/.gitmirror new file mode 100644 index 0000000000..f507630f94 --- /dev/null +++ b/src/jit/legacyjit/.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/legacyjit/CMakeLists.txt b/src/jit/legacyjit/CMakeLists.txt new file mode 100644 index 0000000000..7a45739ec3 --- /dev/null +++ b/src/jit/legacyjit/CMakeLists.txt @@ -0,0 +1,62 @@ +project(legacyjit) + +add_definitions(-DLEGACY_BACKEND) +add_definitions(-DALT_JIT) +add_definitions(-DFEATURE_NO_HOST) +add_definitions(-DSELF_NO_HOST) +# Note that legacy back-end does not define FEATURE_READYTORUN_COMPILER. +remove_definitions(-DFEATURE_MERGE_JIT_AND_ENGINE) + +# No SIMD in legacy back-end. +remove_definitions(-DFEATURE_SIMD) +remove_definitions(-DFEATURE_AVX_SUPPORT) + +if(WIN32) + add_definitions(-DFX_VER_INTERNALNAME_STR=legacyjit.dll) +endif(WIN32) + +add_library_clr(legacyjit + SHARED + ${SHARED_LIB_SOURCES} +) + +add_dependencies(legacyjit jit_exports) + +set_property(TARGET legacyjit APPEND_STRING PROPERTY LINK_FLAGS ${JIT_EXPORTS_LINKER_OPTION}) +set_property(TARGET legacyjit 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(legacyjit + ${RYUJIT_LINK_LIBRARIES} +) + +# add the install targets +install_clr(legacyjit) diff --git a/src/jit/protojit/CMakeLists.txt b/src/jit/protojit/CMakeLists.txt index 259c7da6b2..91c69e9a83 100644 --- a/src/jit/protojit/CMakeLists.txt +++ b/src/jit/protojit/CMakeLists.txt @@ -6,11 +6,9 @@ add_definitions(-DSELF_NO_HOST) add_definitions(-DFEATURE_READYTORUN_COMPILER) remove_definitions(-DFEATURE_MERGE_JIT_AND_ENGINE) -# Enable SIMD support for RyuJIT/x86. -if (CLR_CMAKE_TARGET_ARCH_I386) - add_definitions(-DFEATURE_SIMD) - add_definitions(-DFEATURE_AVX_SUPPORT) -endif (CLR_CMAKE_TARGET_ARCH_I386) +if(WIN32) + add_definitions(-DFX_VER_INTERNALNAME_STR=protojit.dll) +endif(WIN32) add_library_clr(protojit SHARED @@ -35,7 +33,8 @@ if(CLR_CMAKE_PLATFORM_UNIX) ) else() list(APPEND RYUJIT_LINK_LIBRARIES - msvcrt.lib + ${STATIC_MT_CRT_LIB} + ${STATIC_MT_VCRT_LIB} kernel32.lib advapi32.lib ole32.lib diff --git a/src/jit/standalone/CMakeLists.txt b/src/jit/standalone/CMakeLists.txt index 2e6317098e..f20d3790c7 100644 --- a/src/jit/standalone/CMakeLists.txt +++ b/src/jit/standalone/CMakeLists.txt @@ -1,22 +1,27 @@ project(ryujit) + add_definitions(-DFEATURE_NO_HOST) add_definitions(-DSELF_NO_HOST) add_definitions(-DFEATURE_READYTORUN_COMPILER) remove_definitions(-DFEATURE_MERGE_JIT_AND_ENGINE) -if(CLR_CMAKE_TARGET_ARCH_I386 OR CLR_CMAKE_TARGET_ARCH_ARM) +if(CLR_CMAKE_TARGET_ARCH_ARM) add_definitions(-DLEGACY_BACKEND) endif() -add_library_clr(${JIT_BASE_NAME} +if(WIN32) + add_definitions(-DFX_VER_INTERNALNAME_STR=clrjit.dll) +endif(WIN32) + +add_library_clr(clrjit SHARED ${SHARED_LIB_SOURCES} ) -add_dependencies(${JIT_BASE_NAME} jit_exports) +add_dependencies(clrjit jit_exports) -set_property(TARGET ${JIT_BASE_NAME} APPEND_STRING PROPERTY LINK_FLAGS ${JIT_EXPORTS_LINKER_OPTION}) -set_property(TARGET ${JIT_BASE_NAME} APPEND_STRING PROPERTY LINK_DEPENDS ${JIT_EXPORTS_FILE}) +set_property(TARGET clrjit APPEND_STRING PROPERTY LINK_FLAGS ${JIT_EXPORTS_LINKER_OPTION}) +set_property(TARGET clrjit APPEND_STRING PROPERTY LINK_DEPENDS ${JIT_EXPORTS_FILE}) set(RYUJIT_LINK_LIBRARIES utilcodestaticnohost @@ -47,12 +52,12 @@ else() ) endif(CLR_CMAKE_PLATFORM_UNIX) -target_link_libraries(${JIT_BASE_NAME} +target_link_libraries(clrjit ${RYUJIT_LINK_LIBRARIES} ) # add the install targets -install_clr(${JIT_BASE_NAME}) +install_clr(clrjit) # Enable profile guided optimization -add_pgo(${JIT_BASE_NAME}) +add_pgo(clrjit) |