elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
set(HOST_LINUX 1)
add_definitions(-D_GNU_SOURCE -D_REENTRANT)
+elseif(CMAKE_SYSTEM_NAME STREQUAL "Android")
+ set(HOST_LINUX 1)
+ add_definitions(-D_GNU_SOURCE -D_REENTRANT)
+ # The normal check fails because it uses --isystem <ndk root>/sysroot/usr/include
+ set(HAVE_USR_INCLUDE_MALLOC_H 1)
+ set(HOST_ANDROID 1)
+ set(ANDROID_UNIFIED_HEADERS 1)
+ set(ENABLE_MONODROID 1)
+ set(DISABLE_EXECUTABLES 1)
+ set(GC_SUSPEND "hybrid")
+ add_definitions(-DNO_GLOBALIZATION_SHIM)
+ # Force some defines
+ set(HAVE_SCHED_GETAFFINITY 0)
+ set(HAVE_SCHED_SETAFFINITY 0)
+ set(MONO_DL_NEED_USCORE 1)
+ # FIXME: Rest of the flags from configure.ac
elseif(CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
set(HOST_WASM 1)
set(TARGET_ARCH "wasm")
set(TARGET_MACH 1)
set(TARGET_IOS 1)
elseif(TARGET_SYSTEM_NAME STREQUAL "Linux")
+elseif(TARGET_SYSTEM_NAME STREQUAL "Android")
+ set(TARGET_ANDROID 1)
elseif(TARGET_SYSTEM_NAME STREQUAL "Emscripten")
set(TARGET_WASM 1)
if (CMAKE_BUILD_TYPE STREQUAL "Release")
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
set(HOST_AMD64 1)
-elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86")
+elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "i686")
+ # i686 is used on android
set(HOST_X86 1)
-elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
+elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
set(HOST_ARM64 1)
-elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7s")
+elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
set(HOST_ARM 1)
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "wasm")
else()
if(TARGET_ARCH STREQUAL "x86_64")
set(TARGET_AMD64 1)
set(MONO_ARCHITECTURE "\"amd64\"")
-elseif(TARGET_ARCH STREQUAL "x86")
+elseif(TARGET_ARCH STREQUAL "x86" OR TARGET_ARCH STREQUAL "i686")
set(TARGET_X86 1)
set(MONO_ARCHITECTURE "\"x86\"")
-elseif(TARGET_ARCH STREQUAL "arm64")
+elseif(TARGET_ARCH STREQUAL "arm64" OR TARGET_ARCH STREQUAL "aarch64")
set(TARGET_ARM64 1)
set(MONO_ARCHITECTURE "\"arm64\"")
-elseif(TARGET_ARCH STREQUAL "arm" OR TARGET_ARCH STREQUAL "armv7s")
+elseif(TARGET_ARCH MATCHES "arm")
set(TARGET_ARM 1)
set(MONO_ARCHITECTURE "\"arm\"")
- if(TARGET_IOS)
+ # FIXME:
+ if(TARGET_IOS OR TARGET_ANDROID)
add_definitions("-DARM_FPU_VFP=1")
endif()
elseif(TARGET_ARCH STREQUAL "wasm")
set(ICU_LIBS "icucore")
elseif(TARGET_IOS)
# FIXME:
+elseif(TARGET_ANDROID)
+ # FIXME:
elseif(HOST_LINUX)
pkg_check_modules(ICU icu-uc)
set(ICU_FLAGS "-DTARGET_UNIX -DU_DISABLE_RENAMING -Wno-reserved-id-macro -Wno-documentation -Wno-documentation-unknown-command -Wno-switch-enum -Wno-covered-switch-default -Wno-extra-semi-stmt -Wno-unknown-warning-option -Wno-deprecated-declarations")
set(metadata_win32_sources
console-win32.c
- console-win32-internals.h
- cominterop-win32-internals.h
w32file-win32.c
- w32file-win32-internals.h
icall-windows.c
- icall-windows-internals.h
marshal-windows.c
- marshal-windows-internals.h
mono-security-windows.c
- mono-security-windows-internals.h
w32mutex-win32.c
w32semaphore-win32.c
w32event-win32.c
w32process-win32.c
- w32process-win32-internals.h
w32socket-win32.c
- w32error-win32.c
- w32subset.h)
+ w32error-win32.c)
set(metadata_unix_sources
console-unix.c
set_source_files_properties(../metadata/mono-config-dirs.c PROPERTIES COMPILE_DEFINITIONS "MONO_BINDIR=\"${bindir}\";MONO_ASSEMBLIES=\"${assembliesdir}\";MONO_CFG_DIR=\"${confdir}\";MONO_RELOC_LIBDIR=\"../${reloc_libdir}\"")
-addprefix(metadata_sources ../metadata/ "${metadata_platform_sources};${metadata_common_sources};${metadata_gc_dependent_sources};${metadata_sgen_sources};${ilgen_real_sources}")
+addprefix(metadata_sources ../metadata/ "${metadata_platform_sources};${metadata_common_sources};${metadata_gc_dependent_sources};${metadata_sgen_sources};${ilgen_sources}")
set(metadata_public_headers_base
appdomain.h