Skip to content

Added build-android script which will build libdispatch for Android #302

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 30 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
5d25e42
INSTALL.md
amraboelela Sep 15, 2017
85af8ba
.gitignore
amraboelela Sep 15, 2017
317fd6a
Added build-android script which will build libdispatch for Android
amraboelela Sep 15, 2017
fb87e45
Cleanup
amraboelela Sep 15, 2017
21b095a
Fixed the toolchain path
amraboelela Sep 15, 2017
b13a600
build-android-cmake
amraboelela Sep 19, 2017
aefacdc
build-android .gitignore
amraboelela Sep 20, 2017
e42c509
Now using cmake
amraboelela Sep 20, 2017
be61e7f
Merge remote-tracking branch 'apple/master' into build-android
amraboelela Sep 20, 2017
8e0f338
Using build-script to build Dispatch.swiftmodule
amraboelela Sep 20, 2017
7360ab6
Merge remote-tracking branch 'apple/master' into build-android
amraboelela Sep 20, 2017
5fac806
Reverted my changes to go back to use autoconf
amraboelela Sep 20, 2017
2e905f8
Copying also swiftmodule,swiftdoc
amraboelela Sep 20, 2017
db94a73
Merge remote-tracking branch 'apple/master' into build-android
amraboelela Sep 27, 2017
e512e61
Merge remote-tracking branch 'origin/build-android' into build-android
amraboelela Sep 27, 2017
e0e0740
armv7
amraboelela Sep 27, 2017
24f1e9b
build-android hw_config.h
amraboelela Sep 27, 2017
ebfbb55
Merge branch 'build-android' of http://github.com/amraboelela/swift-c…
amraboelela Sep 27, 2017
1bdb62d
removed build-android-test
amraboelela Sep 27, 2017
68e0c47
Added build-android-cmake
amraboelela Sep 27, 2017
59bd341
cleanup
amraboelela Sep 27, 2017
dcdb947
API 22
amraboelela Sep 30, 2017
787ed99
build-android build-android-cmake
amraboelela Oct 6, 2017
41d47b8
Merge remote-tracking branch 'apple/master' into build-android
amraboelela Oct 6, 2017
f63dcbe
Changed the build path
amraboelela Oct 8, 2017
dfb892f
build-android
amraboelela Oct 10, 2017
7d59be2
build-android
amraboelela Oct 11, 2017
82c205a
Merge remote-tracking branch 'apple/master' into build-android
amraboelela Oct 12, 2017
c37e9ac
armv7
amraboelela Oct 15, 2017
38e6a8c
build-android-cmake
amraboelela Oct 16, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ Build
# build files generated by autotools
Makefile
Makefile.in
Makefilee
config.log
configure
aclocal.m4
Expand All @@ -31,3 +32,9 @@ libtool
.dirstamp
/dispatch/module.modulemap
/private/module.modulemap

