Skip to content

Commit

Permalink
Use CMake's C# support to build DacTableGen instead of manually invok…
Browse files Browse the repository at this point in the history
…ing csc.exe ourselves. (dotnet#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
  • Loading branch information
jkoritzinsky committed Jun 6, 2019
1 parent 2e9cd82 commit 4c82068
Show file tree
Hide file tree
Showing 24 changed files with 158 additions and 210 deletions.
46 changes: 23 additions & 23 deletions clrdefinitions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,44 +6,44 @@ set(PRERELEASE 1)

# Features we're currently flighting, but don't intend to ship in officially supported releases
if (PRERELEASE)
add_definitions(-DFEATURE_UTF8STRING=1)
# add_definitions(-DFEATURE_XXX=1)
add_definitions(-DFEATURE_UTF8STRING)
# add_definitions(-DFEATURE_XXX)
endif (PRERELEASE)

if (CLR_CMAKE_TARGET_ARCH_AMD64)
if (CLR_CMAKE_PLATFORM_UNIX)
add_definitions(-DDBG_TARGET_AMD64_UNIX)
endif()
add_definitions(-D_TARGET_AMD64_=1)
add_definitions(-D_TARGET_64BIT_=1)
add_definitions(-DDBG_TARGET_64BIT=1)
add_definitions(-DDBG_TARGET_AMD64=1)
add_definitions(-DDBG_TARGET_WIN64=1)
add_definitions(-D_TARGET_AMD64_)
add_definitions(-D_TARGET_64BIT_)
add_definitions(-DDBG_TARGET_64BIT)
add_definitions(-DDBG_TARGET_AMD64)
add_definitions(-DDBG_TARGET_WIN64)
elseif (CLR_CMAKE_TARGET_ARCH_ARM64)
if (CLR_CMAKE_PLATFORM_UNIX)
add_definitions(-DDBG_TARGET_ARM64_UNIX)
endif()
add_definitions(-D_TARGET_ARM64_=1)
add_definitions(-D_TARGET_64BIT_=1)
add_definitions(-DDBG_TARGET_64BIT=1)
add_definitions(-DDBG_TARGET_ARM64=1)
add_definitions(-DDBG_TARGET_WIN64=1)
add_definitions(-D_TARGET_ARM64_)
add_definitions(-D_TARGET_64BIT_)
add_definitions(-DDBG_TARGET_64BIT)
add_definitions(-DDBG_TARGET_ARM64)
add_definitions(-DDBG_TARGET_WIN64)
add_definitions(-DFEATURE_MULTIREG_RETURN)
elseif (CLR_CMAKE_TARGET_ARCH_ARM)
if (CLR_CMAKE_PLATFORM_UNIX)
add_definitions(-DDBG_TARGET_ARM_UNIX)
elseif (WIN32 AND NOT DEFINED CLR_CROSS_COMPONENTS_BUILD)
# Set this to ensure we can use Arm SDK for Desktop binary linkage when doing native (Arm32) build
add_definitions(-D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1)
add_definitions(-D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE)
add_definitions(-D_ARM_WORKAROUND_)
endif (CLR_CMAKE_PLATFORM_UNIX)
add_definitions(-D_TARGET_ARM_=1)
add_definitions(-DDBG_TARGET_32BIT=1)
add_definitions(-DDBG_TARGET_ARM=1)
add_definitions(-D_TARGET_ARM_)
add_definitions(-DDBG_TARGET_32BIT)
add_definitions(-DDBG_TARGET_ARM)
elseif (CLR_CMAKE_TARGET_ARCH_I386)
add_definitions(-D_TARGET_X86_=1)
add_definitions(-DDBG_TARGET_32BIT=1)
add_definitions(-DDBG_TARGET_X86=1)
add_definitions(-D_TARGET_X86_)
add_definitions(-DDBG_TARGET_32BIT)
add_definitions(-DDBG_TARGET_X86)
else ()
clr_unknown_arch()
endif (CLR_CMAKE_TARGET_ARCH_AMD64)
Expand Down Expand Up @@ -81,7 +81,7 @@ if(WIN32)
add_definitions(-D_WIN32)
add_definitions(-DWINVER=0x0602)
add_definitions(-D_WIN32_WINNT=0x0602)
add_definitions(-DWIN32_LEAN_AND_MEAN=1)
add_definitions(-DWIN32_LEAN_AND_MEAN)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
if(CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_I386)
# Only enable edit and continue on windows x86 and x64
Expand Down Expand Up @@ -122,8 +122,8 @@ if(FEATURE_DBGIPC)
endif(FEATURE_DBGIPC)
add_definitions(-DFEATURE_DEFAULT_INTERFACES)
if(FEATURE_EVENT_TRACE)
add_definitions(-DFEATURE_EVENT_TRACE=1)
add_definitions(-DFEATURE_PERFTRACING=1)
add_definitions(-DFEATURE_EVENT_TRACE)
add_definitions(-DFEATURE_PERFTRACING)
endif(FEATURE_EVENT_TRACE)
if(FEATURE_GDBJIT)
add_definitions(-DFEATURE_GDBJIT)
Expand All @@ -138,7 +138,7 @@ if(FEATURE_GDBJIT_SYMTAB)
add_definitions(-DFEATURE_GDBJIT_SYMTAB)
endif(FEATURE_GDBJIT_SYMTAB)
if(CLR_CMAKE_PLATFORM_UNIX)
add_definitions(-DFEATURE_EVENTSOURCE_XPLAT=1)
add_definitions(-DFEATURE_EVENTSOURCE_XPLAT)
endif(CLR_CMAKE_PLATFORM_UNIX)
# NetBSD doesn't implement this feature
if(NOT CMAKE_SYSTEM_NAME STREQUAL NetBSD)
Expand Down
8 changes: 4 additions & 4 deletions configurecompiler.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@ if (CLR_CMAKE_PLATFORM_ARCH_AMD64)
add_definitions(-D_AMD64_)
add_definitions(-D_WIN64)
add_definitions(-DAMD64)
add_definitions(-DBIT64=1)
add_definitions(-DBIT64)
elseif (CLR_CMAKE_PLATFORM_ARCH_I386)
add_definitions(-D_X86_)
elseif (CLR_CMAKE_PLATFORM_ARCH_ARM)
Expand All @@ -376,7 +376,7 @@ elseif (CLR_CMAKE_PLATFORM_ARCH_ARM64)
add_definitions(-D_ARM64_)
add_definitions(-DARM64)
add_definitions(-D_WIN64)
add_definitions(-DBIT64=1)
add_definitions(-DBIT64)
else ()
clr_unknown_arch()
endif ()
Expand All @@ -402,7 +402,7 @@ if (CLR_CMAKE_PLATFORM_UNIX)
endif(CLR_CMAKE_PLATFORM_UNIX)

if (CLR_CMAKE_PLATFORM_UNIX)
add_definitions(-DPLATFORM_UNIX=1)
add_definitions(-DPLATFORM_UNIX)

if(CLR_CMAKE_PLATFORM_DARWIN)
message("Detected OSX x86_64")
Expand All @@ -418,7 +418,7 @@ if (CLR_CMAKE_PLATFORM_UNIX)
endif(CLR_CMAKE_PLATFORM_UNIX)

if (WIN32)
add_definitions(-DPLATFORM_WINDOWS=1)
add_definitions(-DPLATFORM_WINDOWS)

# Define the CRT lib references that link into Desktop imports
set(STATIC_MT_CRT_LIB "libcmt$<$<OR:$<CONFIG:Debug>,$<CONFIG:Checked>>:d>.lib")
Expand Down
2 changes: 1 addition & 1 deletion crossgen.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ add_definitions(
remove_definitions(
-DFEATURE_CODE_VERSIONING
-DEnC_SUPPORTED
-DFEATURE_EVENT_TRACE=1
-DFEATURE_EVENT_TRACE
-DFEATURE_INTERPRETER
-DFEATURE_MULTICOREJIT
-DFEATURE_PERFMAP
Expand Down
4 changes: 3 additions & 1 deletion src/ToolBox/SOS/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
if(WIN32)
if (CMAKE_GENERATOR MATCHES "Visual Studio .*")
add_subdirectory(DacTableGen)
add_subdirectory(Strike)
endif()
add_subdirectory(Strike)
endif(WIN32)
26 changes: 11 additions & 15 deletions src/ToolBox/SOS/DacTableGen/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,23 +1,19 @@
cmake_minimum_required(VERSION 3.8) # This project is only included on Win32 platforms so we can have a higher CMake version requirement since we already require a newer CMake version on Windows for various reasons.
# Quick note: The CMake C# support is using the CSC bundled with the MSBuild that the native build runs on, not the one supplied by the local .NET SDK.

project(DacTableGen LANGUAGES CSharp)

set(DACTABLEGEN_SOURCES
cvconst.cs
diautil.cs
main.cs
MapSymbolProvider.cs
)
# DacTableGen doesn't use the defines from the rest of the build tree, so clear all of the compile definitions
set_directory_properties(PROPERTIES COMPILE_DEFINITIONS "")

# Cmake does not support C# sources so add custom command
# Disable:
# warning CS1668: Invalid search path 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.14.26428\atlmfc\lib\ARM64' specified in 'LIB environment variable' -- 'The system cannot find the path specified. '
# There are several problems here: (1) the C++ project files are adding non-existent directories to the LIB path, especially for ARM and ARM64,
# (2) This CSC is invoking the desktop .NET Framework CSC, not the buildtools version.
add_custom_target(dactablegen ALL
COMMAND csc.exe /t:exe /platform:anycpu32bitpreferred /r:System.dll /r:DiaLib.dll /nowarn:1668 /out:${CMAKE_CURRENT_BINARY_DIR}/dactablegen.exe ${DACTABLEGEN_SOURCES}
COMMAND ${CMAKE_COMMAND} -E copy DIAlib.dll ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${DACTABLEGEN_SOURCES} DIAlib.dll
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
set(CMAKE_CSharp_FLAGS "/platform:anycpu32bitpreferred")
add_executable(dactablegen ${DACTABLEGEN_SOURCES})

# In order to use dactablegen as an executable target it needs to be imported.
# Target is used in dll/mscoree/coreclr/cmakelists.txt
add_executable(dactablegen_exe IMPORTED GLOBAL)
set_property(TARGET dactablegen_exe PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/dactablegen.exe)
set_target_properties(dactablegen PROPERTIES VS_DOTNET_REFERENCES "System")
set_target_properties(dactablegen PROPERTIES VS_DOTNET_REFERENCE_DIALib ${CMAKE_CURRENT_SOURCE_DIR}/DIALib.dll)
55 changes: 0 additions & 55 deletions src/ToolBox/SOS/DacTableGen/DacTableGen.csproj

This file was deleted.

30 changes: 15 additions & 15 deletions src/ToolBox/SOS/Strike/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,33 +10,33 @@ if (CORECLR_SET_RPATH)
endif (CORECLR_SET_RPATH)

if(CLR_CMAKE_PLATFORM_ARCH_AMD64)
add_definitions(-DSOS_TARGET_AMD64=1)
add_definitions(-D_TARGET_WIN64_=1)
add_definitions(-DSOS_TARGET_AMD64)
add_definitions(-D_TARGET_WIN64_)
add_definitions(-DDBG_TARGET_64BIT)
add_definitions(-DDBG_TARGET_WIN64=1)
add_definitions(-DDBG_TARGET_WIN64)
if(WIN32)
add_definitions(-DSOS_TARGET_ARM64=1)
add_definitions(-DSOS_TARGET_ARM64)
endif(WIN32)
remove_definitions(-D_TARGET_ARM64_=1)
remove_definitions(-D_TARGET_ARM64_)
add_definitions(-D_TARGET_AMD64_)
add_definitions(-DDBG_TARGET_AMD64)
elseif(CLR_CMAKE_PLATFORM_ARCH_I386)
add_definitions(-DSOS_TARGET_X86=1)
add_definitions(-D_TARGET_X86_=1)
add_definitions(-DSOS_TARGET_X86)
add_definitions(-D_TARGET_X86_)
add_definitions(-DDBG_TARGET_32BIT)
if(WIN32)
add_definitions(-DSOS_TARGET_ARM=1)
add_definitions(-DSOS_TARGET_ARM)
endif(WIN32)
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
add_definitions(-DSOS_TARGET_ARM=1)
add_definitions(-D_TARGET_WIN32_=1)
add_definitions(-D_TARGET_ARM_=1)
add_definitions(-DSOS_TARGET_ARM)
add_definitions(-D_TARGET_WIN32_)
add_definitions(-D_TARGET_ARM_)
add_definitions(-DDBG_TARGET_32BIT)
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64)
add_definitions(-DSOS_TARGET_ARM64=1)
add_definitions(-D_TARGET_WIN64_=1)
add_definitions(-DSOS_TARGET_ARM64)
add_definitions(-D_TARGET_WIN64_)
add_definitions(-DDBG_TARGET_64BIT)
add_definitions(-DDBG_TARGET_WIN64=1)
add_definitions(-DDBG_TARGET_WIN64)
endif()

add_definitions(-DSTRIKE)
Expand Down Expand Up @@ -105,7 +105,7 @@ if(WIN32)
ntdll.lib
)
else(WIN32)
add_definitions(-DPAL_STDCPP_COMPAT=1)
add_definitions(-DPAL_STDCPP_COMPAT)
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wno-null-arithmetic)
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
Expand Down
28 changes: 14 additions & 14 deletions src/ToolBox/SOS/lldbplugin/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,24 +27,24 @@ if(SKIP_LLDBPLUGIN)
endif()

if(CLR_CMAKE_PLATFORM_ARCH_AMD64)
add_definitions(-D_TARGET_AMD64_=1)
add_definitions(-DDBG_TARGET_64BIT=1)
add_definitions(-DDBG_TARGET_AMD64=1)
add_definitions(-DDBG_TARGET_WIN64=1)
add_definitions(-D_TARGET_AMD64_)
add_definitions(-DDBG_TARGET_64BIT)
add_definitions(-DDBG_TARGET_AMD64)
add_definitions(-DDBG_TARGET_WIN64)
add_definitions(-DBIT64)
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(-D_TARGET_X86_)
add_definitions(-DDBG_TARGET_32BIT)
add_definitions(-DDBG_TARGET_X86)
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
add_definitions(-D_TARGET_ARM_=1)
add_definitions(-DDBG_TARGET_32BIT=1)
add_definitions(-DDBG_TARGET_ARM=1)
add_definitions(-D_TARGET_ARM_)
add_definitions(-DDBG_TARGET_32BIT)
add_definitions(-DDBG_TARGET_ARM)
elseif(CLR_CMAKE_PLATFORM_ARCH_ARM64)
add_definitions(-D_TARGET_ARM64_=1)
add_definitions(-DDBG_TARGET_64BIT=1)
add_definitions(-DDBG_TARGET_ARM64=1)
add_definitions(-DDBG_TARGET_WIN64=1)
add_definitions(-D_TARGET_ARM64_)
add_definitions(-DDBG_TARGET_64BIT)
add_definitions(-DDBG_TARGET_ARM64)
add_definitions(-DDBG_TARGET_WIN64)
add_definitions(-DBIT64)
SET(REQUIRE_LLDBPLUGIN false)
endif()
Expand Down
6 changes: 3 additions & 3 deletions src/corefx/System.Globalization.Native/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ project(System.Globalization.Native C)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

add_definitions(-DPIC=1)
add_definitions(-DBIT64=1)
add_definitions(-DPIC)
add_definitions(-DBIT64)

set(ICU_HOMEBREW_INC_PATH "/usr/local/opt/icu4c/include")

Expand Down Expand Up @@ -85,7 +85,7 @@ else()
dl
)

add_definitions(-DU_DISABLE_RENAMING=1)
add_definitions(-DU_DISABLE_RENAMING)
endif()

verify_dependencies(
Expand Down
2 changes: 1 addition & 1 deletion src/debug/createdump/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ remove_definitions(-D_UNICODE)

include_directories(BEFORE ${VM_DIR})

add_definitions(-DPAL_STDCPP_COMPAT=1)
add_definitions(-DPAL_STDCPP_COMPAT)

add_compile_options(-fPIE)

Expand Down
2 changes: 1 addition & 1 deletion src/debug/debug-pal/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
include_directories(../inc)
include_directories(../../pal/inc)

add_definitions(-DPAL_STDCPP_COMPAT=1)
add_definitions(-DPAL_STDCPP_COMPAT)

if(WIN32)
add_definitions(-DWIN32_LEAN_AND_MEAN)
Expand Down
Loading

0 comments on commit 4c82068

Please sign in to comment.