summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruce Forstall <brucefo@microsoft.com>2016-11-22 16:42:57 -0800
committerBruce Forstall <brucefo@microsoft.com>2016-11-23 14:31:00 -0800
commitaad84026d7c5dc10b877bec263f4456a31584772 (patch)
tree65d14bacd30f614153859a20bcaf3c34f1fcd8bf /src
parent965e50d7ee6f860fd71d40dd74af74b87dcc930b (diff)
downloadcoreclr-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.pkgproj1
-rw-r--r--src/jit/CMakeLists.txt22
-rw-r--r--src/jit/compatjit/.gitmirror1
-rw-r--r--src/jit/compatjit/CMakeLists.txt66
-rw-r--r--src/jit/crossgen/CMakeLists.txt4
-rw-r--r--src/jit/dll/CMakeLists.txt10
-rw-r--r--src/jit/legacyjit/.gitmirror1
-rw-r--r--src/jit/legacyjit/CMakeLists.txt62
-rw-r--r--src/jit/protojit/CMakeLists.txt11
-rw-r--r--src/jit/standalone/CMakeLists.txt21
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)