From 8bb8ed66e4e54270e18e68c37515f21730c82cea Mon Sep 17 00:00:00 2001 From: Mike Danes Date: Sat, 1 Aug 2015 11:04:16 +0300 Subject: 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. --- src/debug/daccess/CMakeLists.txt | 7 ++++++- src/debug/di/CMakeLists.txt | 17 ++++++++++++----- src/debug/ee/CMakeLists.txt | 7 ++++++- src/debug/ee/wks/CMakeLists.txt | 8 +------- 4 files changed, 25 insertions(+), 14 deletions(-) (limited to 'src/debug') 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") -- cgit v1.2.3