diff --git a/README.android b/README.android index a4560b61..dbea0519 100644 --- a/README.android +++ b/README.android @@ -42,11 +42,11 @@ aria2c executable was generated using android-ndk-r14b. The following libraries were statically linked. -* openssl 1.0.2o -* expat 2.2.5 +* openssl 1.1.1c +* expat 2.2.7 * zlib 1.2.11 -* c-ares 1.14.0 -* libssh2 1.8.0 +* c-ares 1.15.0 +* libssh2 1.9.0 Since Android does not have ``/etc/resolv.conf``, c-ares (asynchronous DNS resolver) is disabled by default. But name resolution is sometimes diff --git a/README.rst b/README.rst index 158c81ac..09619f9d 100644 --- a/README.rst +++ b/README.rst @@ -359,7 +359,7 @@ Cross-compiling Android binary In this section, we describe how to build Android binary using Android NDK cross-compiler on Debian Linux. -At the time of this writing, android-ndk-r14b should compile aria2 +At the time of this writing, Android NDK r20 should compile aria2 without errors. ``android-config`` script is a configure script wrapper for Android @@ -376,33 +376,17 @@ When building the above libraries, make sure that disable shared library and enable only static library. We are going to link those libraries statically. -We use zlib which comes with Android NDK, so we don't have to build it -by ourselves. +``android-config`` assumes that ``$ANDROID_HOME`` and ``$NDK`` +environment variables are defined. -``android-config`` assumes the existence of ``$ANDROID_HOME`` -environment variable which must fulfill the following conditions: +We currently use Android NDK r20. ``$NDK`` should point to the +directory to Anroid NDK. The build tools will be found under +``$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/``. -* Android NDK toolchain is installed under - ``$ANDROID_HOME/toolchain``. Refer to `Standalone Toolchain - `_ - for more details, but it is a bit out of date. +All the dependent libraries must be installed under +``$ANDROID_HOME/usr/local``. - To install toolchain under ``$ANDROID_HOME/toolchain``, do this: - - .. code-block:: text - - $NDK/build/tools/make_standalone_toolchain.py \ - --arch arm --api 16 --stl=gnustl \ - --install-dir $ANDROID_HOME/toolchain - -* The dependent libraries must be installed under - ``$ANDROID_HOME/usr/local``. - -Before running ``android-config`` and ``android-make``, -``$ANDROID_HOME`` environment variable must be set to point to the -correct path. - -After ``android-config``, run ``android-make`` to compile sources. +After ``android-config``, run ``make`` to compile sources. Building documentation ---------------------- diff --git a/android-config b/android-config index 0f065335..71914045 100755 --- a/android-config +++ b/android-config @@ -35,12 +35,15 @@ if [ -z "$ANDROID_HOME" ]; then echo 'No $ANDROID_HOME specified.' exit 1 fi +if [ -z "$NDK" ]; then + echo 'No $NDK specified.' + exit 1 +fi PREFIX=$ANDROID_HOME/usr/local -TOOLCHAIN=$ANDROID_HOME/toolchain -PATH=$TOOLCHAIN/bin:$PATH +TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64 ./configure \ - --host=arm-linux-androideabi \ + --host=aarch64-linux-android \ --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \ --disable-nls \ --without-gnutls \ @@ -51,10 +54,15 @@ PATH=$TOOLCHAIN/bin:$PATH --with-libcares \ --with-libz \ --with-libssh2 \ - CC="$TOOLCHAIN"/bin/arm-linux-androideabi-clang \ - CXX="$TOOLCHAIN"/bin/arm-linux-androideabi-clang++ \ + AR=$TOOLCHAIN/bin/aarch64-linux-android-ar \ + AS=$TOOLCHAIN/bin/aarch64-linux-android-as \ + CC=$TOOLCHAIN/bin/aarch64-linux-android29-clang \ + CXX=$TOOLCHAIN/bin/aarch64-linux-android29-clang++ \ + LD=$TOOLCHAIN/bin/aarch64-linux-android-ld \ + RANLIB=$TOOLCHAIN/bin/aarch64-linux-android-ranlib \ + STRIP=$TOOLCHAIN/bin/aarch64-linux-android-strip \ CXXFLAGS="-Os -g" \ CFLAGS="-Os -g" \ CPPFLAGS="-fPIE" \ - LDFLAGS="-fPIE -pie -L$PREFIX/lib" \ + LDFLAGS="-fPIE -pie -L$PREFIX/lib -static-libstdc++" \ PKG_CONFIG_LIBDIR="$PREFIX/lib/pkgconfig" diff --git a/android-make b/android-make deleted file mode 100755 index 249fc2c6..00000000 --- a/android-make +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/sh - -# aria2 - The high speed download utility -# -# Copyright (C) 2012 Tatsuhiro Tsujikawa -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -# -# In addition, as a special exception, the copyright holders give -# permission to link the code of portions of this program with the -# OpenSSL library under certain conditions as described in each -# individual source file, and distribute linked combinations -# including the two. -# You must obey the GNU General Public License in all respects -# for all of the code used other than OpenSSL. If you modify -# file(s) with this exception, you may extend this exception to your -# version of the file(s), but you are not obligated to do so. If you -# do not wish to do so, delete this exception statement from your -# version. If you delete this exception statement from all source -# files in the program, then also delete it here. - -if [ -z "$ANDROID_HOME" ]; then - echo 'No $ANDROID_HOME specified.' - exit 1 -fi -TOOLCHAIN=$ANDROID_HOME/toolchain -PATH=$TOOLCHAIN/bin:$PATH - -make "$@" diff --git a/android-release b/android-release index f4c3354d..361eb029 100755 --- a/android-release +++ b/android-release @@ -31,11 +31,12 @@ # version. If you delete this exception statement from all source # files in the program, then also delete it here. -if [ -z "$ANDROID_HOME" ]; then - echo 'No $ANDROID_HOME specified.' +if [ -z "$NDK" ]; then + echo 'No $NDK specified.' exit 1 fi -TOOLCHAIN=$ANDROID_HOME/toolchain + +TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64 PATH=$TOOLCHAIN/bin:$PATH # cd to the directory where this script exists. @@ -49,8 +50,8 @@ if [ -z "$VERSION" ]; then exit 1 fi -DIST_DIR=aria2-$VERSION-android-arm-build1 -arm-linux-androideabi-strip src/aria2c +DIST_DIR=aria2-$VERSION-aarch64-linux-android-build1 +aarch64-linux-android-strip src/aria2c mkdir $DIST_DIR cp AUTHORS COPYING ChangeLog LICENSE.OpenSSL NEWS README.html README.android \ src/aria2c $DIST_DIR diff --git a/makerelease b/makerelease index 8d2adf30..d76f80c0 100755 --- a/makerelease +++ b/makerelease @@ -4,6 +4,10 @@ if [ -z "$ANDROID_HOME" ]; then echo 'No $ANDROID_HOME specified.' exit 1 fi +if [ -z "$NDK" ]; then + echo 'No $NDK specified.' + exit 1 +fi VERSION=$1 PREV_VERSION=$2 diff --git a/src/a2io.h b/src/a2io.h index ddd53db2..27ddc518 100644 --- a/src/a2io.h +++ b/src/a2io.h @@ -147,7 +147,7 @@ // # define a2fseek(fp, offset, origin): No fseek64 and not used in aria2 # define a2fstat(fd, buf) fstat64(fd, buf) // # define a2ftell(fd): No ftell64 and not used in aria2 -# define a2_struct_stat struct stat +# define a2_struct_stat struct stat64 # define a2stat(path, buf) stat64(path, buf) # define a2mkdir(path, openMode) mkdir(path, openMode) # define a2utimbuf utimbuf