Closed fusuiyi123 closed 4 years ago
Please ping me when the PR will be ready for review.
Hi @gavv the android build fails with build.log and from the libuv supporting platform, https://github.com/libuv/libuv/blob/a62f8ced7af51d1c4fd8abceb521bd24f362ab14/SUPPORTED_PLATFORMS.md, this may not be actively supported
Could you please run our rocproject/cross-aarch64-linux-android:api28
docker container and try build libuv manually inside it?
They have some specific build instructions for android: https://github.com/libuv/libuv/tree/master#android. Probably it will solve the issue.
They also have cmake build. Theoretically it also may help.
And they also have gyp + ninja build... https://github.com/libuv/libuv/tree/master#using-ninja
If non of these helps, could you then try to build different libuv versions and find out which is the latest version the builds correctly?
source ./android-configure-arm64 NDK_PATH gyp [API_LEVEL]
worked
root@951ba020b0df:/Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0# source ./android-configure-arm64 /tmp/android-ndk-r18/ gyp 28
HOST_OS=linux
HOST_EXE=
HOST_ARCH=x86_64
HOST_TAG=linux-x86_64
HOST_NUM_CPUS=2
BUILD_NUM_CPUS=4
Toolchain installed to /Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0/android-toolchain-arm64.
['-Dtarget_arch=arm64', '-DOS=android', '-f', 'make-android', '-I', 'common.gypi', 'test/test.gyp', '--depth=.', '-Goutput_dir=/Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0/out', '--generator-output', '/Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0/out', '-Dhost_arch=x64', '-Duv_library=static_library']
make -C out
fails with
root@951ba020b0df:/Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0# make -C out
make: Entering directory `/Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0/out'
CC(target) /Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0/out/Debug/obj.target/libuv/src/fs-poll.o
/Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0/android-toolchain-arm64/bin/aarch64-linux-android-gcc: line 2: /Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0/android-toolchain-arm64/bin/../../../../llvm/prebuilt/linux-x86_64/bin/clang: No such file or directory
make: *** [/Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0/out/Debug/obj.target/libuv/src/fs-poll.o] Error 127
make: Leaving directory `/Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0/out'
where cat android-toolchain-arm64/bin/aarch64-linux-android-gcc
gives #!/bin/bash exec
dirname $0/../../../../llvm/prebuilt/linux-x86_64/bin/clang -target aarch64-linux-android "$@"
.
Still looking at it.
make -C out fails with
Did you run it inside rocproject/cross-aarch64-linux-android:api28
docker container? The command output looks like it was running on macOS :/
yes, it is in docker container mounted from pwd
libuv 1.33.1 build succeed, project build fails though :/
AR build/aarch64-linux-android/clang-7.0.2-release/libroc_core.a
645 RANLIB build/aarch64-linux-android/clang-7.0.2-release/libroc_core.a
646 LD build/aarch64-linux-android/clang-7.0.2-release/libroc_unstripped.so.0.1
6473rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.33.1/lib/libuv.a(libuv_la-random.o): In function `uv__random':
648/opt/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.33.1/src/libuv-v1.33.1/src/random.c:40: undefined reference to `uv__random_getentropy'
649clang70++: error: linker command failed with exit code 1 (use -v to see invocation)
650scons: *** [build/aarch64-linux-android/clang-7.0.2-release/libroc_unstripped.so.0.1] Error 1
651The command "scripts/travis/docker.sh rocproject/cross-aarch64-linux-android:api28 scripts/travis/android/aarch64-linux-android.sh" exited with 2.
Thanks, so it seems that the autotools libuv build is just broken on Android. I think this can be fixed by switching to cmake libuv build. I'm now trying to do it.
Useful documentation on cmake & android:
Done. See c5bb75f0c25a11d7c2dc6eb76c36b7f9fe91c7aa
Now we're using libuv 1.35.0 by default and use cmake for android builds. The issue with undefined references should be fixed, please rebase on fresh develop branch and try again.
wow that's cool 👍 !!
Thanks!
fixes #102