diff options
author | Rahul Kumar <rahku@microsoft.com> | 2015-11-23 17:11:42 -0800 |
---|---|---|
committer | jashook <jashoo@microsoft.com> | 2015-12-15 10:15:40 -0800 |
commit | ab8261b9853b50b3714ba80717e9164dfb765c74 (patch) | |
tree | 099768489a0b812101d7cc2ac4253c11b9909ec4 /src | |
parent | b171cfd0c7179c39e8959d42aa3505ccfea1e834 (diff) | |
download | coreclr-ab8261b9853b50b3714ba80717e9164dfb765c74.tar.gz coreclr-ab8261b9853b50b3714ba80717e9164dfb765c74.tar.bz2 coreclr-ab8261b9853b50b3714ba80717e9164dfb765c74.zip |
Build arm64 using private toolset
Successfully builds all binaries except sos.dll & x64 binaries
Diffstat (limited to 'src')
-rw-r--r-- | src/ToolBox/SOS/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/debug/daccess/CMakeLists.txt | 19 | ||||
-rw-r--r-- | src/debug/ee/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/debug/ee/wks/CMakeLists.txt | 11 | ||||
-rw-r--r-- | src/dlls/mscoree/coreclr/CMakeLists.txt | 46 | ||||
-rw-r--r-- | src/jit/utils.h | 2 | ||||
-rw-r--r-- | src/pal/tools/gen-buildsys-win.bat | 9 | ||||
-rw-r--r-- | src/unwinder/CMakeLists.txt | 23 | ||||
-rw-r--r-- | src/utilcode/CMakeLists.txt | 16 | ||||
-rw-r--r-- | src/vm/CMakeLists.txt | 16 | ||||
-rw-r--r-- | src/vm/crossgen/CMakeLists.txt | 7 | ||||
-rw-r--r-- | src/vm/interpreter.cpp | 2 | ||||
-rw-r--r-- | src/vm/wks/CMakeLists.txt | 12 | ||||
-rw-r--r-- | src/zap/crossgen/CMakeLists.txt | 4 |
14 files changed, 105 insertions, 66 deletions
diff --git a/src/ToolBox/SOS/CMakeLists.txt b/src/ToolBox/SOS/CMakeLists.txt index a0c7a24239..8cc9757140 100644 --- a/src/ToolBox/SOS/CMakeLists.txt +++ b/src/ToolBox/SOS/CMakeLists.txt @@ -1,5 +1,7 @@ if(WIN32) +if(NOT DEFINED CLR_CMAKE_PLATFORM_ARCH_ARM64) add_subdirectory(Strike) add_subdirectory(DacTableGen) add_subdirectory(diasdk) +endif(NOT DEFINED CLR_CMAKE_PLATFORM_ARCH_ARM64) endif(WIN32) diff --git a/src/debug/daccess/CMakeLists.txt b/src/debug/daccess/CMakeLists.txt index f5dbbefff8..6b459b89b4 100644 --- a/src/debug/daccess/CMakeLists.txt +++ b/src/debug/daccess/CMakeLists.txt @@ -60,25 +60,10 @@ set(DACCESS_SOURCES datatargetadapter.cpp ) -if(CLR_CMAKE_PLATFORM_ARCH_AMD64) - include_directories(amd64) - - list(APPEND DACCESS_SOURCES - amd64/primitives.cpp - ) -elseif(CLR_CMAKE_PLATFORM_ARCH_ARM) - include_directories(arm) - +include_directories(${ARCH_SOURCES_DIR}) list(APPEND DACCESS_SOURCES - arm/primitives.cpp + ${ARCH_SOURCES_DIR}/primitives.cpp ) -elseif(CLR_CMAKE_PLATFORM_ARCH_I386) - include_directories(i386) - - list(APPEND DACCESS_SOURCES - i386/primitives.cpp - ) -endif() convert_to_absolute_path(DACCESS_SOURCES ${DACCESS_SOURCES}) diff --git a/src/debug/ee/CMakeLists.txt b/src/debug/ee/CMakeLists.txt index 1f27403c06..007b0ff0c5 100644 --- a/src/debug/ee/CMakeLists.txt +++ b/src/debug/ee/CMakeLists.txt @@ -74,6 +74,8 @@ elseif(CLR_CMAKE_PLATFORM_ARCH_I386) list(APPEND CORDBEE_SOURCES_WKS i386/x86walker.cpp) elseif(CLR_CMAKE_PLATFORM_ARCH_ARM) list(APPEND CORDBEE_SOURCES_WKS arm/armwalker.cpp) +elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64) + list(APPEND CORDBEE_SOURCES_WKS arm64/arm64walker.cpp) endif() convert_to_absolute_path(CORDBEE_SOURCES_DAC ${CORDBEE_SOURCES_DAC}) diff --git a/src/debug/ee/wks/CMakeLists.txt b/src/debug/ee/wks/CMakeLists.txt index 2eea459a4e..77fe9980c4 100644 --- a/src/debug/ee/wks/CMakeLists.txt +++ b/src/debug/ee/wks/CMakeLists.txt @@ -17,10 +17,13 @@ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/dbghelpers.obj DEPENDS ${CORDBEE_DIR}/${ARCH_SOURCES_DIR}/dbghelpers.asm COMMENT "Compiling dbghelpers.asm") -#mark obj as source that does not require compile -set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/dbghelpers.obj PROPERTIES EXTERNAL_OBJECT TRUE) - -add_library(cordbee_wks ${CORDBEE_SOURCES_WKS} ${CMAKE_CURRENT_BINARY_DIR}/dbghelpers.obj) +if(CLR_CMAKE_PLATFORM_ARCH_ARM64) + #mark obj as source that does not require compile + set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/dbghelpers.obj PROPERTIES EXTERNAL_OBJECT TRUE) + add_library(cordbee_wks ${CORDBEE_SOURCES_WKS}) +else() + add_library(cordbee_wks ${CORDBEE_SOURCES_WKS} ${CMAKE_CURRENT_BINARY_DIR}/dbghelpers.obj) +endif() else () diff --git a/src/dlls/mscoree/coreclr/CMakeLists.txt b/src/dlls/mscoree/coreclr/CMakeLists.txt index 297a41143c..98af5911b8 100644 --- a/src/dlls/mscoree/coreclr/CMakeLists.txt +++ b/src/dlls/mscoree/coreclr/CMakeLists.txt @@ -124,22 +124,44 @@ endif(CLR_CMAKE_PLATFORM_LINUX) target_link_libraries(coreclr ${CORECLR_LIBRARIES}) if(WIN32) - add_dependencies(coreclr dactablegen) - # 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/${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 - COMMAND ${CMAKE_CXX_COMPILER} /P /EP /TP ${PREPROCESS_DEFINITIONS} ${INC_DIR} /Fi${CMAKE_CURRENT_BINARY_DIR}/daccess.i ${CLR_DIR}/src/debug/daccess/daccess.cpp - COMMAND $<TARGET_FILE:dactablegen_exe> /dac:${CMAKE_CURRENT_BINARY_DIR}/daccess.i /pdb:${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/coreclr.pdb /dll:$<TARGET_FILE:coreclr> /bin:${CMAKE_CURRENT_BINARY_DIR}/wks.bin - COMMAND $<TARGET_FILE:InjectResource> /bin:${CMAKE_CURRENT_BINARY_DIR}/wks.bin /dll:$<TARGET_FILE:coreclr> - COMMAND $<TARGET_FILE:GenClrDebugResource> /dac:$<TARGET_FILE:mscordaccore> /dbi:$<TARGET_FILE:mscordbi> /sku:onecoreclr /out:${CMAKE_CURRENT_BINARY_DIR}/clrDebugResource.bin - COMMAND $<TARGET_FILE:InjectResource> /bin:${CMAKE_CURRENT_BINARY_DIR}/clrDebugResource.bin /dll:$<TARGET_FILE:coreclr> /name:CLRDEBUGINFO - COMMENT Add dactable & debug resources to coreclr - ) + list(APPEND PREPROCESS_DEFINITIONS -DDACCESS_COMPILE -DDBG_TARGET_64BIT=1 -DDBG_TARGET_WIN64=1) + + + if(CLR_CMAKE_PLATFORM_ARCH_ARM64) + # TODO package these tools into a new buildtool nuget package to get cross compilation support. + + #list(APPEND PREPROCESS_DEFINITIONS -DDBG_TARGET_ARM64=1) + #add_custom_command(TARGET coreclr + # POST_BUILD + # COMMAND cl.exe /P /EP /TP ${PREPROCESS_DEFINITIONS} ${INC_DIR} /Fi${CMAKE_CURRENT_BINARY_DIR}/daccess.i ${CLR_DIR}/src/debug/daccess/daccess.cpp + # COMMAND dactablegen.exe /dac:${CMAKE_CURRENT_BINARY_DIR}/daccess.i /pdb:${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/coreclr.pdb /dll:$<TARGET_FILE:coreclr> /bin:${CMAKE_CURRENT_BINARY_DIR}/wks.bin + # COMMAND InjectResource.exe /bin:${CMAKE_CURRENT_BINARY_DIR}/wks.bin /dll:$<TARGET_FILE:coreclr> + # COMMAND GenClrDebugResource.exe /dac:$<TARGET_FILE:mscordaccore> /dbi:$<TARGET_FILE:mscordbi> /sku:onecoreclr /out:${CMAKE_CURRENT_BINARY_DIR}/clrDebugResource.bin + # COMMAND InjectResource.exe /bin:${CMAKE_CURRENT_BINARY_DIR}/clrDebugResource.bin /dll:$<TARGET_FILE:coreclr> /name:CLRDEBUGINFO + # COMMENT Add dactable & debug resources to coreclr + #) + + else() + list(APPEND PREPROCESS_DEFINITIONS -DDBG_TARGET_AMD64=1) + + add_dependencies(coreclr dactablegen) + + add_custom_command(TARGET coreclr + POST_BUILD + COMMAND ${CMAKE_CXX_COMPILER} /P /EP /TP ${PREPROCESS_DEFINITIONS} ${INC_DIR} /Fi${CMAKE_CURRENT_BINARY_DIR}/daccess.i ${CLR_DIR}/src/debug/daccess/daccess.cpp + COMMAND $<TARGET_FILE:dactablegen_exe> /dac:${CMAKE_CURRENT_BINARY_DIR}/daccess.i /pdb:${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/coreclr.pdb /dll:$<TARGET_FILE:coreclr> /bin:${CMAKE_CURRENT_BINARY_DIR}/wks.bin + COMMAND $<TARGET_FILE:InjectResource> /bin:${CMAKE_CURRENT_BINARY_DIR}/wks.bin /dll:$<TARGET_FILE:coreclr> + COMMAND $<TARGET_FILE:GenClrDebugResource> /dac:$<TARGET_FILE:mscordaccore> /dbi:$<TARGET_FILE:mscordbi> /sku:onecoreclr /out:${CMAKE_CURRENT_BINARY_DIR}/clrDebugResource.bin + COMMAND $<TARGET_FILE:InjectResource> /bin:${CMAKE_CURRENT_BINARY_DIR}/clrDebugResource.bin /dll:$<TARGET_FILE:coreclr> /name:CLRDEBUGINFO + COMMENT Add dactable & debug resources to coreclr + ) + + endif(CLR_CMAKE_PLATFORM_ARCH_ARM64) + else() add_custom_command( TARGET coreclr diff --git a/src/jit/utils.h b/src/jit/utils.h index 951c874510..5a0a3a01ea 100644 --- a/src/jit/utils.h +++ b/src/jit/utils.h @@ -47,7 +47,6 @@ inline const char* dspBool(bool b) } #ifdef FEATURE_CORECLR -#ifndef CROSSGEN_COMPILE #ifdef _CRT_ABS_DEFINED // we don't have the full standard library inline int64_t abs(int64_t t) @@ -55,7 +54,6 @@ inline int64_t abs(int64_t t) return t > 0 ? t : -t; } #endif -#endif // !CROSSGEN_COMPILE #endif // FEATURE_CORECLR template <typename T> int signum(T val) diff --git a/src/pal/tools/gen-buildsys-win.bat b/src/pal/tools/gen-buildsys-win.bat index 2d0057e78d..0836268860 100644 --- a/src/pal/tools/gen-buildsys-win.bat +++ b/src/pal/tools/gen-buildsys-win.bat @@ -18,6 +18,9 @@ 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 /i "%3" == "arm64" ( + set USE_VS=0 +) if defined CMakePath goto DoGen @@ -25,7 +28,11 @@ 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" "-DCLR_CMAKE_TARGET_ARCH=%3" -G "Visual Studio %__VSString%" %1 +if "%USE_VS%" == "0" ( + "%CMakePath%" "-DCMAKE_USER_MAKE_RULES_OVERRIDE=%basePath%\windows-compiler-override.txt" "-DCLR_CMAKE_TARGET_ARCH=%3" -G "Visual Studio %__VSString% Win64" %1 +) else ( + "%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 3f81ebcccc..5ddbf42a37 100644 --- a/src/unwinder/CMakeLists.txt +++ b/src/unwinder/CMakeLists.txt @@ -11,28 +11,11 @@ set(UNWINDER_SOURCES unwinder.cpp ) -if(CLR_CMAKE_PLATFORM_ARCH_AMD64) - include_directories(amd64) - +if(NOT DEFINED CLR_CMAKE_PLATFORM_ARCH_I386) + include_directories(${ARCH_SOURCES_DIR}) list(APPEND UNWINDER_SOURCES - amd64/unwinder_amd64.cpp + ${ARCH_SOURCES_DIR}/unwinder_${ARCH_SOURCES_DIR}.cpp ) -elseif(CLR_CMAKE_PLATFORM_ARCH_I386) -# nothing needed for x86 -elseif(CLR_CMAKE_PLATFORM_ARCH_ARM) - include_directories(arm) - - list(APPEND UNWINDER_SOURCES - arm/unwinder_arm.cpp - ) -elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64) - include_directories(arm64) - - list(APPEND UNWINDER_SOURCES - arm64/unwinder_arm64.cpp - ) -else() - clr_unknown_arch() endif() convert_to_absolute_path(UNWINDER_SOURCES ${UNWINDER_SOURCES}) diff --git a/src/utilcode/CMakeLists.txt b/src/utilcode/CMakeLists.txt index e452da8825..117d4790f0 100644 --- a/src/utilcode/CMakeLists.txt +++ b/src/utilcode/CMakeLists.txt @@ -82,17 +82,25 @@ if(WIN32) lazycow.cpp ) endif() + + if(NOT DEFINED FEATURE_IMPLICIT_TLS) + list(APPEND UTILCODE_SOURCES + tls.cpp + ) + endif(NOT DEFINED FEATURE_IMPLICIT_TLS) endif(WIN32) - + set(UTILCODE_SOURCES ${UTILCODE_COMMON_SOURCES} perflog.cpp ) if(WIN32) - list(APPEND UTILCODE_SOURCES - tls.cpp - ) + if(NOT DEFINED FEATURE_IMPLICIT_TLS) + list(APPEND UTILCODE_SOURCES + tls.cpp + ) + endif(NOT DEFINED FEATURE_IMPLICIT_TLS) endif() set(UTILCODE_DAC_SOURCES diff --git a/src/vm/CMakeLists.txt b/src/vm/CMakeLists.txt index 9a5d878ef8..9e9dd68a07 100644 --- a/src/vm/CMakeLists.txt +++ b/src/vm/CMakeLists.txt @@ -108,7 +108,6 @@ set(VM_SOURCES_DAC_AND_WKS_COMMON perfmap.cpp precode.cpp prestub.cpp - readytoruninfo.cpp rejit.cpp securitydescriptor.cpp securitydescriptorassembly.cpp @@ -133,6 +132,12 @@ set(VM_SOURCES_DAC_AND_WKS_COMMON zapsig.cpp ) +if(FEATURE_READYTORUN) + list(APPEND VM_SOURCES_DAC_AND_WKS_COMMON + readytoruninfo.cpp + ) +endif(FEATURE_READYTORUN) + set(VM_SOURCES_DAC ${VM_SOURCES_DAC_AND_WKS_COMMON} contexts.cpp @@ -338,9 +343,16 @@ elseif(CLR_CMAKE_PLATFORM_ARCH_I386) ${ARCH_SOURCES_DIR}/gmsasm.asm ${ARCH_SOURCES_DIR}/jithelp.asm ) +elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64) + set(VM_SOURCES_WKS_ARCH_ASM + ${ARCH_SOURCES_DIR}/AsmHelpers.asm + ${ARCH_SOURCES_DIR}/CallDescrWorkerARM64.asm + ${ARCH_SOURCES_DIR}/CrtHelpers.asm + ${ARCH_SOURCES_DIR}/PInvokeStubs.asm + ) endif() -else() +else(WIN32) if(CLR_CMAKE_PLATFORM_ARCH_AMD64) set(VM_SOURCES_WKS_ARCH_ASM diff --git a/src/vm/crossgen/CMakeLists.txt b/src/vm/crossgen/CMakeLists.txt index c112698554..5bed67918a 100644 --- a/src/vm/crossgen/CMakeLists.txt +++ b/src/vm/crossgen/CMakeLists.txt @@ -65,7 +65,6 @@ set(VM_CROSSGEN_SOURCES ../pendingload.cpp ../precode.cpp ../olevariant.cpp - ../readytoruninfo.cpp ../security.cpp ../securitypolicy.cpp ../securityattributes.cpp @@ -98,6 +97,12 @@ set(VM_CROSSGEN_SOURCES ../crossgencompile.cpp ) +if(FEATURE_READYTORUN) + list(APPEND VM_CROSSGEN_SOURCES + ../readytoruninfo.cpp + ) +endif(FEATURE_READYTORUN) + include_directories(BEFORE ..) include_directories(${CLR_DIR}/src/gc) diff --git a/src/vm/interpreter.cpp b/src/vm/interpreter.cpp index 5ee4c7aa3b..c93b377363 100644 --- a/src/vm/interpreter.cpp +++ b/src/vm/interpreter.cpp @@ -11817,7 +11817,7 @@ void Interpreter::PrintValue(InterpreterType it, BYTE* valAddr) { fprintf(GetLogFile(), " "); } - fprintf(GetLogFile(), "0x%p", valAddr[i]); + fprintf(GetLogFile(), "0x%02x", valAddr[i]); } fprintf(GetLogFile(), "]"); } diff --git a/src/vm/wks/CMakeLists.txt b/src/vm/wks/CMakeLists.txt index 1b232b7b19..b0af9a6b34 100644 --- a/src/vm/wks/CMakeLists.txt +++ b/src/vm/wks/CMakeLists.txt @@ -4,6 +4,18 @@ if (WIN32) set_source_files_properties(../mscorlib.cpp PROPERTIES COMPILE_FLAGS "/Y-") # .c file cannot use cpp precompiled header set_source_files_properties(../microsoft.comservices_i.c PROPERTIES COMPILE_FLAGS "/Y-") + + # asm files require preprocessing using cl.exe on arm64 + if(CLR_CMAKE_PLATFORM_ARCH_ARM64) + foreach(ASM_FILE ${VM_SOURCES_WKS_ARCH_ASM}) + get_filename_component(name ${ASM_FILE} NAME_WE) + set(ASM_PREPROCESSED_FILE ${CMAKE_CURRENT_BINARY_DIR}/${name}.asm) + preprocess_def_file(${ASM_FILE} ${ASM_PREPROCESSED_FILE}) + set(VM_SOURCES_WKS_ARM64_PREPROCESSED_ASM ${VM_SOURCES_WKS_ARM64_PREPROCESSED_ASM} ${ASM_PREPROCESSED_FILE}) + endforeach() + + set(VM_SOURCES_WKS_ARCH_ASM ${VM_SOURCES_WKS_ARM64_PREPROCESSED_ASM}) + endif(CLR_CMAKE_PLATFORM_ARCH_ARM64) endif (WIN32) add_library(cee_wks ${VM_SOURCES_WKS} ${VM_SOURCES_WKS_ARCH_ASM}) diff --git a/src/zap/crossgen/CMakeLists.txt b/src/zap/crossgen/CMakeLists.txt index cebcd8c274..edbf19ec72 100644 --- a/src/zap/crossgen/CMakeLists.txt +++ b/src/zap/crossgen/CMakeLists.txt @@ -17,12 +17,12 @@ set(ZAP_SOURCES ../nativeformatwriter.cpp ) -if (WIN32) +if (WIN32 AND FEATURE_READYTORUN) list(APPEND ZAP_SOURCES ../zapreadytorun.cpp ../nativeformatwriter.cpp ) -endif (WIN32) +endif (WIN32 AND FEATURE_READYTORUN) add_precompiled_header(common.h ../common.cpp ZAP_SOURCES) add_library(corzap_crossgen STATIC ${ZAP_SOURCES}) |