summaryrefslogtreecommitdiff
path: root/src/dlls
diff options
context:
space:
mode:
authorJeremy Koritzinsky <jkoritzinsky@gmail.com>2019-06-06 14:43:54 -0700
committerGitHub <noreply@github.com>2019-06-06 14:43:54 -0700
commit4c82068adb046eee3573984392a0d1e774062ae0 (patch)
treec94ee1b120f165f121101b7dc368fa2c57dd5f0a /src/dlls
parent2e9cd827b0db60ad42f7df1f34ee1fada1951e5f (diff)
downloadcoreclr-4c82068adb046eee3573984392a0d1e774062ae0.tar.gz
coreclr-4c82068adb046eee3573984392a0d1e774062ae0.tar.bz2
coreclr-4c82068adb046eee3573984392a0d1e774062ae0.zip
Use CMake's C# support to build DacTableGen instead of manually invoking csc.exe ourselves. (#24342)
* Use CMake's C# support to build DacTableGen instead of manually invoking csc.exe ourselves. * Fix x86 failures. * Disable DAC generation when building with NMake Makefiles and issue an error since the CMake C# support is VS-only. We don't actually support building with NMake (only configure) so this is ok. * Clean up rest of the macro=1's PR Feedback. * Fix Visual Studio generator matching. * Explicitly specify anycpu32bitpreferred for DacTableGen so the ARM64 build doesn't accidentally make it 64-bit * Fix bad merge
Diffstat (limited to 'src/dlls')
-rw-r--r--src/dlls/mscoree/coreclr/CMakeLists.txt87
1 files changed, 46 insertions, 41 deletions
diff --git a/src/dlls/mscoree/coreclr/CMakeLists.txt b/src/dlls/mscoree/coreclr/CMakeLists.txt
index 0e847c684b..215aad13a9 100644
--- a/src/dlls/mscoree/coreclr/CMakeLists.txt
+++ b/src/dlls/mscoree/coreclr/CMakeLists.txt
@@ -154,48 +154,53 @@ endif(FEATURE_EVENT_TRACE)
target_link_libraries(coreclr ${CORECLR_LIBRARIES})
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/${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_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)
+ if (NOT CMAKE_GENERATOR MATCHES "Visual Studio .*")
+ add_custom_target(inject_debug_resources ALL COMMAND UNABLE_TO_EMBED_DAC_ON_WINDOWS_NON_VS_GENERATOR)
+ add_dependencies(inject_debug_resources coreclr mscordaccore mscordbi)
else()
- clr_unknown_arch()
- endif()
-
- set(DACTABLEGEN_EXE ${CMAKE_BINARY_DIR}/src/ToolBox/SOS/DacTableGen/dactablegen.exe)
-
- if (CLR_CMAKE_CROSS_ARCH)
- include(${CMAKE_INSTALL_PREFIX}/${CLR_CMAKE_CROSS_HOST_ARCH}/dactabletools/dactabletools.cmake)
- endif()
-
- set(INJECT_RESOURCE_EXE $<TARGET_FILE:InjectResource>)
- set(GEN_CLR_DEBUG_RESOURCE_EXE $<TARGET_FILE:GenClrDebugResource>)
-
- add_custom_command(
- 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 ${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 ${INJECT_RESOURCE_EXE} /bin:${CMAKE_CURRENT_BINARY_DIR}/wks.bin /dll:$<TARGET_FILE:coreclr>
- COMMAND ${GEN_CLR_DEBUG_RESOURCE_EXE} /dac:$<TARGET_FILE:mscordaccore> /dbi:$<TARGET_FILE:mscordbi> /sku:onecoreclr /out:${CMAKE_CURRENT_BINARY_DIR}/clrDebugResource.bin
- COMMAND ${INJECT_RESOURCE_EXE} /bin:${CMAKE_CURRENT_BINARY_DIR}/clrDebugResource.bin /dll:$<TARGET_FILE:coreclr> /name:CLRDEBUGINFO
- COMMAND ${INJECT_RESOURCE_EXE} /bin:${CMAKE_CURRENT_SOURCE_DIR}/dump_helper_resource.bin /dll:$<TARGET_FILE:coreclr> /name:MINIDUMP_AUXILIARY_PROVIDER
- COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/inject_debug_resources.timestamp
- COMMENT Add dactable, debug resources, and dump helper resources to coreclr
- )
-
- if(NOT DEFINED CLR_CROSS_COMPONENTS_BUILD)
- add_custom_target(inject_debug_resources ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/inject_debug_resources.timestamp)
+ # 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 -DDBG_TARGET_WIN64)
+
+ if (CLR_CMAKE_PLATFORM_ARCH_AMD64)
+ list(APPEND PREPROCESS_DEFINITIONS -DDBG_TARGET_AMD64)
+ elseif (CLR_CMAKE_PLATFORM_ARCH_ARM64)
+ list(APPEND PREPROCESS_DEFINITIONS -DDBG_TARGET_ARM64)
+ elseif (CLR_CMAKE_PLATFORM_ARCH_ARM)
+ list(APPEND PREPROCESS_DEFINITIONS -DDBG_TARGET_ARM)
+ elseif (CLR_CMAKE_PLATFORM_ARCH_I386)
+ list(APPEND PREPROCESS_DEFINITIONS -DDBG_TARGET_X86)
+ else()
+ clr_unknown_arch()
+ endif()
+
+
+ if (CLR_CMAKE_CROSS_ARCH)
+ include(${CMAKE_INSTALL_PREFIX}/${CLR_CMAKE_CROSS_HOST_ARCH}/dactabletools/dactabletools.cmake)
+ endif()
+
+ set(DACTABLEGEN_EXE $<TARGET_FILE:dactablegen>)
+ set(INJECT_RESOURCE_EXE $<TARGET_FILE:InjectResource>)
+ set(GEN_CLR_DEBUG_RESOURCE_EXE $<TARGET_FILE:GenClrDebugResource>)
+
+ add_custom_command(
+ 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 ${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 ${INJECT_RESOURCE_EXE} /bin:${CMAKE_CURRENT_BINARY_DIR}/wks.bin /dll:$<TARGET_FILE:coreclr>
+ COMMAND ${GEN_CLR_DEBUG_RESOURCE_EXE} /dac:$<TARGET_FILE:mscordaccore> /dbi:$<TARGET_FILE:mscordbi> /sku:onecoreclr /out:${CMAKE_CURRENT_BINARY_DIR}/clrDebugResource.bin
+ COMMAND ${INJECT_RESOURCE_EXE} /bin:${CMAKE_CURRENT_BINARY_DIR}/clrDebugResource.bin /dll:$<TARGET_FILE:coreclr> /name:CLRDEBUGINFO
+ COMMAND ${INJECT_RESOURCE_EXE} /bin:${CMAKE_CURRENT_SOURCE_DIR}/dump_helper_resource.bin /dll:$<TARGET_FILE:coreclr> /name:MINIDUMP_AUXILIARY_PROVIDER
+ COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/inject_debug_resources.timestamp
+ COMMENT Add dactable, debug resources, and dump helper resources to coreclr
+ )
+
+ if(NOT DEFINED CLR_CROSS_COMPONENTS_BUILD)
+ add_custom_target(inject_debug_resources ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/inject_debug_resources.timestamp)
+ endif()
endif()
endif(WIN32)