summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt47
-rw-r--r--build.cmd9
-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
-rw-r--r--tests/buildtest.cmd2
-rw-r--r--tests/runtest.cmd3
23 files changed, 192 insertions, 73 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c450ac5a90..e78fa91519 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -15,6 +15,14 @@ set(CLR_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(VM_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/vm)
set(GENERATED_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/src/inc)
+function(clr_unknown_arch)
+ if (WIN32)
+ message(FATAL_ERROR "Only AMD64 and I386 are supported")
+ else()
+ message(FATAL_ERROR "Only AMD64, ARM64 and ARM are supported")
+ endif()
+endfunction()
+
if(CMAKE_SYSTEM_NAME STREQUAL Linux)
set(CLR_CMAKE_PLATFORM_UNIX 1)
if(CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64)
@@ -29,7 +37,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL Linux)
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64)
set(CLR_CMAKE_PLATFORM_UNIX_TARGET_ARM64 1)
else()
- message(FATAL_ERROR "Only AMD64 and ARM supported")
+ clr_unknown_arch()
endif()
set(CLR_CMAKE_PLATFORM_LINUX 1)
endif(CMAKE_SYSTEM_NAME STREQUAL Linux)
@@ -66,7 +74,15 @@ elseif(CLR_CMAKE_PLATFORM_UNIX_TARGET_ARM64)
elseif(CLR_CMAKE_PLATFORM_UNIX_TARGET_AMD64)
set(CLR_CMAKE_PLATFORM_ARCH_AMD64 1)
elseif(WIN32)
- set(CLR_CMAKE_PLATFORM_ARCH_AMD64 1)
+ if (CLR_CMAKE_TARGET_ARCH STREQUAL x64)
+ set(CLR_CMAKE_PLATFORM_ARCH_AMD64 1)
+ set(IS_64BIT_BUILD 1)
+ elseif(CLR_CMAKE_TARGET_ARCH STREQUAL x86)
+ set(CLR_CMAKE_PLATFORM_ARCH_I386 1)
+ set(IS_64BIT_BUILD 0)
+ else()
+ clr_unknown_arch()
+ endif()
endif()
if(WIN32)
@@ -226,12 +242,6 @@ add_subdirectory(src/pal/prebuilt/inc)
if (WIN32)
set(OVERRIDE_CMAKE_CXX_FLAGS 1)
-
- # Set flag to indicate if this will be a 64bit Windows build
- if(CMAKE_SYSTEM_PROCESSOR STREQUAL AMD64)
- set(IS_64BIT_BUILD 1)
- endif (CMAKE_SYSTEM_PROCESSOR STREQUAL AMD64)
-
elseif (CLR_CMAKE_PLATFORM_UNIX)
# Set flag to indicate if this will be a 64bit build
# CMAKE_SYSTEM_PROCESSOR returns the value of `uname -p`.
@@ -278,6 +288,10 @@ add_compile_options(/wd4960 /wd4961 /wd4603 /wd4627 /wd4838 /wd4456 /wd4457 /wd4
add_compile_options(/O1) # minimize space
add_compile_options(/Zi) # enable debugging information
+if (CLR_CMAKE_PLATFORM_ARCH_I386)
+ add_compile_options(/Gz)
+endif (CLR_CMAKE_PLATFORM_ARCH_I386)
+
add_compile_options($<$<OR:$<CONFIG:Release>,$<CONFIG:Relwithdebinfo>>:/GL>)
if (IS_64BIT_BUILD EQUAL 1)
@@ -409,7 +423,7 @@ if (CLR_CMAKE_PLATFORM_UNIX)
message("Detected Linux ARM64")
add_definitions(-DLINUX64)
else()
- message(FATAL_ERROR "Only ARM, ARM64 and AMD supported")
+ clr_unknown_arch()
endif()
endif(CLR_CMAKE_PLATFORM_LINUX)
@@ -454,9 +468,11 @@ elseif (CLR_CMAKE_PLATFORM_ARCH_ARM)
endif (CLR_CMAKE_PLATFORM_UNIX_TARGET_ARM)
add_definitions(-D_TARGET_ARM_=1)
add_definitions(-DDBG_TARGET_ARM)
+elseif (CLR_CMAKE_PLATFORM_ARCH_I386)
+ add_definitions(-D_TARGET_X86_=1)
+ add_definitions(-DDBG_TARGET_X86)
else ()
- # TODO: Support this
- message(FATAL_ERROR "Not Implemented!")
+ clr_unknown_arch()
endif (IS_64BIT_BUILD EQUAL 1)
if(WIN32)
@@ -472,7 +488,9 @@ if(WIN32)
add_definitions(-DEnC_SUPPORTED)
endif(WIN32)
add_definitions(-DFEATURE_APPDOMAIN_RESOURCE_MONITORING)
-add_definitions(-DFEATURE_ARRAYSTUB_AS_IL)
+if(CLR_CMAKE_PLATFORM_ARCH_AMD64 OR CLR_CMAKE_PLATFORM_ARCH_ARM OR CLR_CMAKE_PLATFORM_ARCH_ARM64)
+ add_definitions(-DFEATURE_ARRAYSTUB_AS_IL)
+endif()
if (CLR_CMAKE_PLATFORM_UNIX)
add_definitions(-DFEATURE_STUBS_AS_IL)
if (CLR_CMAKE_PLATFORM_UNIX_TARGET_AMD64)
@@ -577,6 +595,9 @@ if (CLR_CMAKE_PLATFORM_ARCH_AMD64)
add_definitions(-D_AMD64_WORKAROUND_)
add_definitions(-D_WIN64)
add_definitions(-DAMD64)
+elseif (CLR_CMAKE_PLATFORM_ARCH_I386)
+ add_definitions(-D_WIN32)
+ add_definitions(-D_X86_)
elseif (CLR_CMAKE_PLATFORM_ARCH_ARM)
add_definitions(-D_ARM_)
add_definitions(-DARM)
@@ -586,7 +607,7 @@ elseif (CLR_CMAKE_PLATFORM_ARCH_ARM64)
add_definitions(-DARM64)
add_definitions(-D_WIN64)
else ()
- message(FATAL_ERROR "Only ARM, ARM64 and AMD64 supported")
+ clr_unknown_arch()
endif ()
add_definitions(-D_SKIP_IF_SIMULATOR_)
diff --git a/build.cmd b/build.cmd
index fb15d813b4..eb50341eea 100644
--- a/build.cmd
+++ b/build.cmd
@@ -26,6 +26,7 @@ set __SkipTestBuild=
if "%1" == "" goto ArgsDone
if /i "%1" == "/?" goto Usage
if /i "%1" == "x64" (set __BuildArch=x64&&shift&goto Arg_Loop)
+if /i "%1" == "x86" (set __BuildArch=x86&&shift&goto Arg_Loop)
if /i "%1" == "arm" (set __BuildArch=arm&&shift&goto Arg_Loop)
if /i "%1" == "debug" (set __BuildType=Debug&shift&goto Arg_Loop)
@@ -135,7 +136,9 @@ echo Commencing build of native components for %__BuildOS%.%__BuildArch%.%__Buil
echo.
:: Set the environment for the native build
-call "!VS%__VSProductVersion%COMNTOOLS!\..\..\VC\vcvarsall.bat" x86_amd64
+set __VCBuildArch=x86_amd64
+if /i "%__BuildArch%" == "x86" (set __VCBuildArch=x86)
+call "!VS%__VSProductVersion%COMNTOOLS!\..\..\VC\vcvarsall.bat" %__VCBuildArch%
if exist "%VSINSTALLDIR%DIA SDK" goto GenVSSolution
echo Error: DIA SDK is missing at "%VSINSTALLDIR%DIA SDK". ^
@@ -151,7 +154,7 @@ exit /b 1
:GenVSSolution
:: Regenerate the VS solution
pushd "%__IntermediatesDir%"
-call "%__SourceDir%\pal\tools\gen-buildsys-win.bat" "%__ProjectDir%" %__VSVersion%
+call "%__SourceDir%\pal\tools\gen-buildsys-win.bat" "%__ProjectDir%" %__VSVersion% %__BuildArch%
popd
:BuildComponents
@@ -234,7 +237,7 @@ echo.
echo Usage:
echo %0 BuildArch BuildType [clean] [vsversion] where:
echo.
-echo BuildArch can be: x64
+echo BuildArch can be: x64, x86
echo BuildType can be: Debug, Release
echo Clean - optional argument to force a clean build.
echo VSVersion - optional argument to use VS2013 or VS2015 (default VS2013)
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"
)
diff --git a/tests/buildtest.cmd b/tests/buildtest.cmd
index f1b938d9d8..d7265a6e61 100644
--- a/tests/buildtest.cmd
+++ b/tests/buildtest.cmd
@@ -118,7 +118,7 @@ exit /b 1
:GenVSSolution
:: Regenerate the VS solution
pushd "%__NativeTestIntermediatesDir%"
-call "%__SourceDir%\pal\tools\gen-buildsys-win.bat" "%__ProjectFilesDir%\" %__VSVersion%
+call "%__SourceDir%\pal\tools\gen-buildsys-win.bat" "%__ProjectFilesDir%\" %__VSVersion% %__BuildArch%
popd
:BuildComponents
diff --git a/tests/runtest.cmd b/tests/runtest.cmd
index 3414f46366..e3e83084d7 100644
--- a/tests/runtest.cmd
+++ b/tests/runtest.cmd
@@ -12,6 +12,7 @@ set __Exclude=%~dp0\issues.targets
:Arg_Loop
if "%1" == "" goto ArgsDone
if /i "%1" == "x64" (set __BuildArch=x64&set __MSBuildBuildArch=x64&shift&goto Arg_Loop)
+if /i "%1" == "x86" (set __BuildArch=x86&set __MSBuildBuildArch=x86&shift&goto Arg_Loop)
if /i "%1" == "debug" (set __BuildType=debug&shift&goto Arg_Loop)
if /i "%1" == "release" (set __BuildType=release&shift&goto Arg_Loop)
@@ -144,7 +145,7 @@ echo.
echo Usage:
echo %0 BuildArch BuildType [SkipWrapperGeneration] [Exclude EXCLUSION_TARGETS] [TestEnv TEST_ENV_SCRIPT] [vsversion] CORE_ROOT where:
echo.
-echo BuildArch is x64
+echo BuildArch is x64, x86
echo BuildType can be: Debug, Release
echo SkipWrapperGeneration- Optional parameter - this will run the same set of tests as the last time it was run
echo Exclude- Optional parameter - this will exclude individual tests from running, specified by ExcludeList ItemGroup in an .targets file.