diff options
-rw-r--r-- | CMakeLists.txt | 47 | ||||
-rw-r--r-- | build.cmd | 9 | ||||
-rw-r--r-- | src/CMakeLists.txt | 4 | ||||
-rw-r--r-- | src/ToolBox/SOS/Strike/CMakeLists.txt | 9 | ||||
-rw-r--r-- | src/binder/CMakeLists.txt | 4 | ||||
-rw-r--r-- | src/classlibnative/CMakeLists.txt | 12 | ||||
-rw-r--r-- | src/debug/daccess/CMakeLists.txt | 7 | ||||
-rw-r--r-- | src/debug/di/CMakeLists.txt | 17 | ||||
-rw-r--r-- | src/debug/ee/CMakeLists.txt | 7 | ||||
-rw-r--r-- | src/debug/ee/wks/CMakeLists.txt | 8 | ||||
-rw-r--r-- | src/dlls/mscoree/coreclr/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/gcinfo/CMakeLists.txt | 7 | ||||
-rw-r--r-- | src/inc/winwrap.h | 2 | ||||
-rw-r--r-- | src/jit/CMakeLists.txt | 13 | ||||
-rw-r--r-- | src/pal/tools/gen-buildsys-win.bat | 5 | ||||
-rw-r--r-- | src/unwinder/CMakeLists.txt | 4 | ||||
-rw-r--r-- | src/unwinder/dac/CMakeLists.txt | 8 | ||||
-rw-r--r-- | src/vm/CMakeLists.txt | 76 | ||||
-rw-r--r-- | src/vm/crossgen/CMakeLists.txt | 7 | ||||
-rw-r--r-- | src/vm/i386/asmhelpers.asm | 6 | ||||
-rw-r--r-- | src/vm/wks/CMakeLists.txt | 6 | ||||
-rw-r--r-- | tests/buildtest.cmd | 2 | ||||
-rw-r--r-- | tests/runtest.cmd | 3 |
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_) @@ -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. |