Use coreclr buildtools nuget package instead of compiling the tools used during build.
authorRahul Kumar <rahku@microsoft.com>
Wed, 13 Jan 2016 22:14:46 +0000 (14:14 -0800)
committerRahul Kumar <rahku@microsoft.com>
Sat, 23 Jan 2016 00:14:41 +0000 (16:14 -0800)
This only applies to windows build.

CMakeLists.txt
src/.nuget/packages.Windows_NT.config
src/ToolBox/SOS/CMakeLists.txt
src/dlls/mscoree/coreclr/CMakeLists.txt
src/scripts/buildtools/restorebuildtools.bat [new file with mode: 0644]
src/scripts/buildtools/restorebuildtools.proj [new file with mode: 0644]
src/tools/CMakeLists.txt

index 561c4dc..98d3b76 100644 (file)
@@ -794,4 +794,8 @@ if(WIN32)
   add_compile_options(/Zl) # omit default library name in .OBJ
 endif(WIN32)
 
+# TODO change version
+set(BuildToolsVersion "1.0.4-prerelease")
+set(BuildToolsDir "${CLR_DIR}/packages/Microsoft.DotNet.BuildTools.CoreCLR.${BuildToolsVersion}")
+
 add_subdirectory(src)
index 8e4b319..d2c4cf5 100644 (file)
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <packages>
   <package id="Microsoft.DotNet.BuildTools" version="1.0.25-prerelease-00121" />
+  <package id="Microsoft.DotNet.BuildTools.CoreCLR" version="1.0.4-prerelease" />
   <package id="dnx-coreclr-win-x86" version="1.0.0-rc2-16128" />
 </packages>
index 8cc9757..f48f3a7 100644 (file)
@@ -1,7 +1,5 @@
 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)
index 777165c..36bc129 100644 (file)
@@ -130,38 +130,28 @@ if(WIN32)
     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)
 
-
-    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()
+    if (CLR_CMAKE_PLATFORM_ARCH_AMD64)
         list(APPEND PREPROCESS_DEFINITIONS -DDBG_TARGET_AMD64=1)
+    elseif (CLR_CMAKE_PLATFORM_ARCH_ARM64)
+        list(APPEND PREPROCESS_DEFINITIONS -DDBG_TARGET_ARM64=1)
+    elseif (CLR_CMAKE_PLATFORM_ARCH_ARM)
+        list(APPEND PREPROCESS_DEFINITIONS -DDBG_TARGET_ARM=1)
+    elseif (CLR_CMAKE_PLATFORM_ARCH_I386)
+        list(APPEND PREPROCESS_DEFINITIONS -DDBG_TARGET_X86=1)
+    else()
+        clr_unknown_arch()
+    endif()
 
-        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)
+    add_custom_command(TARGET coreclr
+        POST_BUILD
+        COMMAND ${CLR_DIR}/src/scripts/buildtools/restorebuildtools.bat
+        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 ${BuildToolsDir}/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 ${BuildToolsDir}/InjectResource.exe /bin:${CMAKE_CURRENT_BINARY_DIR}/wks.bin /dll:$<TARGET_FILE:coreclr>
+        COMMAND ${BuildToolsDir}/GenClrDebugResource.exe /dac:$<TARGET_FILE:mscordaccore> /dbi:$<TARGET_FILE:mscordbi> /sku:onecoreclr /out:${CMAKE_CURRENT_BINARY_DIR}/clrDebugResource.bin
+        COMMAND ${BuildToolsDir}/InjectResource.exe /bin:${CMAKE_CURRENT_BINARY_DIR}/clrDebugResource.bin /dll:$<TARGET_FILE:coreclr> /name:CLRDEBUGINFO
+        COMMENT Add dactable & debug resources to coreclr
+    )
 else()
     add_custom_command(
         TARGET coreclr
diff --git a/src/scripts/buildtools/restorebuildtools.bat b/src/scripts/buildtools/restorebuildtools.bat
new file mode 100644 (file)
index 0000000..a07e817
--- /dev/null
@@ -0,0 +1,11 @@
+REM =========================================================================================
+REM ===
+REM === Restore build tools required for native build
+REM ===
+REM =========================================================================================
+echo Restore coreclr build tools nuget package
+setlocal
+:: Set the environment for the managed build
+call "%__VSToolsRoot%\VsDevCmd.bat" 
+%_msbuildexe% "%~dp0restorebuildtools.proj" /p:OutputPath="%__IntermediatesDir%" /nodeReuse:false
+endlocal
\ No newline at end of file
diff --git a/src/scripts/buildtools/restorebuildtools.proj b/src/scripts/buildtools/restorebuildtools.proj
new file mode 100644 (file)
index 0000000..cc6c6d2
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="..\..\..\dir.props" />
+
+  <Import Project="..\..\..\dir.targets" />
+
+  <Import Project="..\..\..\dir.traversal.targets" />
+</Project>
\ No newline at end of file
index 87c3eae..5443e0d 100644 (file)
@@ -1,6 +1 @@
 add_subdirectory(crossgen)
-
-if(WIN32)
-  add_subdirectory(GenClrDebugResource)
-  add_subdirectory(InjectResource)
-endif(WIN32)