summaryrefslogtreecommitdiff
path: root/src/pal/src/CMakeLists.txt
diff options
context:
space:
mode:
authorJiyoung Yun <jy910.yun@samsung.com>2017-02-10 20:35:12 +0900
committerJiyoung Yun <jy910.yun@samsung.com>2017-02-10 20:35:12 +0900
commit4b11dc566a5bbfa1378d6266525c281b028abcc8 (patch)
treeb48831a898906734f8884d08b6e18f1144ee2b82 /src/pal/src/CMakeLists.txt
parentdb20f3f1bb8595633a7e16c8900fd401a453a6b5 (diff)
downloadcoreclr-4b11dc566a5bbfa1378d6266525c281b028abcc8.tar.gz
coreclr-4b11dc566a5bbfa1378d6266525c281b028abcc8.tar.bz2
coreclr-4b11dc566a5bbfa1378d6266525c281b028abcc8.zip
Imported Upstream version 1.0.0.9910upstream/1.0.0.9910
Diffstat (limited to 'src/pal/src/CMakeLists.txt')
-rw-r--r--src/pal/src/CMakeLists.txt111
1 files changed, 85 insertions, 26 deletions
diff --git a/src/pal/src/CMakeLists.txt b/src/pal/src/CMakeLists.txt
index 28ee83a77c..16c9d8bd6f 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
@@ -264,31 +281,73 @@ if(CMAKE_SYSTEM_NAME STREQUAL Linux)
find_library(UNWIND_ARCH NAMES unwind-arm)
endif()
+ if(PAL_CMAKE_PLATFORM_ARCH_ARM64)
+ find_library(UNWIND_ARCH NAMES unwind-aarch64)
+ endif()
+
if(PAL_CMAKE_PLATFORM_ARCH_AMD64)
find_library(UNWIND_ARCH NAMES unwind-x86_64)
endif()
- if(CLR_CMAKE_PLATFORM_ALPINE_LINUX)
+ if(CLR_CMAKE_PLATFORM_ALPINE_LINUX OR CLR_CMAKE_PLATFORM_ANDROID)
find_library(INTL intl)
endif()
- find_library(UNWIND NAMES unwind)
+ # On Android, we don't need to link with gcc_s, pthread and rt
+ if(NOT CLR_CMAKE_PLATFORM_ANDROID)
+ target_link_libraries(coreclrpal
+ gcc_s
+ pthread
+ rt
+ )
+ endif()
+
+ if(CLR_CMAKE_PLATFORM_ANDROID)
+ target_link_libraries(coreclrpal
+ gnustl_shared
+ android-support
+ android-glob)
+ endif()
+
+ if(NOT CLR_CMAKE_PLATFORM_ANDROID)
+ find_library(UNWIND NAMES unwind)
+
+ if(UNWIND STREQUAL UNWIND-NOTFOUND)
+ message(FATAL_ERROR "Cannot find libunwind. Try installing libunwind8-dev and libunwind8.")
+ endif(UNWIND STREQUAL UNWIND-NOTFOUND)
+
+ target_link_libraries(coreclrpal ${UNWIND})
+ endif()
+
+ if(CLR_MAKE_PLATFORM_ANDROID)
+ find_library(ANDROID_SUPPORT NAMES android-support)
+ find_library(ANDROID_GLOB NAMES android-glob)
+ find_library(INTL NAMES intl)
+
+ if(UNWIND_ARCH STREQUAL UNWIND_ARCH-NOTFOUND)
+ message(FATAL_ERROR "Cannot find libunwind.")
+ endif()
+
+ if(ANDROID_SUPPORT STREQUAL ANDROID_SUPPORT-NOTFOUND)
+ message(FATAL_ERROR "Cannot find android-support.")
+ endif()
+
+ if(ANDROID_GLOB STREQUAL ANDROID_GLOB-NOTFOUND)
+ message(FATAL_ERROR "Cannot find android-glob.")
+ endif()
+
+ if(INTL STREQUAL INTL-NOTFOUND)
+ message(FATAL_ERROR "Cannot find libintl.")
+ endif()
+ endif()
+
find_library(UNWIND_GENERIC NAMES unwind-generic)
target_link_libraries(coreclrpal
- gcc_s
- pthread
- rt
dl
uuid
)
- if(UNWIND STREQUAL UNWIND-NOTFOUND)
- message(FATAL_ERROR "Cannot find libunwind. Try installing libunwind8-dev and libunwind8.")
- endif(UNWIND STREQUAL UNWIND-NOTFOUND)
-
- target_link_libraries(coreclrpal ${UNWIND})
-
if(NOT UNWIND_GENERIC STREQUAL UNWIND_GENERIC-NOTFOUND)
target_link_libraries(coreclrpal ${UNWIND_GENERIC})
endif(NOT UNWIND_GENERIC STREQUAL UNWIND_GENERIC-NOTFOUND)