diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d0f451240..434ebd14d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ ### Internals * Reverted the bfd linker override in the Linux-armv7 toolchain file because the upstream OpenSSL issue it was working around was resolved. +* Added CMake toolchain files for cross-compiling to Linux using the musl libc (PR [#7904](https://github.com/realm/realm-core/pull/7904)). ---------------------------------------------- diff --git a/tools/cmake/AcquireRealmDependency.cmake b/tools/cmake/AcquireRealmDependency.cmake index 0c395b61cb..42efa76d3d 100644 --- a/tools/cmake/AcquireRealmDependency.cmake +++ b/tools/cmake/AcquireRealmDependency.cmake @@ -1,4 +1,8 @@ function(realm_acquire_dependency dep_name dep_version out_dep_cmake) + if(NOT DEFINED REALM_LINUX_LIBC) + set(REALM_LINUX_LIBC gnu) + endif() + set(_target_architecture_Android_armeabi-v7a arm) set(_target_architecture_Android_arm64-v8a arm64) set(_target_architecture_Android_x86 x86) @@ -18,7 +22,7 @@ function(realm_acquire_dependency dep_name dep_version out_dep_cmake) set(_target_platform_name_Android android) set(_target_platform_name_Windows windows-static) set(_target_platform_name_WindowsStore uwp-static) - set(_target_platform_name_Linux linux-gnu) + set(_target_platform_name_Linux linux-${REALM_LINUX_LIBC}) if(ANDROID) set(_target_architecture ${CMAKE_ANDROID_ARCH_ABI}) diff --git a/tools/cmake/aarch64-linux-gnu.toolchain.cmake b/tools/cmake/aarch64-linux-gnu.toolchain.cmake index c86a4c3f31..5e389da6a5 100644 --- a/tools/cmake/aarch64-linux-gnu.toolchain.cmake +++ b/tools/cmake/aarch64-linux-gnu.toolchain.cmake @@ -1,3 +1,4 @@ set(_TRIPLET "aarch64-unknown-linux-gnu") set(_TOOLCHAIN_MD5 a3a14d87f98904c2558b43bbd310f337) include("${CMAKE_CURRENT_LIST_DIR}/linux.toolchain.base.cmake") +set(REALM_LINUX_LIBC gnu) diff --git a/tools/cmake/aarch64-linux-musl.toolchain.cmake b/tools/cmake/aarch64-linux-musl.toolchain.cmake new file mode 100644 index 0000000000..bce4fa1033 --- /dev/null +++ b/tools/cmake/aarch64-linux-musl.toolchain.cmake @@ -0,0 +1,4 @@ +set(_TRIPLET "aarch64-unknown-linux-musl") +set(_TOOLCHAIN_MD5 49df8ce5c6ba669d640cc9c096f1141e) +include("${CMAKE_CURRENT_LIST_DIR}/linux.toolchain.base.cmake") +set(REALM_LINUX_LIBC musl) diff --git a/tools/cmake/armv7-linux-gnueabihf.toolchain.cmake b/tools/cmake/armv7-linux-gnueabihf.toolchain.cmake index 423c44fdcd..67fa1e0711 100644 --- a/tools/cmake/armv7-linux-gnueabihf.toolchain.cmake +++ b/tools/cmake/armv7-linux-gnueabihf.toolchain.cmake @@ -1,3 +1,5 @@ set(_TRIPLET "armv7-unknown-linux-gnueabihf") set(_TOOLCHAIN_MD5 fbf817b1428bb35c93be8e6c15f73d7d) include("${CMAKE_CURRENT_LIST_DIR}/linux.toolchain.base.cmake") + +set(REALM_LINUX_LIBC gnu) diff --git a/tools/cmake/armv7-linux-musleabihf.toolchain.cmake b/tools/cmake/armv7-linux-musleabihf.toolchain.cmake new file mode 100644 index 0000000000..38c3f0336d --- /dev/null +++ b/tools/cmake/armv7-linux-musleabihf.toolchain.cmake @@ -0,0 +1,4 @@ +set(_TRIPLET "armv7-unknown-linux-musleabihf") +set(_TOOLCHAIN_MD5 e5df7301cf9138ef5cae6160878cab15) +include("${CMAKE_CURRENT_LIST_DIR}/linux.toolchain.base.cmake") +set(REALM_LINUX_LIBC musl) diff --git a/tools/cmake/x86_64-linux-gnu.toolchain.cmake b/tools/cmake/x86_64-linux-gnu.toolchain.cmake index 8fbdc46792..c8af384980 100644 --- a/tools/cmake/x86_64-linux-gnu.toolchain.cmake +++ b/tools/cmake/x86_64-linux-gnu.toolchain.cmake @@ -1,3 +1,4 @@ set(_TRIPLET "x86_64-unknown-linux-gnu") set(_TOOLCHAIN_MD5 aa99fc16d85adf1bb2f8b63b83542044) include("${CMAKE_CURRENT_LIST_DIR}/linux.toolchain.base.cmake") +set(REALM_LINUX_LIBC gnu) diff --git a/tools/cmake/x86_64-linux-musl.toolchain.cmake b/tools/cmake/x86_64-linux-musl.toolchain.cmake new file mode 100644 index 0000000000..9b9a85c8a9 --- /dev/null +++ b/tools/cmake/x86_64-linux-musl.toolchain.cmake @@ -0,0 +1,4 @@ +set(_TRIPLET "x86_64-unknown-linux-musl") +set(_TOOLCHAIN_MD5 8bc7f11a3bc58acaa50c557ac6867fd9) +include("${CMAKE_CURRENT_LIST_DIR}/linux.toolchain.base.cmake") +set(REALM_LINUX_LIBC musl)