summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt78
1 files changed, 61 insertions, 17 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 81fd930488..0539dc7dcc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -17,7 +17,18 @@ set(GENERATED_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/src/inc)
if(CMAKE_SYSTEM_NAME STREQUAL Linux)
set(CLR_CMAKE_PLATFORM_UNIX 1)
- set(CLR_CMAKE_PLATFORM_UNIX_TARGET_AMD64 1)
+ if(CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64)
+ set(CLR_CMAKE_PLATFORM_UNIX_TARGET_AMD64 1)
+ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL armv7l)
+ set(CLR_CMAKE_PLATFORM_UNIX_TARGET_ARM 1)
+ # Because we don't use CMAKE_C_COMPILER/CMAKE_CXX_COMPILER to use clang
+ # we have to set the triple by adding a compiler argument
+ add_compile_options(-target armv7-linux-gnueabihf)
+ add_compile_options(-mthumb)
+ add_compile_options(-mfpu=vfpv3)
+ else()
+ message(FATAL_ERROR "Only AMD64 and ARM supported")
+ endif()
set(CLR_CMAKE_PLATFORM_LINUX 1)
endif(CMAKE_SYSTEM_NAME STREQUAL Linux)
@@ -46,6 +57,14 @@ if(CMAKE_SYSTEM_NAME STREQUAL NetBSD)
set(CLR_CMAKE_PLATFORM_NETBSD 1)
endif(CMAKE_SYSTEM_NAME STREQUAL NetBSD)
+if(CLR_CMAKE_PLATFORM_UNIX_TARGET_ARM)
+ set(CLR_CMAKE_PLATFORM_ARCH_ARM 1)
+elseif(CLR_CMAKE_PLATFORM_UNIX_TARGET_AMD64)
+ set(CLR_CMAKE_PLATFORM_ARCH_AMD64 1)
+elseif(WIN32)
+ set(CLR_CMAKE_PLATFORM_ARCH_AMD64 1)
+endif()
+
if(WIN32)
enable_language(ASM_MASM)
else()
@@ -370,15 +389,22 @@ if (CLR_CMAKE_PLATFORM_UNIX)
if(IS_64BIT_BUILD)
add_definitions(-DBIT64=1)
- add_definitions(-DFEATURE_PAL)
- else (IS_64BIT_BUILD)
- message(FATAL_ERROR "error: Detected non x86_64 target processor. Not supported!")
endif(IS_64BIT_BUILD)
+ add_definitions(-DFEATURE_PAL)
+
if(CLR_CMAKE_PLATFORM_LINUX)
add_definitions(-D__LINUX__=1)
- message("Detected Linux x86_64")
- add_definitions(-DLINUX64)
+ if(CLR_CMAKE_PLATFORM_UNIX_TARGET_AMD64)
+ message("Detected Linux x86_64")
+ add_definitions(-DLINUX64)
+ elseif(CLR_CMAKE_PLATFORM_ARCH_ARM)
+ message("Detected Linux ARM")
+ add_definitions(-DLINUX32)
+ else()
+ message(FATAL_ERROR "Only AMD64 and ARM supported")
+ endif()
+
endif(CLR_CMAKE_PLATFORM_LINUX)
if(CLR_CMAKE_PLATFORM_DARWIN)
message("Detected OSX x86_64")
@@ -407,6 +433,12 @@ if (IS_64BIT_BUILD EQUAL 1)
endif (CLR_CMAKE_PLATFORM_UNIX_TARGET_AMD64)
add_definitions(-D_TARGET_AMD64_=1)
add_definitions(-DDBG_TARGET_AMD64)
+elseif (CLR_CMAKE_PLATFORM_ARCH_ARM)
+ if (CLR_CMAKE_PLATFORM_UNIX_TARGET_ARM)
+ add_definitions(-DDBG_TARGET_ARM_UNIX)
+ endif (CLR_CMAKE_PLATFORM_UNIX_TARGET_ARM)
+ add_definitions(-D_TARGET_ARM_=1)
+ add_definitions(-DDBG_TARGET_ARM)
else ()
# TODO: Support this
message(FATAL_ERROR "Not Implemented!")
@@ -428,7 +460,11 @@ add_definitions(-DFEATURE_APPDOMAIN_RESOURCE_MONITORING)
add_definitions(-DFEATURE_ARRAYSTUB_AS_IL)
if (CLR_CMAKE_PLATFORM_UNIX)
add_definitions(-DFEATURE_STUBS_AS_IL)
- add_definitions(-DUNIX_AMD64_ABI)
+ if (CLR_CMAKE_PLATFORM_UNIX_TARGET_AMD64)
+ add_definitions(-DUNIX_AMD64_ABI)
+ elseif (CLR_CMAKE_PLATFORM_UNIX_TARGET_ARM)
+ add_definitions(-DUNIX_ARM_ABI)
+ endif()
endif(CLR_CMAKE_PLATFORM_UNIX)
add_definitions(-DFEATURE_ASYNC_IO)
add_definitions(-DFEATURE_BCL_FORMATTING)
@@ -519,16 +555,20 @@ if(CLR_CMAKE_PLATFORM_UNIX)
add_definitions(-DFEATURE_DBGIPC_TRANSPORT_VM)
endif(CLR_CMAKE_PLATFORM_UNIX)
-if (IS_64BIT_BUILD EQUAL 1)
-add_definitions(-D_AMD64_)
-add_definitions(-D_AMD64_SIMULATOR_)
-add_definitions(-D_AMD64_SIMULATOR_PERF_)
-add_definitions(-D_AMD64_WORKAROUND_)
-add_definitions(-D_WIN64)
-add_definitions(-DAMD64)
+if (CLR_CMAKE_PLATFORM_ARCH_AMD64)
+ add_definitions(-D_AMD64_)
+ add_definitions(-D_AMD64_SIMULATOR_)
+ add_definitions(-D_AMD64_SIMULATOR_PERF_)
+ add_definitions(-D_AMD64_WORKAROUND_)
+ add_definitions(-D_WIN64)
+ add_definitions(-DAMD64)
+elseif (CLR_CMAKE_PLATFORM_ARCH_ARM)
+ add_definitions(-D_ARM_)
+ add_definitions(-DARM)
+ add_definitions(-D_WIN32)
else ()
-# TODO - Support this
-endif (IS_64BIT_BUILD EQUAL 1)
+ message(FATAL_ERROR "Only AMD64 and ARM supported")
+endif ()
add_definitions(-D_SKIP_IF_SIMULATOR_)
add_definitions(-D_SECURE_SCL=0)
@@ -542,7 +582,11 @@ add_definitions(-D_UNICODE)
if (IS_64BIT_BUILD EQUAL 1)
set(ARCH_SOURCES_DIR amd64)
else ()
- set(ARCH_SOURCES_DIR i386)
+ if (CLR_CMAKE_PLATFORM_ARCH_ARM)
+ set(ARCH_SOURCES_DIR arm)
+ else ()
+ set(ARCH_SOURCES_DIR i386)
+ endif ()
endif (IS_64BIT_BUILD EQUAL 1)
add_subdirectory(src)