diff options
Diffstat (limited to 'src/pal')
-rw-r--r-- | src/pal/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/pal/src/CMakeLists.txt | 47 |
2 files changed, 33 insertions, 16 deletions
diff --git a/src/pal/CMakeLists.txt b/src/pal/CMakeLists.txt index cb8b05586c..8e3228b622 100644 --- a/src/pal/CMakeLists.txt +++ b/src/pal/CMakeLists.txt @@ -5,7 +5,7 @@ project(COREPAL) if (WIN32) set(FEATURE_EVENT_TRACE 1) endif() -if(CLR_CMAKE_PLATFORM_LINUX AND CLR_CMAKE_PLATFORM_ARCH_AMD64) +if(CLR_CMAKE_PLATFORM_LINUX AND CLR_CMAKE_TARGET_ARCH_AMD64) set(FEATURE_EVENT_TRACE 1) endif() diff --git a/src/pal/src/CMakeLists.txt b/src/pal/src/CMakeLists.txt index 28ee83a77c..f5f3d40c97 100644 --- a/src/pal/src/CMakeLists.txt +++ b/src/pal/src/CMakeLists.txt @@ -23,20 +23,37 @@ include_directories(include) # Compile options -if(CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64 OR CMAKE_SYSTEM_PROCESSOR STREQUAL amd64 OR CMAKE_SYSTEM_PROCESSOR STREQUAL AMD64) - set(PAL_CMAKE_PLATFORM_ARCH_AMD64 1) - add_definitions(-D_AMD64_) -elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL armv7l) - set(PAL_CMAKE_PLATFORM_ARCH_ARM 1) - add_definitions(-D_ARM_) -elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64) - set(PAL_CMAKE_PLATFORM_ARCH_ARM64 1) - add_definitions(-D_ARM64_) -elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL i686) - set(CLR_CMAKE_PLATFORM_ARCH_I386 1) - add_definitions(-D_X86_) +if(CLR_CROSS_COMPONENTS_BUILD) + if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL x86_64 OR CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL amd64) + if(CLR_CMAKE_TARGET_ARCH STREQUAL "arm") + set(PAL_CMAKE_PLATFORM_ARCH_I386 1) + add_definitions(-D_X86_) + else() + set(PAL_CMAKE_PLATFORM_ARCH_AMD64 1) + add_definitions(-D_AMD64_) + endif() + elseif(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL i686) + set(PAL_CMAKE_PLATFORM_ARCH_I386 1) + add_definitions(-D_X86_) + else() + message(FATAL_ERROR "Only AMD64, I386 host for cross-architecture component is supported") + endif() else() - message(FATAL_ERROR "Only ARM and AMD64 is supported") + if(CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64 OR CMAKE_SYSTEM_PROCESSOR STREQUAL amd64 OR CMAKE_SYSTEM_PROCESSOR STREQUAL AMD64) + set(PAL_CMAKE_PLATFORM_ARCH_AMD64 1) + add_definitions(-D_AMD64_) + elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL armv7l) + set(PAL_CMAKE_PLATFORM_ARCH_ARM 1) + add_definitions(-D_ARM_) + elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64) + set(PAL_CMAKE_PLATFORM_ARCH_ARM64 1) + add_definitions(-D_ARM64_) + elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL i686) + set(PAL_CMAKE_PLATFORM_ARCH_I386 1) + add_definitions(-D_X86_) + else() + message(FATAL_ERROR "Only ARM, AMD64, ARM64 and I386 is supported") + endif() endif() if(CMAKE_SYSTEM_NAME STREQUAL Darwin) @@ -65,7 +82,7 @@ elseif(PAL_CMAKE_PLATFORM_ARCH_ARM) elseif(PAL_CMAKE_PLATFORM_ARCH_ARM64) add_definitions(-DBIT64=1) add_definitions(-D_WIN64=1) -elseif(CLR_CMAKE_PLATFORM_ARCH_I386) +elseif(PAL_CMAKE_PLATFORM_ARCH_I386) add_definitions(-DBIT32=1) endif() @@ -105,7 +122,7 @@ elseif(PAL_CMAKE_PLATFORM_ARCH_ARM64) arch/arm64/exceptionhelper.S arch/arm64/processor.cpp ) -elseif(CLR_CMAKE_PLATFORM_ARCH_I386) +elseif(PAL_CMAKE_PLATFORM_ARCH_I386) set(ARCH_SOURCES arch/i386/context2.S arch/i386/debugbreak.S |