summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Danes <onemihaid@hotmail.com>2015-08-01 11:04:16 +0300
committerMike Danes <onemihaid@hotmail.com>2015-08-04 11:00:34 +0300
commit8bb8ed66e4e54270e18e68c37515f21730c82cea (patch)
treea8f713371002b0a037965b4020ffd254a1de73aa /src
parentfd1fbb93e8435c371dea39f16c0cf6d030b8c7dd (diff)
downloadcoreclr-8bb8ed66e4e54270e18e68c37515f21730c82cea.tar.gz
coreclr-8bb8ed66e4e54270e18e68c37515f21730c82cea.tar.bz2
coreclr-8bb8ed66e4e54270e18e68c37515f21730c82cea.zip
Enable the Windows x86 build
This allows building the Windows x86 version of CoreCLR by using "x86" for the BuildArch parameter of build.cmd. Note that CMAKE_SYSTEM_PROCESSOR is no longer used in Windows builds to set IS_64BIT_BUILD. This change is enough to get CoreCLR to build but more changes are required for it to actually run correctly. In particular, the JIT compiler support for x86 is pretty limited at this point.
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt4
-rw-r--r--src/ToolBox/SOS/Strike/CMakeLists.txt9
-rw-r--r--src/binder/CMakeLists.txt4
-rw-r--r--src/classlibnative/CMakeLists.txt12
-rw-r--r--src/debug/daccess/CMakeLists.txt7
-rw-r--r--src/debug/di/CMakeLists.txt17
-rw-r--r--src/debug/ee/CMakeLists.txt7
-rw-r--r--src/debug/ee/wks/CMakeLists.txt8
-rw-r--r--src/dlls/mscoree/coreclr/CMakeLists.txt2
-rw-r--r--src/gcinfo/CMakeLists.txt7
-rw-r--r--src/inc/winwrap.h2
-rw-r--r--src/jit/CMakeLists.txt13
-rw-r--r--src/pal/tools/gen-buildsys-win.bat5
-rw-r--r--src/unwinder/CMakeLists.txt4
-rw-r--r--src/unwinder/dac/CMakeLists.txt8
-rw-r--r--src/vm/CMakeLists.txt76
-rw-r--r--src/vm/crossgen/CMakeLists.txt7
-rw-r--r--src/vm/i386/asmhelpers.asm6
-rw-r--r--src/vm/wks/CMakeLists.txt6
19 files changed, 149 insertions, 55 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index b811aed911..4520b9307c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -5,12 +5,14 @@ include_directories("inc/winrt")
include_directories("debug/inc")
if(CLR_CMAKE_PLATFORM_ARCH_AMD64)
include_directories("debug/inc/amd64")
+elseif(CLR_CMAKE_PLATFORM_ARCH_I386)
+ include_directories("debug/inc/i386")
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
include_directories("debug/inc/arm")
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64)
include_directories("debug/inc/arm64")
else()
- message(FATAL_ERROR "Only ARM, ARM64 and AMD64 is supported")
+ clr_unknown_arch()
endif()
include_directories("debug/inc/dump")
diff --git a/src/ToolBox/SOS/Strike/CMakeLists.txt b/src/ToolBox/SOS/Strike/CMakeLists.txt
index ce909d7989..eba017105d 100644
--- a/src/ToolBox/SOS/Strike/CMakeLists.txt
+++ b/src/ToolBox/SOS/Strike/CMakeLists.txt
@@ -3,6 +3,11 @@ if(CLR_CMAKE_PLATFORM_ARCH_AMD64)
add_definitions(-D_TARGET_WIN64_=1)
add_definitions(-DDBG_TARGET_64BIT)
add_definitions(-DDBG_TARGET_WIN64=1)
+elseif(CLR_CMAKE_PLATFORM_ARCH_I386)
+ add_definitions(-DSOS_TARGET_X86=1)
+ add_definitions(-D_TARGET_X86_=1)
+ add_definitions(-DDBG_TARGET_32BIT)
+ add_definitions(-DDBG_TARGET_WIN32=1)
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
add_definitions(-DSOS_TARGET_ARM=1)
add_definitions(-D_TARGET_WIN32_=1)
@@ -50,6 +55,10 @@ if(WIN32)
set(SOS_SOURCES_ARCH
disasmX86.cpp
)
+ elseif(CLR_CMAKE_PLATFORM_ARCH_I386)
+ set(SOS_SOURCES_ARCH
+ disasmX86.cpp
+ )
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
set(SOS_SOURCES_ARCH
disasmARM.cpp
diff --git a/src/binder/CMakeLists.txt b/src/binder/CMakeLists.txt
index b624d9fafa..5dbd09dac4 100644
--- a/src/binder/CMakeLists.txt
+++ b/src/binder/CMakeLists.txt
@@ -2,12 +2,14 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
if(CLR_CMAKE_PLATFORM_ARCH_AMD64)
include_directories(BEFORE "../vm/amd64")
+elseif(CLR_CMAKE_PLATFORM_ARCH_I386)
+ include_directories(BEFORE "../vm/i386")
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
include_directories(BEFORE "../vm/arm")
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64)
include_directories(BEFORE "../vm/arm64")
else()
- message(FATAL_ERROR "Only ARM, ARM64 and AMD64 is supported")
+ clr_unknown_arch()
endif()
include_directories(BEFORE "../vm")
include_directories(BEFORE "inc")
diff --git a/src/classlibnative/CMakeLists.txt b/src/classlibnative/CMakeLists.txt
index 683506bba7..5dce8609fb 100644
--- a/src/classlibnative/CMakeLists.txt
+++ b/src/classlibnative/CMakeLists.txt
@@ -2,22 +2,26 @@ include_directories(BEFORE "../vm")
include_directories("../inc")
if(CLR_CMAKE_PLATFORM_ARCH_AMD64)
include_directories(BEFORE "../vm/amd64")
+elseif(CLR_CMAKE_PLATFORM_ARCH_I386)
+ include_directories(BEFORE "../vm/i386")
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
include_directories(BEFORE "../vm/arm")
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64)
include_directories(BEFORE "../vm/arm64")
else()
- message(FATAL_ERROR "Only ARM, ARM64 and AMD64 is supported")
+ clr_unknown_arch()
endif()
include_directories("../debug/inc")
include_directories("../debug/inc/dump")
-#TODO for x86
-
if(CLR_CMAKE_PLATFORM_ARCH_AMD64)
add_definitions(-DDBG_TARGET_64BIT=1)
add_definitions(-DDBG_TARGET_AMD64=1)
add_definitions(-DDBG_TARGET_WIN64=1)
+elseif(CLR_CMAKE_PLATFORM_ARCH_I386)
+ add_definitions(-DDBG_TARGET_32BIT=1)
+ add_definitions(-DDBG_TARGET_X86=1)
+ add_definitions(-DDBG_TARGET_WIN32=1)
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
add_definitions(-DDBG_TARGET_32BIT=1)
add_definitions(-DDBG_TARGET_ARM=1)
@@ -27,7 +31,7 @@ elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64)
add_definitions(-DDBG_TARGET_ARM64=1)
add_definitions(-DDBG_TARGET_WIN64=1)
else()
- message(FATAL_ERROR "Only ARM, ARM64 and AMD64 is supported")
+ clr_unknown_arch()
endif()
add_subdirectory(bcltype)
diff --git a/src/debug/daccess/CMakeLists.txt b/src/debug/daccess/CMakeLists.txt
index 9a61991859..f5dbbefff8 100644
--- a/src/debug/daccess/CMakeLists.txt
+++ b/src/debug/daccess/CMakeLists.txt
@@ -9,6 +9,11 @@ if(CLR_CMAKE_PLATFORM_ARCH_AMD64)
add_definitions(-DDBG_TARGET_AMD64=1)
add_definitions(-DDBG_TARGET_WIN64=1)
add_definitions(-D_WIN64=1)
+elseif(CLR_CMAKE_PLATFORM_ARCH_I386)
+ add_definitions(-D_TARGET_X86_=1)
+ add_definitions(-DDBG_TARGET_X86=1)
+ add_definitions(-DDBG_TARGET_WIN32=1)
+ add_definitions(-D_WIN32=1)
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
add_definitions(-D_TARGET_ARM_=1)
add_definitions(-DDBG_TARGET_32BIT=1)
@@ -22,7 +27,7 @@ elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64)
add_definitions(-DDBG_TARGET_WIN64=1)
add_definitions(-D_WIN64=1)
else()
- message(FATAL_ERROR "Only ARM, ARM64 and AMD64 is supported")
+ clr_unknown_arch()
endif()
include_directories(BEFORE ${VM_DIR})
diff --git a/src/debug/di/CMakeLists.txt b/src/debug/di/CMakeLists.txt
index 1c9125adce..17b737107d 100644
--- a/src/debug/di/CMakeLists.txt
+++ b/src/debug/di/CMakeLists.txt
@@ -3,6 +3,11 @@ if(CLR_CMAKE_PLATFORM_ARCH_AMD64)
add_definitions(-DDBG_TARGET_64BIT)
add_definitions(-DDBG_TARGET_WIN64=1)
add_definitions(-DDBG_TARGET_AMD64=1)
+elseif(CLR_CMAKE_PLATFORM_ARCH_I386)
+ add_definitions(-D_TARGET_X86_=1)
+ add_definitions(-DDBG_TARGET_32BIT)
+ add_definitions(-DDBG_TARGET_WIN32=1)
+ add_definitions(-DDBG_TARGET_X86=1)
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
add_definitions(-D_TARGET_WIN32_=1)
add_definitions(-DDBG_TARGET_32BIT)
@@ -14,7 +19,7 @@ elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64)
add_definitions(-DDBG_TARGET_WIN64=1)
add_definitions(-DDBG_TARGET_ARM64=1)
else()
- message(FATAL_ERROR "Only ARM, ARM64 and AMD64 is supported")
+ clr_unknown_arch()
endif()
add_definitions(-DFEATURE_METADATA_CUSTOM_DATA_SOURCE -DFEATURE_METADATA_DEBUGGEE_DATA_SOURCE -DFEATURE_NO_HOST -DFEATURE_METADATA_LOAD_TRUSTED_IMAGES)
@@ -53,10 +58,12 @@ if(WIN32)
#use static crt
add_definitions(-MT)
- set(CORDBDI_SOURCES
- ${CORDBDI_SOURCES}
- amd64/floatconversion.asm
- )
+ if (CLR_CMAKE_PLATFORM_ARCH_AMD64)
+ set(CORDBDI_SOURCES
+ ${CORDBDI_SOURCES}
+ amd64/floatconversion.asm
+ )
+ endif()
elseif(CLR_CMAKE_PLATFORM_UNIX)
add_compile_options(-fPIC)
diff --git a/src/debug/ee/CMakeLists.txt b/src/debug/ee/CMakeLists.txt
index 66eb054b1d..1f27403c06 100644
--- a/src/debug/ee/CMakeLists.txt
+++ b/src/debug/ee/CMakeLists.txt
@@ -7,6 +7,11 @@ if(CLR_CMAKE_PLATFORM_ARCH_AMD64)
add_definitions(-DDBG_TARGET_64BIT=1)
add_definitions(-DDBG_TARGET_AMD64=1)
add_definitions(-DDBG_TARGET_WIN64=1)
+elseif(CLR_CMAKE_PLATFORM_ARCH_I386)
+ add_definitions(-D_TARGET_X86_=1)
+ add_definitions(-DDBG_TARGET_32BIT=1)
+ add_definitions(-DDBG_TARGET_X86=1)
+ add_definitions(-DDBG_TARGET_WIN32=1)
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
add_definitions(-D_TARGET_ARM_=1)
add_definitions(-DDBG_TARGET_32BIT=1)
@@ -18,7 +23,7 @@ elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64)
add_definitions(-DDBG_TARGET_ARM64=1)
add_definitions(-DDBG_TARGET_WIN64=1)
else()
- message(FATAL_ERROR "Only ARM, ARM64 and AMD64 is supported")
+ clr_unknown_arch()
endif()
diff --git a/src/debug/ee/wks/CMakeLists.txt b/src/debug/ee/wks/CMakeLists.txt
index e8ad205fce..835895ce47 100644
--- a/src/debug/ee/wks/CMakeLists.txt
+++ b/src/debug/ee/wks/CMakeLists.txt
@@ -3,18 +3,12 @@ if (WIN32)
add_precompiled_header(stdafx.h ../stdafx.cpp CORDBEE_SOURCES_WKS)
-if (IS_64BIT_BUILD EQUAL 1)
- FIND_PROGRAM(ASM_COMPILER ml64.exe)
-else ()
- FIND_PROGRAM(ASM_COMPILER ml.exe)
-endif (IS_64BIT_BUILD EQUAL 1)
-
get_include_directories(ASM_INCLUDE_DIRECTORIES)
get_compile_definitions(ASM_DEFINITIONS)
# Need to compile asm file using custom command as include directories are not provided to asm compiler
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/dbghelpers.obj
- COMMAND ${ASM_COMPILER} ${ASM_INCLUDE_DIRECTORIES} ${ASM_DEFINITIONS} /c /Zi /Fo${CMAKE_CURRENT_BINARY_DIR}/dbghelpers.obj /W3 /errorReport:prompt /Ta${CORDBEE_DIR}/${ARCH_SOURCES_DIR}/dbghelpers.asm
+ COMMAND ${CMAKE_ASM_MASM_COMPILER} ${ASM_INCLUDE_DIRECTORIES} ${ASM_DEFINITIONS} /c /Zi /Fo${CMAKE_CURRENT_BINARY_DIR}/dbghelpers.obj /W3 /errorReport:prompt /Ta${CORDBEE_DIR}/${ARCH_SOURCES_DIR}/dbghelpers.asm
DEPENDS ${CORDBEE_DIR}/${ARCH_SOURCES_DIR}/dbghelpers.asm
COMMENT "Compiling dbghelpers.asm")
diff --git a/src/dlls/mscoree/coreclr/CMakeLists.txt b/src/dlls/mscoree/coreclr/CMakeLists.txt
index d6653a03e3..3364e7350e 100644
--- a/src/dlls/mscoree/coreclr/CMakeLists.txt
+++ b/src/dlls/mscoree/coreclr/CMakeLists.txt
@@ -122,7 +122,7 @@ if(WIN32)
# Add dac table & debug resource to coreclr
get_include_directories(INC_DIR)
get_compile_definitions(PREPROCESS_DEFINITIONS)
- list(APPEND INC_DIR -I${CLR_DIR}/src/vm -I${CLR_DIR}/src/vm/amd64 -I${CLR_DIR}/src/debug/ee -I${CLR_DIR}/src/gc)
+ list(APPEND INC_DIR -I${CLR_DIR}/src/vm -I${CLR_DIR}/src/vm/${ARCH_SOURCES_DIR} -I${CLR_DIR}/src/debug/ee -I${CLR_DIR}/src/gc)
list(APPEND PREPROCESS_DEFINITIONS -DDACCESS_COMPILE -DDBG_TARGET_64BIT=1 -DDBG_TARGET_WIN64=1 -DDBG_TARGET_AMD64=1)
add_custom_command(TARGET coreclr
POST_BUILD
diff --git a/src/gcinfo/CMakeLists.txt b/src/gcinfo/CMakeLists.txt
index 0093815b8a..5a872c811d 100644
--- a/src/gcinfo/CMakeLists.txt
+++ b/src/gcinfo/CMakeLists.txt
@@ -6,6 +6,13 @@ set( GCINFO_SOURCES
dbggcinfoencoder.cpp
)
+if(CLR_CMAKE_PLATFORM_ARCH_I386)
+ list(APPEND GCINFO_SOURCES
+ ../gcdump/gcdump.cpp
+ ../gcdump/i386/gcdumpx86.cpp
+ )
+endif(CLR_CMAKE_PLATFORM_ARCH_I386)
+
convert_to_absolute_path(GCINFO_SOURCES ${GCINFO_SOURCES})
if(CLR_CMAKE_PLATFORM_UNIX)
diff --git a/src/inc/winwrap.h b/src/inc/winwrap.h
index 0f61f47bd2..a670a51de0 100644
--- a/src/inc/winwrap.h
+++ b/src/inc/winwrap.h
@@ -849,7 +849,7 @@ InterlockedCompareExchangePointer (
#define InterlockedCompareExchangeRelease _InterlockedCompareExchange_rel
#endif
-#if defined(_X86_)
+#if defined(_X86_) & !defined(InterlockedIncrement64)
// Interlockedxxx64 that do not have intrinsics are only supported on Windows Server 2003
// or higher for X86 so define our own portable implementation
diff --git a/src/jit/CMakeLists.txt b/src/jit/CMakeLists.txt
index 96f11b760a..e9f84e0728 100644
--- a/src/jit/CMakeLists.txt
+++ b/src/jit/CMakeLists.txt
@@ -7,9 +7,9 @@ include_directories("../inc")
# add_definitions(-DALT_JIT)
if (WIN32)
-if (IS_64BIT_BUILD EQUAL 1)
+if (CLR_CMAKE_PLATFORM_ARCH_AMD64)
add_definitions(-DFEATURE_SIMD -DFEATURE_AVX_SUPPORT)
-endif (IS_64BIT_BUILD EQUAL 1)
+endif (CLR_CMAKE_PLATFORM_ARCH_AMD64)
endif (WIN32)
set( JIT_SOURCES
@@ -79,6 +79,13 @@ elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
codegenarm.cpp
unwindarm.cpp
)
+elseif(CLR_CMAKE_PLATFORM_ARCH_I386)
+ set( ARCH_SOURCES
+ emitxarch.cpp
+ targetx86.cpp
+ lowerxarch.cpp
+ codegenxarch.cpp
+ )
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64)
set( ARCH_SOURCES
codegenarm64.cpp
@@ -89,7 +96,7 @@ elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64)
unwindarm64.cpp
)
else()
- message(FATAL_ERROR "Only ARM, ARM64 and AMD64 is supported")
+ clr_unknown_arch()
endif()
set( SOURCES
diff --git a/src/pal/tools/gen-buildsys-win.bat b/src/pal/tools/gen-buildsys-win.bat
index 56b22f221f..2d0057e78d 100644
--- a/src/pal/tools/gen-buildsys-win.bat
+++ b/src/pal/tools/gen-buildsys-win.bat
@@ -5,7 +5,7 @@ rem This file invokes cmake and generates the build system for windows.
set argC=0
for %%x in (%*) do Set /A argC+=1
-if NOT %argC%==2 GOTO :USAGE
+if NOT %argC%==3 GOTO :USAGE
if %1=="/?" GOTO :USAGE
setlocal
@@ -17,6 +17,7 @@ if %basePath:~-1%==\ set "basePath=%basePath:~0,-1%"
set __VSString=12 2013
if /i "%2" == "vs2015" (set __VSString=14 2015)
+if /i "%3" == "x64" (set __VSString=%__VSString% Win64)
if defined CMakePath goto DoGen
@@ -24,7 +25,7 @@ if defined CMakePath goto DoGen
for /f "delims=" %%a in ('powershell -NoProfile -ExecutionPolicy RemoteSigned "& .\probe-win.ps1"') do %%a
:DoGen
-"%CMakePath%" "-DCMAKE_USER_MAKE_RULES_OVERRIDE=%basePath%\windows-compiler-override.txt" -G "Visual Studio %__VSString% Win64" %1
+"%CMakePath%" "-DCMAKE_USER_MAKE_RULES_OVERRIDE=%basePath%\windows-compiler-override.txt" "-DCLR_CMAKE_TARGET_ARCH=%3" -G "Visual Studio %__VSString%" %1
endlocal
GOTO :DONE
diff --git a/src/unwinder/CMakeLists.txt b/src/unwinder/CMakeLists.txt
index 86c935a578..3f81ebcccc 100644
--- a/src/unwinder/CMakeLists.txt
+++ b/src/unwinder/CMakeLists.txt
@@ -17,6 +17,8 @@ if(CLR_CMAKE_PLATFORM_ARCH_AMD64)
list(APPEND UNWINDER_SOURCES
amd64/unwinder_amd64.cpp
)
+elseif(CLR_CMAKE_PLATFORM_ARCH_I386)
+# nothing needed for x86
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
include_directories(arm)
@@ -30,7 +32,7 @@ elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64)
arm64/unwinder_arm64.cpp
)
else()
- message(FATAL_ERROR "Only ARM, ARM64 and AMD64 is supported")
+ clr_unknown_arch()
endif()
convert_to_absolute_path(UNWINDER_SOURCES ${UNWINDER_SOURCES})
diff --git a/src/unwinder/dac/CMakeLists.txt b/src/unwinder/dac/CMakeLists.txt
index 75d7050c6f..55c9199c7e 100644
--- a/src/unwinder/dac/CMakeLists.txt
+++ b/src/unwinder/dac/CMakeLists.txt
@@ -8,6 +8,12 @@ if(CLR_CMAKE_PLATFORM_ARCH_AMD64)
add_definitions(-DDBG_TARGET_AMD64=1)
add_definitions(-DDBG_TARGET_WIN64=1)
add_definitions(-D_WIN64=1)
+elseif(CLR_CMAKE_PLATFORM_ARCH_I386)
+ add_definitions(-D_TARGET_X86_=1)
+ add_definitions(-DDBG_TARGET_32BIT=1)
+ add_definitions(-DDBG_TARGET_X86=1)
+ add_definitions(-DDBG_TARGET_WIN32=1)
+ add_definitions(-D_WIN32=1)
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
add_definitions(-D_TARGET_ARM_=1)
add_definitions(-DDBG_TARGET_32BIT=1)
@@ -21,7 +27,7 @@ elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64)
add_definitions(-DDBG_TARGET_WIN64=1)
add_definitions(-D_WIN64=1)
else()
- message(FATAL_ERROR "Only ARM, ARM64 and AMD64 is supported")
+ clr_unknown_arch()
endif()
add_library(unwinder_dac ${UNWINDER_SOURCES})
diff --git a/src/vm/CMakeLists.txt b/src/vm/CMakeLists.txt
index 9e5569f1f8..a214976cdd 100644
--- a/src/vm/CMakeLists.txt
+++ b/src/vm/CMakeLists.txt
@@ -10,6 +10,11 @@ if(CLR_CMAKE_PLATFORM_ARCH_AMD64)
add_definitions(-DDBG_TARGET_64BIT=1)
add_definitions(-DDBG_TARGET_AMD64=1)
add_definitions(-DDBG_TARGET_WIN64=1)
+elseif(CLR_CMAKE_PLATFORM_ARCH_I386)
+ add_definitions(-D_TARGET_X86_=1)
+ add_definitions(-DDBG_TARGET_32BIT=1)
+ add_definitions(-DDBG_TARGET_X86=1)
+ add_definitions(-DDBG_TARGET_WIN32=1)
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
add_definitions(-D_TARGET_ARM_=1)
add_definitions(-DDBG_TARGET_32BIT=1)
@@ -21,7 +26,7 @@ elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64)
add_definitions(-DDBG_TARGET_ARM64=1)
add_definitions(-DDBG_TARGET_WIN64=1)
else()
- message(FATAL_ERROR "Only ARM, ARM64 and AMD64 is supported")
+ clr_unknown_arch()
endif()
include_directories(${ARCH_SOURCES_DIR})
@@ -312,29 +317,38 @@ list(APPEND VM_SOURCES_DAC
clrprivtypecachewinrt.cpp
)
-# AMD64 specific asm sources
-set(VM_SOURCES_WKS_ARCH_ASM
- ${ARCH_SOURCES_DIR}/AsmHelpers.asm
- ${ARCH_SOURCES_DIR}/CallDescrWorkerAMD64.asm
- ${ARCH_SOURCES_DIR}/ComCallPreStub.asm
- ${ARCH_SOURCES_DIR}/CrtHelpers.asm
- ${ARCH_SOURCES_DIR}/GenericComCallStubs.asm
- ${ARCH_SOURCES_DIR}/GenericComPlusCallStubs.asm
- ${ARCH_SOURCES_DIR}/getstate.asm
- ${ARCH_SOURCES_DIR}/InstantiatingStub.asm
- ${ARCH_SOURCES_DIR}/JitHelpers_Fast.asm
- ${ARCH_SOURCES_DIR}/JitHelpers_FastWriteBarriers.asm
- ${ARCH_SOURCES_DIR}/JitHelpers_InlineGetAppDomain.asm
- ${ARCH_SOURCES_DIR}/JitHelpers_InlineGetThread.asm
- ${ARCH_SOURCES_DIR}/JitHelpers_Slow.asm
- ${ARCH_SOURCES_DIR}/PInvokeStubs.asm
- ${ARCH_SOURCES_DIR}/RedirectedHandledJITCase.asm
- ${ARCH_SOURCES_DIR}/ThePreStubAMD64.asm
- ${ARCH_SOURCES_DIR}/ExternalMethodFixupThunk.asm
- ${ARCH_SOURCES_DIR}/TlsGetters.asm # Condition="'$(FeatureImplicitTls)' != 'true'
- ${ARCH_SOURCES_DIR}/UMThunkStub.asm
- ${ARCH_SOURCES_DIR}/VirtualCallStubAMD64.asm
-)
+if(CLR_CMAKE_PLATFORM_ARCH_AMD64)
+ set(VM_SOURCES_WKS_ARCH_ASM
+ ${ARCH_SOURCES_DIR}/AsmHelpers.asm
+ ${ARCH_SOURCES_DIR}/CallDescrWorkerAMD64.asm
+ ${ARCH_SOURCES_DIR}/ComCallPreStub.asm
+ ${ARCH_SOURCES_DIR}/CrtHelpers.asm
+ ${ARCH_SOURCES_DIR}/GenericComCallStubs.asm
+ ${ARCH_SOURCES_DIR}/GenericComPlusCallStubs.asm
+ ${ARCH_SOURCES_DIR}/getstate.asm
+ ${ARCH_SOURCES_DIR}/InstantiatingStub.asm
+ ${ARCH_SOURCES_DIR}/JitHelpers_Fast.asm
+ ${ARCH_SOURCES_DIR}/JitHelpers_FastWriteBarriers.asm
+ ${ARCH_SOURCES_DIR}/JitHelpers_InlineGetAppDomain.asm
+ ${ARCH_SOURCES_DIR}/JitHelpers_InlineGetThread.asm
+ ${ARCH_SOURCES_DIR}/JitHelpers_Slow.asm
+ ${ARCH_SOURCES_DIR}/PInvokeStubs.asm
+ ${ARCH_SOURCES_DIR}/RedirectedHandledJITCase.asm
+ ${ARCH_SOURCES_DIR}/ThePreStubAMD64.asm
+ ${ARCH_SOURCES_DIR}/ExternalMethodFixupThunk.asm
+ ${ARCH_SOURCES_DIR}/TlsGetters.asm # Condition="'$(FeatureImplicitTls)' != 'true'
+ ${ARCH_SOURCES_DIR}/UMThunkStub.asm
+ ${ARCH_SOURCES_DIR}/VirtualCallStubAMD64.asm
+ )
+elseif(CLR_CMAKE_PLATFORM_ARCH_I386)
+ set(VM_SOURCES_WKS_ARCH_ASM
+ ${ARCH_SOURCES_DIR}/RedirectedHandledJITCase.asm
+ ${ARCH_SOURCES_DIR}/asmhelpers.asm
+ ${ARCH_SOURCES_DIR}/fptext.asm
+ ${ARCH_SOURCES_DIR}/gmsasm.asm
+ ${ARCH_SOURCES_DIR}/jithelp.asm
+ )
+endif()
else()
@@ -386,6 +400,20 @@ if(CLR_CMAKE_PLATFORM_ARCH_AMD64)
${ARCH_SOURCES_DIR}/profiler.cpp
jitinterfacegen.cpp
)
+elseif(CLR_CMAKE_PLATFORM_ARCH_I386)
+ set(VM_SOURCES_DAC_AND_WKS_ARCH
+ exinfo.cpp
+ ${ARCH_SOURCES_DIR}/cgenx86.cpp
+ ${ARCH_SOURCES_DIR}/excepx86.cpp
+ ${ARCH_SOURCES_DIR}/gmsx86.cpp
+ ${ARCH_SOURCES_DIR}/stublinkerx86.cpp
+ )
+
+ set(VM_SOURCES_WKS_ARCH
+ ${ARCH_SOURCES_DIR}/jithelp.asm
+ ${ARCH_SOURCES_DIR}/jitinterfacex86.cpp
+ ${ARCH_SOURCES_DIR}/profiler.cpp
+ )
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
set(VM_SOURCES_DAC_AND_WKS_ARCH
${ARCH_SOURCES_DIR}/exceparm.cpp
diff --git a/src/vm/crossgen/CMakeLists.txt b/src/vm/crossgen/CMakeLists.txt
index c27cb82831..e1fb8c7ef6 100644
--- a/src/vm/crossgen/CMakeLists.txt
+++ b/src/vm/crossgen/CMakeLists.txt
@@ -109,6 +109,11 @@ if(CLR_CMAKE_PLATFORM_ARCH_AMD64)
list(APPEND VM_CROSSGEN_SOURCES
../amd64/stublinkeramd64.cpp
)
+elseif(CLR_CMAKE_PLATFORM_ARCH_I386)
+ include_directories(../i386)
+ list(APPEND VM_CROSSGEN_SOURCES
+ ../i386/stublinkerx86.cpp
+ )
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
include_directories(../arm)
list(APPEND VM_CROSSGEN_SOURCES
@@ -120,7 +125,7 @@ elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64)
../arm64/stubs.cpp
)
else()
- message(FATAL_ERROR "Only ARM, ARM64 and AMD64 is supported")
+ clr_unknown_arch()
endif()
if (WIN32)
diff --git a/src/vm/i386/asmhelpers.asm b/src/vm/i386/asmhelpers.asm
index 782fcd8f82..4c7d6aab3b 100644
--- a/src/vm/i386/asmhelpers.asm
+++ b/src/vm/i386/asmhelpers.asm
@@ -118,6 +118,11 @@ EXTERN @ProfileEnter@8:PROC
EXTERN @ProfileLeave@8:PROC
EXTERN @ProfileTailcall@8:PROC
+UNREFERENCED macro arg
+ local unref
+ unref equ size arg
+endm
+
FASTCALL_FUNC macro FuncName,cbArgs
FuncNameReal EQU @&FuncName&@&cbArgs
FuncNameReal proc public
@@ -1236,6 +1241,7 @@ UM2MThunk_WrapperHelper proc stdcall public,
pAddr : DWORD,
pEntryThunk : DWORD,
pThread : DWORD
+ UNREFERENCED argLen
push ebx
diff --git a/src/vm/wks/CMakeLists.txt b/src/vm/wks/CMakeLists.txt
index b4c091cd5f..06cf425dc6 100644
--- a/src/vm/wks/CMakeLists.txt
+++ b/src/vm/wks/CMakeLists.txt
@@ -35,6 +35,10 @@ foreach(CONFIG IN LISTS CMAKE_CONFIGURATION_TYPES)
set_property(SOURCE ${VM_SOURCES_WKS_ARCH_ASM} PROPERTY COMPILE_DEFINITIONS_${CONFIG} ${ASM_DEFINITIONS_${CONFIG}})
endforeach()
+if (CLR_CMAKE_PLATFORM_ARCH_I386)
+ set_source_files_properties(${VM_SOURCES_WKS_ARCH_ASM} PROPERTIES COMPILE_FLAGS "/Zm")
+endif (CLR_CMAKE_PLATFORM_ARCH_I386)
+
# Convert AsmConstants.h into AsmConstants.inc
find_program(POWERSHELL powershell)
if (POWERSHELL STREQUAL "POWERSHELL-NOTFOUND")
@@ -44,7 +48,7 @@ endif()
add_custom_command(
# The AsmConstants.inc will be built in the pre-build phase of the cee_wks build
TARGET cee_wks PRE_BUILD
- COMMAND ${POWERSHELL} -NoProfile -ExecutionPolicy Bypass \"& \"\"${VM_DIR}/h2inc.ps1\"\"\" \"\"\"${VM_DIR}/amd64/asmconstants.h\"\"\" >"${CMAKE_CURRENT_BINARY_DIR}/AsmConstants.tmp"
+ COMMAND ${POWERSHELL} -NoProfile -ExecutionPolicy Bypass \"& \"\"${VM_DIR}/h2inc.ps1\"\"\" \"\"\"${VM_DIR}/${ARCH_SOURCES_DIR}/asmconstants.h\"\"\" >"${CMAKE_CURRENT_BINARY_DIR}/AsmConstants.tmp"
COMMAND ${CMAKE_CXX_COMPILER} ${DEFINITIONS} /EP "${CMAKE_CURRENT_BINARY_DIR}/AsmConstants.tmp" >"${CMAKE_CURRENT_BINARY_DIR}/AsmConstants.inc"
)