*.cmake
CMakeCache.txt
CMakeFiles
*.so
*.a
13 changes: 13 additions & 0 deletions INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,3 +168,16 @@ to get the gold linker.
ninja install
```

### Building for Android

To build the Swift Android toolchain including libdispatch, run:

```
swift/utils/android$ ./build-toolchain
```

Which will call at the end:

```
swift-corelibs-libdispatch$ ./build-android
```
44 changes: 44 additions & 0 deletions build-android
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#!/usr/bin/env bash
#
# build-android
#
# This source file is part of the Swift.org open source project
#
# Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
# Licensed under Apache License v2.0 with Runtime Library Exception
#
# See https://swift.org/LICENSE.txt for license information
# See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors

set -e

cd "$(dirname $0)/.." || exit 1
SWIFT_PATH=$PWD

ANDROID_NDK_PATH="${ANDROID_NDK_PATH:?Please set the Android NDK path in the ANDROID_NDK_PATH environment variable}"
SWIFT_ANDROID_BUILD_PATH="${SWIFT_PATH}/build/Ninja-ReleaseAssert"
SWIFT_ANDROID_TOOLCHAIN_PATH="${SWIFT_PATH}/swift-android-toolchain"

cd ${SWIFT_PATH}/swift-corelibs-libdispatch
sh autogen.sh
env \
CC="$SWIFT_ANDROID_BUILD_PATH/llvm-linux-x86_64/bin/clang" \
CXX="$SWIFT_ANDROID_BUILD_PATH/llvm-linux-x86_64/bin/clang++" \
SWIFTC="$SWIFT_ANDROID_BUILD_PATH/swift-linux-x86_64/bin/swiftc" \
CFLAGS="-I$ANDROID_NDK_PATH/sysroot/usr/include" \
CPPFLAGS="-I$ANDROID_NDK_PATH/sysroot/usr/include -DTARGET_OS_EMBEDDED" \
./configure \
--with-swift-toolchain="$SWIFT_ANDROID_TOOLCHAIN_PATH/usr" \
--with-build-variant=release \
--enable-android \
--host=arm-linux-androideabi \
--with-android-ndk=$ANDROID_NDK_PATH \
--with-android-api-level=21 \
--disable-build-tests \
--prefix=$SWIFT_ANDROID_TOOLCHAIN_PATH/usr

make

cp ${SWIFT_PATH}/swift-corelibs-libdispatch/src/.libs/libdispatch.so $SWIFT_ANDROID_TOOLCHAIN_PATH/usr/lib/swift/android/armv7
cp ${SWIFT_PATH}/swift-corelibs-libdispatch/src/swift/Dispatch.{swiftmodule,swiftdoc} $SWIFT_ANDROID_TOOLCHAIN_PATH/usr/lib/swift/android/armv7

41 changes: 41 additions & 0 deletions build-android-cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#!/usr/bin/env bash
#
# build-android
#
# This source file is part of the Swift.org open source project
#
# Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
# Licensed under Apache License v2.0 with Runtime Library Exception
#
# See https://swift.org/LICENSE.txt for license information
# See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors

set -e

cd "$(dirname $0)/.." || exit 1
SWIFT_PATH=$PWD

ANDROID_NDK_PATH="${ANDROID_NDK_PATH:?Please set the Android NDK path in the ANDROID_NDK_PATH environment variable}"
SWIFT_ANDROID_BUILD_PATH="${SWIFT_PATH}/build/Ninja-ReleaseAssert"
SWIFT_ANDROID_TOOLCHAIN_PATH="${SWIFT_PATH}/swift-android-toolchain"

cd ${SWIFT_PATH}/swift-corelibs-libdispatch

cmake \
-DBUILD_SHARED_LIBS=OFF \
-DENABLE_TESTING=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_SYSTEM_NAME=Android \
-DCMAKE_SYSTEM_VERSION=21 \
-DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a \
-DCMAKE_ANDROID_NDK=$ANDROID_NDK_PATH \
-DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=$SWIFT_ANDROID_BUILD_PATH/llvm-linux-x86_64/bin/clang \
-DCMAKE_CXX_COMPILER=$SWIFT_ANDROID_BUILD_PATH/llvm-linux-x86_64/bin/clang++ \
-DCMAKE_SWIFT_COMPILER=$SWIFT_ANDROID_BUILD_PATH/swift-linux-x86_64/bin/swiftc \
-DENABLE_SWIFT=YES

make

cp ${SWIFT_PATH}/swift-corelibs-libdispatch/src/.libs/libdispatch.so $SWIFT_ANDROID_TOOLCHAIN_PATH/usr/lib/swift/android/armv7
cp ${SWIFT_PATH}/swift-corelibs-libdispatch/src/swift/Dispatch.{swiftmodule,swiftdoc} $SWIFT_ANDROID_TOOLCHAIN_PATH/usr/lib/swift/android/armv7

2 changes: 2 additions & 0 deletions os/linux_base.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,11 @@
#ifndef __OS_LINUX_BASE__
#define __OS_LINUX_BASE__

#ifndef __ANDROID__
#if __has_include(<sys/sysmacros.h>)
#include <sys/sysmacros.h>
#endif
#endif
#include <sys/param.h>

#if __has_include(<sys/cdefs.h>)
Expand Down
2 changes: 1 addition & 1 deletion src/shims/hw_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ _dispatch_hw_get_config(_dispatch_hw_config_t c)
return (uint32_t)sysconf(_SC_NPROCESSORS_CONF);
case _dispatch_hw_config_active_cpus:
{
#ifdef __USE_GNU
#if defined(__USE_GNU) && !defined(__ANDROID__)
// Prefer pthread_getaffinity_np because it considers
// scheduler cpu affinity. This matters if the program
// is restricted to a subset of the online cpus (eg via numactl).
Expand Down