diff options
author | Steve MacLean <Steve.MacLean@microsoft.com> | 2020-01-25 01:09:26 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-25 01:09:26 +0300 |
commit | a0cb673c96c1a831536ae0bcc1ebc0a2afe45830 (patch) | |
tree | 1b47dfae1aa9089097ab0764a5f5fef2893ebcbd /src/coreclr/clrdefinitions.cmake | |
parent | 9c130e4863dab0512713e27a8ee44f303af44ebf (diff) |
Refactor CMake system to allow cross OS DAC compile (#2054)
* Refactor CMake system to allow cross OS DAC compile
Add CLR_CMAKE_HOST_OS
Add rules to determine which cross OS combinations are valid
Make add_definitions depend on TARGET OS properties. Wherever reasonable
make C++ defines depend on runtime target rather than host.
Diffstat (limited to 'src/coreclr/clrdefinitions.cmake')
-rw-r--r-- | src/coreclr/clrdefinitions.cmake | 106 |
1 files changed, 54 insertions, 52 deletions
diff --git a/src/coreclr/clrdefinitions.cmake b/src/coreclr/clrdefinitions.cmake index 58706f86158..a266d298b70 100644 --- a/src/coreclr/clrdefinitions.cmake +++ b/src/coreclr/clrdefinitions.cmake @@ -17,7 +17,7 @@ add_compile_definitions($<$<BOOL:$<TARGET_PROPERTY:CROSSGEN_COMPONENT>>:FEATURE_ add_compile_definitions($<$<BOOL:$<TARGET_PROPERTY:CROSSGEN_COMPONENT>>:SELF_NO_HOST>) if (CLR_CMAKE_TARGET_ARCH_AMD64) - if (CLR_CMAKE_HOST_UNIX) + if (CLR_CMAKE_TARGET_UNIX) add_definitions(-DDBG_TARGET_AMD64_UNIX) endif() add_definitions(-D_TARGET_AMD64_) @@ -25,7 +25,7 @@ if (CLR_CMAKE_TARGET_ARCH_AMD64) add_definitions(-DDBG_TARGET_64BIT) add_definitions(-DDBG_TARGET_AMD64) elseif (CLR_CMAKE_TARGET_ARCH_ARM64) - if (CLR_CMAKE_HOST_UNIX) + if (CLR_CMAKE_TARGET_UNIX) add_definitions(-DDBG_TARGET_ARM64_UNIX) add_definitions(-DFEATURE_EMULATE_SINGLESTEP) endif() @@ -35,13 +35,13 @@ elseif (CLR_CMAKE_TARGET_ARCH_ARM64) add_definitions(-DDBG_TARGET_ARM64) add_definitions(-DFEATURE_MULTIREG_RETURN) elseif (CLR_CMAKE_TARGET_ARCH_ARM) - if (CLR_CMAKE_HOST_UNIX) + if (CLR_CMAKE_TARGET_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) add_definitions(-D_ARM_WORKAROUND_) - endif (CLR_CMAKE_HOST_UNIX) + endif (CLR_CMAKE_TARGET_UNIX) add_definitions(-D_TARGET_ARM_) add_definitions(-DDBG_TARGET_32BIT) add_definitions(-DDBG_TARGET_ARM) @@ -54,12 +54,12 @@ else () clr_unknown_arch() endif (CLR_CMAKE_TARGET_ARCH_AMD64) -if (CLR_CMAKE_HOST_UNIX) +if (CLR_CMAKE_TARGET_UNIX) - if(CLR_CMAKE_HOST_DARWIN) + if(CLR_CMAKE_TARGET_DARWIN) add_definitions(-D_XOPEN_SOURCE) add_definitions(-DFEATURE_DATATARGET4) - endif(CLR_CMAKE_HOST_DARWIN) + endif(CLR_CMAKE_TARGET_DARWIN) if (CLR_CMAKE_TARGET_ARCH_AMD64) add_definitions(-DUNIX_AMD64_ABI) @@ -69,13 +69,13 @@ if (CLR_CMAKE_HOST_UNIX) add_definitions(-DUNIX_X86_ABI) endif() -endif(CLR_CMAKE_HOST_UNIX) +endif(CLR_CMAKE_TARGET_UNIX) -if(CLR_CMAKE_HOST_ALPINE_LINUX) +if(CLR_CMAKE_TARGET_ALPINE_LINUX) # Alpine Linux doesn't have fixed stack limit, this define disables some stack pointer # sanity checks in debug / checked build that rely on a fixed stack limit add_definitions(-DNO_FIXED_STACK_LIMIT) -endif(CLR_CMAKE_HOST_ALPINE_LINUX) +endif(CLR_CMAKE_TARGET_ALPINE_LINUX) add_definitions(-D_BLD_CLR) add_definitions(-DDEBUGGING_SUPPORTED) @@ -89,43 +89,45 @@ if(WIN32) add_definitions(-D_WIN32_WINNT=0x0602) add_definitions(-DWIN32_LEAN_AND_MEAN) add_definitions(-D_CRT_SECURE_NO_WARNINGS) +endif(WIN32) +if(CLR_CMAKE_TARGET_WIN32) if(CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_I386) # Only enable edit and continue on windows x86 and x64 # exclude Linux, arm & arm64 add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:CROSSGEN_COMPONENT>>>:EnC_SUPPORTED>) endif(CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_I386) - endif(WIN32) +endif(CLR_CMAKE_TARGET_WIN32) # Features - please keep them alphabetically sorted -if(WIN32) +if(CLR_CMAKE_TARGET_WIN32) add_definitions(-DFEATURE_APPX) if(NOT CLR_CMAKE_TARGET_ARCH_I386) add_definitions(-DFEATURE_ARRAYSTUB_AS_IL) add_definitions(-DFEATURE_MULTICASTSTUB_AS_IL) endif() -else(WIN32) +else(CLR_CMAKE_TARGET_WIN32) add_definitions(-DFEATURE_ARRAYSTUB_AS_IL) add_definitions(-DFEATURE_MULTICASTSTUB_AS_IL) -endif(WIN32) +endif(CLR_CMAKE_TARGET_WIN32) if(NOT CLR_CMAKE_TARGET_ARCH_I386) add_definitions(-DFEATURE_PORTABLE_SHUFFLE_THUNKS) endif() -if(CLR_CMAKE_HOST_UNIX OR NOT CLR_CMAKE_TARGET_ARCH_I386) +if(CLR_CMAKE_TARGET_UNIX OR NOT CLR_CMAKE_TARGET_ARCH_I386) add_definitions(-DFEATURE_INSTANTIATINGSTUB_AS_IL) endif() add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:CROSSGEN_COMPONENT>>>:FEATURE_CODE_VERSIONING>) add_definitions(-DFEATURE_COLLECTIBLE_TYPES) -if(WIN32) +if(CLR_CMAKE_TARGET_WIN32) add_definitions(-DFEATURE_CLASSIC_COMINTEROP) add_definitions(-DFEATURE_COMINTEROP) add_definitions(-DFEATURE_COMINTEROP_APARTMENT_SUPPORT) add_definitions(-DFEATURE_COMINTEROP_UNMANAGED_ACTIVATION) add_definitions(-DFEATURE_COMINTEROP_WINRT_MANAGED_ACTIVATION) -endif(WIN32) +endif(CLR_CMAKE_TARGET_WIN32) add_definitions(-DFEATURE_BASICFREEZE) add_definitions(-DFEATURE_CORECLR) @@ -152,49 +154,49 @@ endif(FEATURE_GDBJIT_LANGID_CS) if(FEATURE_GDBJIT_SYMTAB) add_definitions(-DFEATURE_GDBJIT_SYMTAB) endif(FEATURE_GDBJIT_SYMTAB) -if(CLR_CMAKE_HOST_UNIX) +if(CLR_CMAKE_TARGET_UNIX) add_definitions(-DFEATURE_EVENTSOURCE_XPLAT) -endif(CLR_CMAKE_HOST_UNIX) +endif(CLR_CMAKE_TARGET_UNIX) # NetBSD doesn't implement this feature if(NOT CMAKE_SYSTEM_NAME STREQUAL NetBSD) add_definitions(-DFEATURE_HIJACK) endif(NOT CMAKE_SYSTEM_NAME STREQUAL NetBSD) add_definitions(-DFEATURE_ICASTABLE) -if (WIN32 AND (CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_I386 OR CLR_CMAKE_TARGET_ARCH_ARM64)) +if (CLR_CMAKE_TARGET_WIN32 AND (CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_I386 OR CLR_CMAKE_TARGET_ARCH_ARM64)) add_definitions(-DFEATURE_INTEROP_DEBUGGING) -endif (WIN32 AND (CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_I386 OR CLR_CMAKE_TARGET_ARCH_ARM64)) +endif (CLR_CMAKE_TARGET_WIN32 AND (CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_I386 OR CLR_CMAKE_TARGET_ARCH_ARM64)) if(FEATURE_INTERPRETER) add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:CROSSGEN_COMPONENT>>>:FEATURE_INTERPRETER>) endif(FEATURE_INTERPRETER) add_definitions(-DFEATURE_ISYM_READER) -if (CLR_CMAKE_HOST_LINUX OR WIN32) +if (CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_WIN32) add_definitions(-DFEATURE_MANAGED_ETW) -endif(CLR_CMAKE_HOST_LINUX OR WIN32) +endif(CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_WIN32) add_definitions(-DFEATURE_MANAGED_ETW_CHANNELS) if(FEATURE_MERGE_JIT_AND_ENGINE) add_definitions(-DFEATURE_MERGE_JIT_AND_ENGINE) endif(FEATURE_MERGE_JIT_AND_ENGINE) add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:CROSSGEN_COMPONENT>>>:FEATURE_MULTICOREJIT>) -if(CLR_CMAKE_HOST_UNIX) +if(CLR_CMAKE_TARGET_UNIX) add_definitions(-DFEATURE_PAL) add_definitions(-DFEATURE_PAL_ANSI) -endif(CLR_CMAKE_HOST_UNIX) -if(CLR_CMAKE_HOST_LINUX) +endif(CLR_CMAKE_TARGET_UNIX) +if(CLR_CMAKE_TARGET_LINUX AND CLR_CMAKE_HOST_LINUX) add_definitions(-DFEATURE_PERFMAP) -endif(CLR_CMAKE_HOST_LINUX) -if(CLR_CMAKE_HOST_FREEBSD) +endif(CLR_CMAKE_TARGET_LINUX AND CLR_CMAKE_HOST_LINUX) +if(CLR_CMAKE_TARGET_FREEBSD) add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:CROSSGEN_COMPONENT>>>:FEATURE_PERFMAP>) -endif(CLR_CMAKE_HOST_FREEBSD) +endif(CLR_CMAKE_TARGET_FREEBSD) if(FEATURE_PREJIT) add_definitions(-DFEATURE_PREJIT) else() add_compile_definitions($<$<BOOL:$<TARGET_PROPERTY:CROSSGEN_COMPONENT>>:FEATURE_PREJIT>) endif(FEATURE_PREJIT) -if(WIN32 OR CLR_CMAKE_HOST_LINUX) +if(CLR_CMAKE_TARGET_WIN32 OR CLR_CMAKE_TARGET_LINUX) add_compile_definitions($<$<AND:$<NOT:$<BOOL:$<TARGET_PROPERTY:CROSSGEN_COMPONENT>>>,$<NOT:$<BOOL:$<TARGET_PROPERTY:DAC_COMPONENT>>>>:FEATURE_PROFAPI_ATTACH_DETACH>) -endif(WIN32 OR CLR_CMAKE_HOST_LINUX) +endif(CLR_CMAKE_TARGET_WIN32 OR CLR_CMAKE_TARGET_LINUX) add_compile_definitions($<$<BOOL:$<TARGET_PROPERTY:DAC_COMPONENT>>:DATA_PROFAPI_ATTACH_DETACH>) @@ -205,7 +207,7 @@ set(FEATURE_READYTORUN 1) add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:CROSSGEN_COMPONENT>>>:FEATURE_REJIT>) -if (CLR_CMAKE_HOST_UNIX OR CLR_CMAKE_TARGET_ARCH_ARM64) +if (CLR_CMAKE_TARGET_UNIX OR CLR_CMAKE_TARGET_ARCH_ARM64) add_definitions(-DFEATURE_STUBS_AS_IL) endif () if (FEATURE_NGEN_RELOCS_OPTIMIZATIONS) @@ -217,45 +219,45 @@ endif(FEATURE_ENABLE_NO_ADDRESS_SPACE_RANDOMIZATION) add_definitions(-DFEATURE_SVR_GC) add_definitions(-DFEATURE_SYMDIFF) add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:CROSSGEN_COMPONENT>>>:FEATURE_TIERED_COMPILATION>) -if (WIN32) +if (CLR_CMAKE_TARGET_WIN32) add_definitions(-DFEATURE_TYPEEQUIVALENCE) -endif(WIN32) -if (CLR_CMAKE_HOST_ARCH_AMD64) +endif(CLR_CMAKE_TARGET_WIN32) +if (CLR_CMAKE_TARGET_ARCH_AMD64) # Enable the AMD64 Unix struct passing JIT-EE interface for all AMD64 platforms, to enable altjit. add_definitions(-DUNIX_AMD64_ABI_ITF) -endif (CLR_CMAKE_HOST_ARCH_AMD64) -if(CLR_CMAKE_HOST_UNIX_AMD64) +endif (CLR_CMAKE_TARGET_ARCH_AMD64) +if(CLR_CMAKE_TARGET_UNIX_AMD64) add_definitions(-DFEATURE_MULTIREG_RETURN) -endif (CLR_CMAKE_HOST_UNIX_AMD64) -if(CLR_CMAKE_HOST_UNIX AND CLR_CMAKE_TARGET_ARCH_AMD64) +endif (CLR_CMAKE_TARGET_UNIX_AMD64) +if(CLR_CMAKE_TARGET_UNIX AND CLR_CMAKE_TARGET_ARCH_AMD64) add_definitions(-DUNIX_AMD64_ABI) -endif(CLR_CMAKE_HOST_UNIX AND CLR_CMAKE_TARGET_ARCH_AMD64) +endif(CLR_CMAKE_TARGET_UNIX AND CLR_CMAKE_TARGET_ARCH_AMD64) add_definitions(-DFEATURE_USE_ASM_GC_WRITE_BARRIERS) -if(CLR_CMAKE_HOST_ARCH_AMD64 OR CLR_CMAKE_HOST_ARCH_ARM64) +if(CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_ARM64) add_definitions(-DFEATURE_USE_SOFTWARE_WRITE_WATCH_FOR_GC_HEAP) -endif(CLR_CMAKE_HOST_ARCH_AMD64 OR CLR_CMAKE_HOST_ARCH_ARM64) -if(CLR_CMAKE_HOST_ARCH_AMD64 OR CLR_CMAKE_HOST_ARCH_ARM64) +endif(CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_ARM64) +if(CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_ARM64) add_definitions(-DFEATURE_MANUALLY_MANAGED_CARD_BUNDLES) -endif(CLR_CMAKE_HOST_ARCH_AMD64 OR CLR_CMAKE_HOST_ARCH_ARM64) +endif(CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_ARM64) -if(NOT CLR_CMAKE_HOST_UNIX) +if(NOT CLR_CMAKE_TARGET_UNIX) add_definitions(-DFEATURE_WIN32_REGISTRY) -endif(NOT CLR_CMAKE_HOST_UNIX) +endif(NOT CLR_CMAKE_TARGET_UNIX) add_definitions(-DFEATURE_WINMD_RESILIENT) add_definitions(-D_SECURE_SCL=0) add_definitions(-DUNICODE) add_definitions(-D_UNICODE) -if(WIN32) +if(CLR_CMAKE_TARGET_WIN32) if (CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_I386) add_definitions(-DFEATURE_DATABREAKPOINT) endif(CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_I386) -endif(WIN32) +endif(CLR_CMAKE_TARGET_WIN32) -if(CLR_CMAKE_HOST_DARWIN) +if(CLR_CMAKE_TARGET_DARWIN) add_definitions(-DFEATURE_WRITEBARRIER_COPY) -endif(CLR_CMAKE_HOST_DARWIN) +endif(CLR_CMAKE_TARGET_DARWIN) -if (NOT CLR_CMAKE_TARGET_ARCH_I386 OR NOT WIN32) +if (NOT CLR_CMAKE_TARGET_ARCH_I386 OR NOT CLR_CMAKE_TARGET_WIN32) add_definitions(-DFEATURE_EH_FUNCLETS) -endif (NOT CLR_CMAKE_TARGET_ARCH_I386 OR NOT WIN32) +endif (NOT CLR_CMAKE_TARGET_ARCH_I386 OR NOT CLR_CMAKE_TARGET_WIN32) |