44 lines
1.9 KiB
Diff
44 lines
1.9 KiB
Diff
From 0f8ab3e42a4a052dec0e4b66c252fd83e8e5ba7c Mon Sep 17 00:00:00 2001
|
|
Date: Wed, 2 Dec 2020 18:33:48 +0530
|
|
Subject: [PATCH] [android] Put in fixes for librt and armv7-a
|
|
|
|
Android doesn't have a separate librt, it's just part of libc. Also, the static
|
|
build wasn't working for armv7-a, because the test executables wouldn't link
|
|
with the multiple definition errors listed in android/ndk#176, so use the
|
|
workaround given there.
|
|
|
|
diff --git a/swift-corelibs-libdispatch/CMakeLists.txt b/swift-corelibs-libdispatch/CMakeLists.txt
|
|
index 75c419c13..36da01122 100644
|
|
--- a/swift-corelibs-libdispatch/CMakeLists.txt
|
|
+++ b/swift-corelibs-libdispatch/CMakeLists.txt
|
|
@@ -113,7 +113,9 @@ if(__BUILTIN_TRAP)
|
|
set(HAVE_NORETURN_BUILTIN_TRAP 1)
|
|
endif()
|
|
|
|
-find_package(LibRT)
|
|
+if(NOT CMAKE_SYSTEM_NAME STREQUAL Android)
|
|
+ find_package(LibRT)
|
|
+endif()
|
|
|
|
check_function_exists(_pthread_workqueue_init HAVE__PTHREAD_WORKQUEUE_INIT)
|
|
check_function_exists(getprogname HAVE_GETPROGNAME)
|
|
diff --git a/swift-corelibs-libdispatch/tests/CMakeLists.txt b/swift-corelibs-libdispatch/tests/CMakeLists.txt
|
|
index a27603559..0176a062b 100644
|
|
--- a/swift-corelibs-libdispatch/tests/CMakeLists.txt
|
|
+++ b/swift-corelibs-libdispatch/tests/CMakeLists.txt
|
|
@@ -88,6 +88,14 @@ function(add_unit_test name)
|
|
target_compile_options(${name} PRIVATE -fblocks)
|
|
target_compile_options(${name} PRIVATE -Wall -Wno-deprecated-declarations)
|
|
endif()
|
|
+ # Without this flag, cross-compiling static test executables for Android armv7
|
|
+ # fails with the multiple definition errors seen in android/ndk#176, so I
|
|
+ # pulled in this workaround noted there. The tests build and run with this
|
|
+ # flag applied.
|
|
+ if(NOT BUILD_SHARED_LIBS AND CMAKE_SYSTEM_NAME STREQUAL Android AND
|
|
+ CMAKE_SYSTEM_PROCESSOR STREQUAL armv7-a)
|
|
+ target_link_options(${name} PRIVATE "LINKER:--allow-multiple-definition")
|
|
+ endif()
|
|
target_link_libraries(${name}
|
|
PRIVATE
|
|
dispatch
|