Fix incremental build of resources injected to coreclr.dll (#10045)
authorJan Vorlicek <janvorli@microsoft.com>
Thu, 9 Mar 2017 22:28:24 +0000 (23:28 +0100)
committerGitHub <noreply@github.com>
Thu, 9 Mar 2017 22:28:24 +0000 (23:28 +0100)
* Fix incremental build of resources injected to coreclr.dll

This change fixes the build of resources injected to coreclr.dll so that it
happens only when its dependencies change and not at every build.

src/dlls/CMakeLists.txt
src/dlls/mscoree/coreclr/CMakeLists.txt

index 932e65e..6d036af 100644 (file)
@@ -4,6 +4,8 @@ endif(WIN32)
 add_subdirectory(dbgshim)
 add_subdirectory(mscordbi)
 add_subdirectory(mscordac)
-add_subdirectory(mscoree)
-add_subdirectory(mscorpe)
-add_subdirectory(mscorrc)
+if (NOT CLR_CROSS_COMPONENTS_BUILD)
+  add_subdirectory(mscoree)
+  add_subdirectory(mscorpe)
+  add_subdirectory(mscorrc)
+endif()
index 95af2a7..ed15500 100644 (file)
@@ -159,15 +159,19 @@ if(WIN32)
     endif()
 
     add_custom_command(
-        TARGET coreclr
-        POST_BUILD
+        DEPENDS coreclr mscordaccore mscordbi ${CLR_DIR}/src/debug/daccess/daccess.cpp
+        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/inject_debug_resources.timestamp
         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
+        COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/inject_debug_resources.timestamp
         COMMENT Add dactable & debug resources to coreclr
     )
+
+    add_custom_target(inject_debug_resources ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/inject_debug_resources.timestamp)
+
 endif(WIN32)
 
 # add the install targets