diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 78 |
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) |