summaryrefslogtreecommitdiff
path: root/cross
diff options
context:
space:
mode:
authorBen Pye <ben@curlybracket.co.uk>2015-08-04 18:10:46 +0100
committerBen Pye <ben@curlybracket.co.uk>2015-08-04 18:10:46 +0100
commit265435623d576d8fb690de658e5b744916e77d65 (patch)
tree038748a83c687a5d6001d3634ddb80e476ef36f3 /cross
parent39cedddd401c7e02ef70384fcb01a982b0344ee8 (diff)
downloadcoreclr-265435623d576d8fb690de658e5b744916e77d65.tar.gz
coreclr-265435623d576d8fb690de658e5b744916e77d65.tar.bz2
coreclr-265435623d576d8fb690de658e5b744916e77d65.zip
Add cross compilation support for ARM and ARM64.
Diffstat (limited to 'cross')
-rw-r--r--cross/.gitmirror1
-rw-r--r--cross/arm/.gitmirror1
-rw-r--r--cross/arm/sources.list11
-rw-r--r--cross/arm/toolchain.cmake28
-rw-r--r--cross/arm/tryrun.cmake464
-rw-r--r--cross/arm64/.gitmirror1
-rw-r--r--cross/arm64/sources.list11
-rw-r--r--cross/arm64/toolchain.cmake23
-rw-r--r--cross/arm64/tryrun.cmake464
-rwxr-xr-xcross/build-rootfs.sh86
10 files changed, 1090 insertions, 0 deletions
diff --git a/cross/.gitmirror b/cross/.gitmirror
new file mode 100644
index 0000000000..f507630f94
--- /dev/null
+++ b/cross/.gitmirror
@@ -0,0 +1 @@
+Only contents of this folder, excluding subfolders, will be mirrored by the Git-TFS Mirror. \ No newline at end of file
diff --git a/cross/arm/.gitmirror b/cross/arm/.gitmirror
new file mode 100644
index 0000000000..f507630f94
--- /dev/null
+++ b/cross/arm/.gitmirror
@@ -0,0 +1 @@
+Only contents of this folder, excluding subfolders, will be mirrored by the Git-TFS Mirror. \ No newline at end of file
diff --git a/cross/arm/sources.list b/cross/arm/sources.list
new file mode 100644
index 0000000000..07d8f88d82
--- /dev/null
+++ b/cross/arm/sources.list
@@ -0,0 +1,11 @@
+deb http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted
+deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted
+
+deb http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse
+deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse \ No newline at end of file
diff --git a/cross/arm/toolchain.cmake b/cross/arm/toolchain.cmake
new file mode 100644
index 0000000000..35611cc50d
--- /dev/null
+++ b/cross/arm/toolchain.cmake
@@ -0,0 +1,28 @@
+set(CROSS_ROOTFS $ENV{ROOTFS_DIR})
+
+set(CMAKE_SYSTEM_NAME Linux)
+set(CMAKE_SYSTEM_VERSION 1)
+set(CMAKE_SYSTEM_PROCESSOR armv7l)
+
+add_compile_options(-target armv7-linux-gnueabihf)
+add_compile_options(-mthumb)
+add_compile_options(-mfpu=vfpv3)
+add_compile_options(--sysroot=${CROSS_ROOTFS})
+
+set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -target arm-linux-gnueabihf")
+set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -B ${CROSS_ROOTFS}/usr/lib/gcc/arm-linux-gnueabihf")
+set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -L${CROSS_ROOTFS}/lib/arm-linux-gnueabihf")
+set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} --sysroot=${CROSS_ROOTFS}")
+
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
+set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
+set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
+
+set(CMAKE_FIND_ROOT_PATH "${CROSS_ROOTFS}")
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
+
+set(WITH_LLDB_LIBS "${CROSS_ROOTFS}/usr/lib/arm-linux-gnueabihf" CACHE STRING "")
+set(WITH_LLDB_INCLUDES "${CROSS_ROOTFS}/usr/lib/llvm-3.6/include" CACHE STRING "") \ No newline at end of file
diff --git a/cross/arm/tryrun.cmake b/cross/arm/tryrun.cmake
new file mode 100644
index 0000000000..a5db1a855e
--- /dev/null
+++ b/cross/arm/tryrun.cmake
@@ -0,0 +1,464 @@
+# This file was generated by CMake because it detected TRY_RUN() commands
+# in crosscompiling mode. It will be overwritten by the next CMake run.
+# Copy it to a safe location, set the variables to appropriate values
+# and use it then to preset the CMake cache (using -C).
+
+
+# REALPATH_SUPPORTS_NONEXISTENT_FILES_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set REALPATH_SUPPORTS_NONEXISTENT_FILES_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The REALPATH_SUPPORTS_NONEXISTENT_FILES_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec3049923556-REALPATH_SUPPORTS_NONEXISTENT_FILES_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( REALPATH_SUPPORTS_NONEXISTENT_FILES_EXITCODE
+ 1
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# SSCANF_SUPPORT_ll_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set SSCANF_SUPPORT_ll_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The SSCANF_SUPPORT_ll_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec545135579-SSCANF_SUPPORT_ll_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( SSCANF_SUPPORT_ll_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# SSCANF_CANNOT_HANDLE_MISSING_EXPONENT_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set SSCANF_CANNOT_HANDLE_MISSING_EXPONENT_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The SSCANF_CANNOT_HANDLE_MISSING_EXPONENT_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec2916927315-SSCANF_CANNOT_HANDLE_MISSING_EXPONENT_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( SSCANF_CANNOT_HANDLE_MISSING_EXPONENT_EXITCODE
+ 1
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_LARGE_SNPRINTF_SUPPORT_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_LARGE_SNPRINTF_SUPPORT_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_LARGE_SNPRINTF_SUPPORT_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec3604180903-HAVE_LARGE_SNPRINTF_SUPPORT_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_LARGE_SNPRINTF_SUPPORT_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_SCHED_GET_PRIORITY_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_SCHED_GET_PRIORITY_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_SCHED_GET_PRIORITY_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec1705323844-HAVE_SCHED_GET_PRIORITY_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_SCHED_GET_PRIORITY_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_WORKING_GETTIMEOFDAY_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_WORKING_GETTIMEOFDAY_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_WORKING_GETTIMEOFDAY_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec3288570442-HAVE_WORKING_GETTIMEOFDAY_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_WORKING_GETTIMEOFDAY_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_WORKING_CLOCK_GETTIME_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_WORKING_CLOCK_GETTIME_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_WORKING_CLOCK_GETTIME_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec2946563273-HAVE_WORKING_CLOCK_GETTIME_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_WORKING_CLOCK_GETTIME_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_CLOCK_MONOTONIC_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_CLOCK_MONOTONIC_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_CLOCK_MONOTONIC_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec535773769-HAVE_CLOCK_MONOTONIC_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_CLOCK_MONOTONIC_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_MMAP_DEV_ZERO_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_MMAP_DEV_ZERO_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_MMAP_DEV_ZERO_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec3664485497-HAVE_MMAP_DEV_ZERO_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_MMAP_DEV_ZERO_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# MMAP_IGNORES_HINT_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set MMAP_IGNORES_HINT_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The MMAP_IGNORES_HINT_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec3697298670-MMAP_IGNORES_HINT_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( MMAP_IGNORES_HINT_EXITCODE
+ 1
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# MMAP_DOESNOT_ALLOW_REMAP_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set MMAP_DOESNOT_ALLOW_REMAP_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The MMAP_DOESNOT_ALLOW_REMAP_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec1910471565-MMAP_DOESNOT_ALLOW_REMAP_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( MMAP_DOESNOT_ALLOW_REMAP_EXITCODE
+ 1
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# ONE_SHARED_MAPPING_PER_FILEREGION_PER_PROCESS_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set ONE_SHARED_MAPPING_PER_FILEREGION_PER_PROCESS_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The ONE_SHARED_MAPPING_PER_FILEREGION_PER_PROCESS_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec1485391791-ONE_SHARED_MAPPING_PER_FILEREGION_PER_PROCESS_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( ONE_SHARED_MAPPING_PER_FILEREGION_PER_PROCESS_EXITCODE
+ 1
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# PTHREAD_CREATE_MODIFIES_ERRNO_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set PTHREAD_CREATE_MODIFIES_ERRNO_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The PTHREAD_CREATE_MODIFIES_ERRNO_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec1946953793-PTHREAD_CREATE_MODIFIES_ERRNO_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( PTHREAD_CREATE_MODIFIES_ERRNO_EXITCODE
+ 1
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# SEM_INIT_MODIFIES_ERRNO_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set SEM_INIT_MODIFIES_ERRNO_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The SEM_INIT_MODIFIES_ERRNO_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec127860255-SEM_INIT_MODIFIES_ERRNO_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( SEM_INIT_MODIFIES_ERRNO_EXITCODE
+ 1
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_COMPATIBLE_ACOS_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_COMPATIBLE_ACOS_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_COMPATIBLE_ACOS_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec1211597152-HAVE_COMPATIBLE_ACOS_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_COMPATIBLE_ACOS_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_COMPATIBLE_ASIN_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_COMPATIBLE_ASIN_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_COMPATIBLE_ASIN_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec2689505149-HAVE_COMPATIBLE_ASIN_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_COMPATIBLE_ASIN_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_COMPATIBLE_POW_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_COMPATIBLE_POW_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_COMPATIBLE_POW_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec1907744111-HAVE_COMPATIBLE_POW_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_COMPATIBLE_POW_EXITCODE
+ 1
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_VALID_NEGATIVE_INF_POW_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_VALID_NEGATIVE_INF_POW_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_VALID_NEGATIVE_INF_POW_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec3901873657-HAVE_VALID_NEGATIVE_INF_POW_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_VALID_NEGATIVE_INF_POW_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_VALID_POSITIVE_INF_POW_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_VALID_POSITIVE_INF_POW_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_VALID_POSITIVE_INF_POW_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec1206992192-HAVE_VALID_POSITIVE_INF_POW_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_VALID_POSITIVE_INF_POW_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_COMPATIBLE_ATAN2_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_COMPATIBLE_ATAN2_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_COMPATIBLE_ATAN2_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec648637395-HAVE_COMPATIBLE_ATAN2_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_COMPATIBLE_ATAN2_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_COMPATIBLE_LOG_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_COMPATIBLE_LOG_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_COMPATIBLE_LOG_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec2990610624-HAVE_COMPATIBLE_LOG_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_COMPATIBLE_LOG_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_COMPATIBLE_LOG10_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_COMPATIBLE_LOG10_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_COMPATIBLE_LOG10_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec975099261-HAVE_COMPATIBLE_LOG10_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_COMPATIBLE_LOG10_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# UNGETC_NOT_RETURN_EOF_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set UNGETC_NOT_RETURN_EOF_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The UNGETC_NOT_RETURN_EOF_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec441257029-UNGETC_NOT_RETURN_EOF_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( UNGETC_NOT_RETURN_EOF_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# MALLOC_ZERO_RETURNS_NULL_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set MALLOC_ZERO_RETURNS_NULL_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The MALLOC_ZERO_RETURNS_NULL_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec1157477542-MALLOC_ZERO_RETURNS_NULL_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( MALLOC_ZERO_RETURNS_NULL_EXITCODE
+ 1
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAS_POSIX_SEMAPHORES_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAS_POSIX_SEMAPHORES_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAS_POSIX_SEMAPHORES_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec1492096424-HAS_POSIX_SEMAPHORES_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAS_POSIX_SEMAPHORES_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# GETPWUID_R_SETS_ERRNO_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set GETPWUID_R_SETS_ERRNO_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The GETPWUID_R_SETS_ERRNO_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec3233045492-GETPWUID_R_SETS_ERRNO_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( GETPWUID_R_SETS_ERRNO_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# FILE_OPS_CHECK_FERROR_OF_PREVIOUS_CALL_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set FILE_OPS_CHECK_FERROR_OF_PREVIOUS_CALL_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The FILE_OPS_CHECK_FERROR_OF_PREVIOUS_CALL_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec3756892084-FILE_OPS_CHECK_FERROR_OF_PREVIOUS_CALL_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( FILE_OPS_CHECK_FERROR_OF_PREVIOUS_CALL_EXITCODE
+ 1
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
diff --git a/cross/arm64/.gitmirror b/cross/arm64/.gitmirror
new file mode 100644
index 0000000000..f507630f94
--- /dev/null
+++ b/cross/arm64/.gitmirror
@@ -0,0 +1 @@
+Only contents of this folder, excluding subfolders, will be mirrored by the Git-TFS Mirror. \ No newline at end of file
diff --git a/cross/arm64/sources.list b/cross/arm64/sources.list
new file mode 100644
index 0000000000..07d8f88d82
--- /dev/null
+++ b/cross/arm64/sources.list
@@ -0,0 +1,11 @@
+deb http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted
+deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted
+
+deb http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse
+deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse \ No newline at end of file
diff --git a/cross/arm64/toolchain.cmake b/cross/arm64/toolchain.cmake
new file mode 100644
index 0000000000..cb92340f1b
--- /dev/null
+++ b/cross/arm64/toolchain.cmake
@@ -0,0 +1,23 @@
+set(CROSS_ROOTFS $ENV{ROOTFS_DIR})
+
+set(CMAKE_SYSTEM_NAME Linux)
+set(CMAKE_SYSTEM_VERSION 1)
+set(CMAKE_SYSTEM_PROCESSOR aarch64)
+
+add_compile_options(-target aarch64-linux-gnu)
+add_compile_options(--sysroot=${CROSS_ROOTFS})
+
+set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -target aarch64-linux-gnu")
+set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -B ${CROSS_ROOTFS}/usr/lib/gcc/aarch64-linux-gnu")
+set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -L${CROSS_ROOTFS}/lib/aarch64-linux-gnu")
+set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} --sysroot=${CROSS_ROOTFS}")
+
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
+set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
+set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
+
+set(CMAKE_FIND_ROOT_PATH "${CROSS_ROOTFS}")
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) \ No newline at end of file
diff --git a/cross/arm64/tryrun.cmake b/cross/arm64/tryrun.cmake
new file mode 100644
index 0000000000..a5db1a855e
--- /dev/null
+++ b/cross/arm64/tryrun.cmake
@@ -0,0 +1,464 @@
+# This file was generated by CMake because it detected TRY_RUN() commands
+# in crosscompiling mode. It will be overwritten by the next CMake run.
+# Copy it to a safe location, set the variables to appropriate values
+# and use it then to preset the CMake cache (using -C).
+
+
+# REALPATH_SUPPORTS_NONEXISTENT_FILES_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set REALPATH_SUPPORTS_NONEXISTENT_FILES_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The REALPATH_SUPPORTS_NONEXISTENT_FILES_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec3049923556-REALPATH_SUPPORTS_NONEXISTENT_FILES_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( REALPATH_SUPPORTS_NONEXISTENT_FILES_EXITCODE
+ 1
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# SSCANF_SUPPORT_ll_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set SSCANF_SUPPORT_ll_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The SSCANF_SUPPORT_ll_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec545135579-SSCANF_SUPPORT_ll_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( SSCANF_SUPPORT_ll_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# SSCANF_CANNOT_HANDLE_MISSING_EXPONENT_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set SSCANF_CANNOT_HANDLE_MISSING_EXPONENT_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The SSCANF_CANNOT_HANDLE_MISSING_EXPONENT_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec2916927315-SSCANF_CANNOT_HANDLE_MISSING_EXPONENT_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( SSCANF_CANNOT_HANDLE_MISSING_EXPONENT_EXITCODE
+ 1
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_LARGE_SNPRINTF_SUPPORT_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_LARGE_SNPRINTF_SUPPORT_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_LARGE_SNPRINTF_SUPPORT_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec3604180903-HAVE_LARGE_SNPRINTF_SUPPORT_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_LARGE_SNPRINTF_SUPPORT_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_SCHED_GET_PRIORITY_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_SCHED_GET_PRIORITY_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_SCHED_GET_PRIORITY_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec1705323844-HAVE_SCHED_GET_PRIORITY_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_SCHED_GET_PRIORITY_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_WORKING_GETTIMEOFDAY_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_WORKING_GETTIMEOFDAY_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_WORKING_GETTIMEOFDAY_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec3288570442-HAVE_WORKING_GETTIMEOFDAY_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_WORKING_GETTIMEOFDAY_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_WORKING_CLOCK_GETTIME_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_WORKING_CLOCK_GETTIME_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_WORKING_CLOCK_GETTIME_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec2946563273-HAVE_WORKING_CLOCK_GETTIME_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_WORKING_CLOCK_GETTIME_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_CLOCK_MONOTONIC_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_CLOCK_MONOTONIC_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_CLOCK_MONOTONIC_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec535773769-HAVE_CLOCK_MONOTONIC_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_CLOCK_MONOTONIC_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_MMAP_DEV_ZERO_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_MMAP_DEV_ZERO_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_MMAP_DEV_ZERO_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec3664485497-HAVE_MMAP_DEV_ZERO_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_MMAP_DEV_ZERO_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# MMAP_IGNORES_HINT_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set MMAP_IGNORES_HINT_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The MMAP_IGNORES_HINT_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec3697298670-MMAP_IGNORES_HINT_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( MMAP_IGNORES_HINT_EXITCODE
+ 1
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# MMAP_DOESNOT_ALLOW_REMAP_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set MMAP_DOESNOT_ALLOW_REMAP_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The MMAP_DOESNOT_ALLOW_REMAP_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec1910471565-MMAP_DOESNOT_ALLOW_REMAP_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( MMAP_DOESNOT_ALLOW_REMAP_EXITCODE
+ 1
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# ONE_SHARED_MAPPING_PER_FILEREGION_PER_PROCESS_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set ONE_SHARED_MAPPING_PER_FILEREGION_PER_PROCESS_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The ONE_SHARED_MAPPING_PER_FILEREGION_PER_PROCESS_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec1485391791-ONE_SHARED_MAPPING_PER_FILEREGION_PER_PROCESS_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( ONE_SHARED_MAPPING_PER_FILEREGION_PER_PROCESS_EXITCODE
+ 1
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# PTHREAD_CREATE_MODIFIES_ERRNO_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set PTHREAD_CREATE_MODIFIES_ERRNO_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The PTHREAD_CREATE_MODIFIES_ERRNO_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec1946953793-PTHREAD_CREATE_MODIFIES_ERRNO_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( PTHREAD_CREATE_MODIFIES_ERRNO_EXITCODE
+ 1
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# SEM_INIT_MODIFIES_ERRNO_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set SEM_INIT_MODIFIES_ERRNO_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The SEM_INIT_MODIFIES_ERRNO_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec127860255-SEM_INIT_MODIFIES_ERRNO_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( SEM_INIT_MODIFIES_ERRNO_EXITCODE
+ 1
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_COMPATIBLE_ACOS_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_COMPATIBLE_ACOS_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_COMPATIBLE_ACOS_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec1211597152-HAVE_COMPATIBLE_ACOS_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_COMPATIBLE_ACOS_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_COMPATIBLE_ASIN_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_COMPATIBLE_ASIN_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_COMPATIBLE_ASIN_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec2689505149-HAVE_COMPATIBLE_ASIN_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_COMPATIBLE_ASIN_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_COMPATIBLE_POW_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_COMPATIBLE_POW_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_COMPATIBLE_POW_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec1907744111-HAVE_COMPATIBLE_POW_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_COMPATIBLE_POW_EXITCODE
+ 1
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_VALID_NEGATIVE_INF_POW_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_VALID_NEGATIVE_INF_POW_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_VALID_NEGATIVE_INF_POW_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec3901873657-HAVE_VALID_NEGATIVE_INF_POW_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_VALID_NEGATIVE_INF_POW_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_VALID_POSITIVE_INF_POW_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_VALID_POSITIVE_INF_POW_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_VALID_POSITIVE_INF_POW_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec1206992192-HAVE_VALID_POSITIVE_INF_POW_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_VALID_POSITIVE_INF_POW_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_COMPATIBLE_ATAN2_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_COMPATIBLE_ATAN2_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_COMPATIBLE_ATAN2_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec648637395-HAVE_COMPATIBLE_ATAN2_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_COMPATIBLE_ATAN2_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_COMPATIBLE_LOG_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_COMPATIBLE_LOG_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_COMPATIBLE_LOG_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec2990610624-HAVE_COMPATIBLE_LOG_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_COMPATIBLE_LOG_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAVE_COMPATIBLE_LOG10_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAVE_COMPATIBLE_LOG10_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAVE_COMPATIBLE_LOG10_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec975099261-HAVE_COMPATIBLE_LOG10_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAVE_COMPATIBLE_LOG10_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# UNGETC_NOT_RETURN_EOF_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set UNGETC_NOT_RETURN_EOF_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The UNGETC_NOT_RETURN_EOF_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec441257029-UNGETC_NOT_RETURN_EOF_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( UNGETC_NOT_RETURN_EOF_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# MALLOC_ZERO_RETURNS_NULL_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set MALLOC_ZERO_RETURNS_NULL_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The MALLOC_ZERO_RETURNS_NULL_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec1157477542-MALLOC_ZERO_RETURNS_NULL_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( MALLOC_ZERO_RETURNS_NULL_EXITCODE
+ 1
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# HAS_POSIX_SEMAPHORES_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set HAS_POSIX_SEMAPHORES_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The HAS_POSIX_SEMAPHORES_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec1492096424-HAS_POSIX_SEMAPHORES_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( HAS_POSIX_SEMAPHORES_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# GETPWUID_R_SETS_ERRNO_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set GETPWUID_R_SETS_ERRNO_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The GETPWUID_R_SETS_ERRNO_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec3233045492-GETPWUID_R_SETS_ERRNO_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( GETPWUID_R_SETS_ERRNO_EXITCODE
+ 0
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
+
+# FILE_OPS_CHECK_FERROR_OF_PREVIOUS_CALL_EXITCODE
+# indicates whether the executable would have been able to run on its
+# target platform. If so, set FILE_OPS_CHECK_FERROR_OF_PREVIOUS_CALL_EXITCODE to
+# the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
+# The FILE_OPS_CHECK_FERROR_OF_PREVIOUS_CALL_COMPILED variable holds the build result for this TRY_RUN().
+#
+# Source file : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/CMakeTmp/src.cxx
+# Executable : /home/ben/git/coreclr/bin/obj/Linux.arm.Debug/CMakeFiles/cmTryCompileExec3756892084-FILE_OPS_CHECK_FERROR_OF_PREVIOUS_CALL_EXITCODE
+# Run arguments :
+# Called from: [2] /home/ben/git/coreclr/src/pal/src/configure.cmake
+# [1] /home/ben/git/coreclr/src/pal/src/CMakeLists.txt
+
+SET( FILE_OPS_CHECK_FERROR_OF_PREVIOUS_CALL_EXITCODE
+ 1
+ CACHE STRING "Result from TRY_RUN" FORCE)
+
diff --git a/cross/build-rootfs.sh b/cross/build-rootfs.sh
new file mode 100755
index 0000000000..c070b2a449
--- /dev/null
+++ b/cross/build-rootfs.sh
@@ -0,0 +1,86 @@
+#!/usr/bin/env bash
+
+usage()
+{
+ echo "Usage: $0 [BuildArch]"
+ echo "BuildArch can be: arm, arm64"
+
+ exit 1
+}
+
+fix_symlinks()
+{
+ echo "Adjusting the symlinks in $1 to be relative"
+ cd $1
+ find . -maxdepth 1 -type l | while read i
+ do qualifies=$(file $i | sed -e "s/.*\`\(.*\)'/\1/g" | grep ^/lib)
+ if [ -n "$qualifies" ]; then
+ newPath=$(file $i | sed -e "s/.*\`\(.*\)'/\1/g" | sed -e "s,\`,,g" | sed -e "s,',,g" | sed -e "s,^/lib,$2/lib,g")
+ echo $i
+ echo $newPath
+ sudo rm $i
+ sudo ln -s $newPath $i
+ fi
+ done
+ cd $__InitialDir
+}
+
+__CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+__InitialDir=$PWD
+__BuildArch=arm
+__UbuntuArch=armhf
+__UbuntuRepo="http://ports.ubuntu.com/"
+__UbuntuPackages="build-essential lldb-3.6-dev libunwind8-dev gettext"
+__MachineTriple=arm-linux-gnueabihf
+__UnprocessedBuildArgs=
+for i in "$@"
+ do
+ lowerI="$(echo $i | awk '{print tolower($0)}')"
+ case $lowerI in
+ -?|-h|--help)
+ usage
+ exit 1
+ ;;
+ arm)
+ __BuildArch=arm
+ __UbuntuArch=armhf
+ __UbuntuRepo="http://ports.ubuntu.com/"
+ __UbuntuPackages="build-essential lldb-3.6-dev libunwind8-dev gettext"
+ __MachineTriple=arm-linux-gnueabihf
+ ;;
+ arm64)
+ __BuildArch=arm64
+ __UbuntuArch=arm64
+ __UbuntuRepo="http://ports.ubuntu.com/"
+ __UbuntuPackages="build-essential libunwind8-dev gettext"
+ __MachineTriple=aarch64-linux-gnu
+ ;;
+ *)
+ __UnprocessedBuildArgs="$__UnprocessedBuildArgs $i"
+ esac
+done
+
+__RootfsDir="$__CrossDir/rootfs/$__BuildArch"
+
+if [[ -n "$ROOTFS_DIR" ]]; then
+ __RootfsDir=$ROOTFS_DIR
+fi
+
+__RootfsDirMultiArchDir=$__RootfsDir/usr/lib/$__MachineTriple
+# On ARM64 libgcc_s.so is a symlink to /lib/ so we need to correct that too
+__RootfsDirGCCMultiArchDir=$__RootfsDir/usr/lib/gcc/$__MachineTriple/4.8
+
+umount $__RootfsDir/*
+rm -rf $__RootfsDir
+qemu-debootstrap --arch $__UbuntuArch trusty $__RootfsDir $__UbuntuRepo
+cp $__CrossDir/$__BuildArch/sources.list $__RootfsDir/etc/apt/sources.list
+chroot $__RootfsDir apt-get update
+chroot $__RootfsDir apt-get -y install $__UbuntuPackages
+umount $__RootfsDir/*
+fix_symlinks $__RootfsDir/usr/lib "../.."
+if [ -d "$__RootfsDirMultiArchDir" ]; then
+ fix_symlinks $__RootfsDirMultiArchDir "../../.."
+fi
+if [ -d "$__RootfsDirGCCMultiArchDir" ]; then
+ fix_symlinks $__RootfsDirGCCMultiArchDir "../../../../.."
+fi \ No newline at end of file