X-Git-Url: https://git.distorted.org.uk/~mdw/termux-packages/blobdiff_plain/5d423738a0a959b5fb582033bef24c5ed00bfa60..d3e5452e3ee76b8c454bc018f03d53ec567c49de:/packages/aapt/build.sh diff --git a/packages/aapt/build.sh b/packages/aapt/build.sh index 8ad70850..92bac76f 100644 --- a/packages/aapt/build.sh +++ b/packages/aapt/build.sh @@ -1,94 +1,301 @@ -TERMUX_PKG_HOMEPAGE=https://android.googlesource.com/platform/system/core/+/android-4.4.4_r2/libutils +# FIXME: We would like to enable checksums when downloading +# tar files, but they change each time as the tar metadata +# differs: https://github.com/google/gitiles/issues/84 +TERMUX_PKG_HOMEPAGE=http://elinux.org/Android_aapt TERMUX_PKG_DESCRIPTION="Android Asset Packaging Tool" -TERMUX_PKG_VERSION=5.1.1 -TERMUX_PKG_BUILD_REVISION=1 +_TAG_VERSION=7.0.0 +_TAG_REVISION=14 +TERMUX_PKG_VERSION=${_TAG_VERSION}.${_TAG_REVISION} +TERMUX_PKG_REVISION=1 TERMUX_PKG_BUILD_IN_SRC=yes -TERMUX_PKG_DEPENDS="libexpat, libpng, libgnustl" +TERMUX_PKG_DEPENDS="libexpat, libpng, libzopfli" termux_step_make_install () { - local _TAGNAME=${TERMUX_PKG_VERSION}_r8 + local _TAGNAME=${_TAG_VERSION}_r${_TAG_REVISION} + SYSTEM_CORE_INCLUDE_TARFILE=$TERMUX_PKG_CACHEDIR/system_core_include_${_TAGNAME}.tar.gz + test ! -f $SYSTEM_CORE_INCLUDE_TARFILE && termux_download \ + "https://android.googlesource.com/platform/system/core/+archive/android-$_TAGNAME/include.tar.gz" \ + $SYSTEM_CORE_INCLUDE_TARFILE + + ANDROIDFW_INCLUDE_TARFILE=$TERMUX_PKG_CACHEDIR/androidfw_include_${_TAGNAME}.tar.gz + test ! -f $ANDROIDFW_INCLUDE_TARFILE && termux_download \ + "https://android.googlesource.com/platform/frameworks/base/+archive/android-$_TAGNAME/include/androidfw.tar.gz" \ + $ANDROIDFW_INCLUDE_TARFILE + + ANDROID_BASE_INCLUDE_TARFILE=$TERMUX_PKG_CACHEDIR/android_base_include_${_TAGNAME}.tar.gz + test ! -f $ANDROID_BASE_INCLUDE_TARFILE && termux_download \ + "https://android.googlesource.com/platform/system/core/+archive/android-$_TAGNAME/base/include/android-base.tar.gz" \ + $ANDROID_BASE_INCLUDE_TARFILE + + local AOSP_INCLUDE_DIR=$TERMUX_PREFIX/include/aosp + mkdir -p $AOSP_INCLUDE_DIR + cd $AOSP_INCLUDE_DIR + rm -Rf * + tar xf $SYSTEM_CORE_INCLUDE_TARFILE + mkdir -p androidfw + cd androidfw + tar xf $ANDROIDFW_INCLUDE_TARFILE + cd .. + mkdir -p android-base + cd android-base + tar xf $ANDROID_BASE_INCLUDE_TARFILE + cd ../log + patch -p0 < $TERMUX_PKG_BUILDER_DIR/log.h.patch.txt + + # Build libcutils: + mkdir -p $TERMUX_PKG_SRCDIR/{libcutils,androidfw} + cd $TERMUX_PKG_SRCDIR/libcutils LIBCUTILS_TARFILE=$TERMUX_PKG_CACHEDIR/libcutils_${_TAGNAME}.tar.gz - LIBUTILS_TARFILE=$TERMUX_PKG_CACHEDIR/libutils_${_TAGNAME}.tar.gz - ANDROIDFW_TARFILE=$TERMUX_PKG_CACHEDIR/androidfw_${_TAGNAME}.tar.gz - AAPT_TARFILE=$TERMUX_PKG_CACHEDIR/aapt_${_TAGNAME}.tar.gz + test ! -f $LIBCUTILS_TARFILE && termux_download \ + "https://android.googlesource.com/platform/system/core/+archive/android-$_TAGNAME/libcutils.tar.gz" \ + $LIBCUTILS_TARFILE + tar xf $LIBCUTILS_TARFILE + patch -p0 < $TERMUX_PKG_BUILDER_DIR/libcutils-patch.txt + $CXX $CXXFLAGS -isystem $AOSP_INCLUDE_DIR -c -o sockets.o sockets.cpp + $CXX $CXXFLAGS -isystem $AOSP_INCLUDE_DIR -c -o sockets_unix.o sockets_unix.cpp + sed -i 's%include %include %' properties.c + # From Android.mk: + libcutils_common_sources="\ + config_utils.c \ + fs_config.c \ + canned_fs_config.c \ + hashmap.c \ + iosched_policy.c \ + load_file.c \ + native_handle.c \ + open_memstream.c \ + process_name.c \ + record_stream.c \ + sched_policy.c \ + sockets.o \ + strdup16to8.c \ + strdup8to16.c \ + strlcpy.c \ + threads.c" + libcutils_nonwindows_sources="\ + fs.c \ + multiuser.c \ + socket_inaddr_any_server_unix.c \ + socket_local_client_unix.c \ + socket_local_server_unix.c \ + socket_loopback_client_unix.c \ + socket_loopback_server_unix.c \ + socket_network_client_unix.c \ + sockets_unix.o \ + str_parms.c" + $CC $CFLAGS \ + -Dchar16_t=uint16_t \ + -std=c11 \ + -isystem $AOSP_INCLUDE_DIR \ + $libcutils_common_sources \ + $libcutils_nonwindows_sources \ + trace-host.c \ + properties.c \ + -llog \ + -shared \ + -o $TERMUX_PREFIX/lib/libandroid-cutils.so + + + + # Build libutil: + local LIBUTILS_TARFILE=$TERMUX_PKG_CACHEDIR/libutils_${_TAGNAME}.tar.gz + test ! -f $LIBUTILS_TARFILE && termux_download \ + "https://android.googlesource.com/platform/system/core/+archive/android-$_TAGNAME/libutils.tar.gz" \ + $LIBUTILS_TARFILE + + local SAFE_IOP_TARFILE=$TERMUX_PKG_CACHEDIR/safe_iop.tar.gz + test ! -f $SAFE_IOP_TARFILE && termux_download \ + https://android.googlesource.com/platform/external/safe-iop/+archive/cd76f998688d145235de78ecd5b340d0eac9239d.tar.gz \ + $SAFE_IOP_TARFILE + local SAFE_IOP_DIR=$TERMUX_PKG_TMPDIR/safe-iop + mkdir -p $SAFE_IOP_DIR + cd $SAFE_IOP_DIR + tar xf $SAFE_IOP_TARFILE + mv src/safe_iop.c src/safe_iop.cpp + + mkdir $TERMUX_PKG_SRCDIR/libutils + cd $TERMUX_PKG_SRCDIR/libutils + tar xf $LIBUTILS_TARFILE + # From Android.mk: + #CallStack.cpp \ + #SystemClock.cpp \ + commonSources="\ + FileMap.cpp \ + JenkinsHash.cpp \ + LinearTransform.cpp \ + Log.cpp \ + NativeHandle.cpp \ + Printer.cpp \ + PropertyMap.cpp \ + RefBase.cpp \ + SharedBuffer.cpp \ + Static.cpp \ + StopWatch.cpp \ + String8.cpp \ + String16.cpp \ + Threads.cpp \ + Timers.cpp \ + Tokenizer.cpp \ + Unicode.cpp \ + VectorImpl.cpp \ + misc.cpp" + $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS \ + -std=c++11 \ + '-DALOG_ASSERT(a,...)=' \ + -Dtypeof=decltype \ + -isystem $TERMUX_PREFIX/include/aosp \ + -isystem $SAFE_IOP_DIR/include \ + $SAFE_IOP_DIR/src/safe_iop.cpp \ + $commonSources \ + -landroid-cutils \ + -llog \ + -shared \ + -o $TERMUX_PREFIX/lib/libandroid-utils.so + + + + # Build libbase: + local LIBBASE_TARFILE=$TERMUX_PKG_CACHEDIR/libbase_${_TAGNAME}.tar.gz + test ! -f $LIBBASE_TARFILE && termux_download \ + "https://android.googlesource.com/platform/system/core/+archive/android-${_TAGNAME}/base.tar.gz" \ + $LIBBASE_TARFILE + mkdir -p $TERMUX_PKG_SRCDIR/libbase + cd $TERMUX_PKG_SRCDIR/libbase + tar xf $LIBBASE_TARFILE + rm -Rf $TERMUX_PREFIX/include/aosp/android-base + mv include/android-base $TERMUX_PREFIX/include/aosp + patch -p1 < $TERMUX_PKG_BUILDER_DIR/libbase-patch.txt + #logging.cpp \ + libbase_src_files="\ + file.cpp \ + parsenetaddress.cpp \ + stringprintf.cpp \ + strings.cpp \ + test_utils.cpp" + libbase_linux_src_files="\ + errors_unix.cpp" + # __USE_BSD for DEFFILEMODE to be defined by . + $CXX $CXXFLAGS $CPPFLAGS -std=c++11 \ + -D__USE_BSD \ + -isystem $AOSP_INCLUDE_DIR \ + $libbase_src_files $libbase_linux_src_files \ + -llog \ + -shared \ + -o $TERMUX_PREFIX/lib/libandroid-base.so + + + # Build libziparchive: LIBZIPARCHIVE_TARFILE=$TERMUX_PKG_CACHEDIR/libziparchive_${_TAGNAME}.tar.gz - ZIPALIGN_TARFILE=$TERMUX_PKG_CACHEDIR/zipalign_${_TAGNAME}.tar.gz - - test ! -f $LIBCUTILS_TARFILE && curl -o $LIBCUTILS_TARFILE "https://android.googlesource.com/platform/system/core/+archive/android-$_TAGNAME/libcutils.tar.gz" - test ! -f $LIBUTILS_TARFILE && curl -o $LIBUTILS_TARFILE "https://android.googlesource.com/platform/system/core/+archive/android-$_TAGNAME/libutils.tar.gz" - test ! -f $ANDROIDFW_TARFILE && curl -o $ANDROIDFW_TARFILE "https://android.googlesource.com/platform/frameworks/base/+archive/android-$_TAGNAME/libs/androidfw.tar.gz" - test ! -f $AAPT_TARFILE && curl -o $AAPT_TARFILE "https://android.googlesource.com/platform/frameworks/base/+archive/android-$_TAGNAME/tools/aapt.tar.gz" - test ! -f $ZIPALIGN_TARFILE && curl -o $ZIPALIGN_TARFILE "https://android.googlesource.com/platform/build.git/+archive/android-$_TAGNAME/tools/zipalign.tar.gz" - test ! -f $LIBZIPARCHIVE_TARFILE && curl -o $LIBZIPARCHIVE_TARFILE "https://android.googlesource.com/platform/system/core/+archive/android-$_TAGNAME/libziparchive.tar.gz" - - # https://android.googlesource.com/platform/system/core/+/android-4.4.4_r2/include/cutils/ - LIBCUTILS_INCLUDE_TARFILE=$TERMUX_PKG_CACHEDIR/libcutils_include_${_TAGNAME}.tar.gz - test ! -f $LIBCUTILS_INCLUDE_TARFILE && curl -o $LIBCUTILS_INCLUDE_TARFILE \ - "https://android.googlesource.com/platform/system/core/+archive/android-$_TAGNAME/include/cutils.tar.gz" - # https://android.googlesource.com/platform/system/core/+/android-4.4.4_r2/include/utils/ - LIBUTILS_INCLUDE_TARFILE=$TERMUX_PKG_CACHEDIR/libutils_include_${_TAGNAME}.tar.gz - test ! -f $LIBUTILS_INCLUDE_TARFILE && curl -o $LIBUTILS_INCLUDE_TARFILE \ - "https://android.googlesource.com/platform/system/core/+archive/android-$_TAGNAME/include/utils.tar.gz" - # https://android.googlesource.com/platform/frameworks/base/+/android-4.4.4_r2/include/androidfw/ - ANDROIDFW_INCLUDE_TARFILE=$TERMUX_PKG_CACHEDIR/androidfw_include_${_TAGNAME}.tar.gz - test ! -f $ANDROIDFW_INCLUDE_TARFILE && curl -o $ANDROIDFW_INCLUDE_TARFILE \ - "https://android.googlesource.com/platform/frameworks/base/+archive/android-$_TAGNAME/include/androidfw.tar.gz" - LIBZIPARCHIVE_INCLUDE_TARFILE=$TERMUX_PKG_CACHEDIR/libziparchive_include_${_TAGNAME}.tar.gz - test ! -f $LIBZIPARCHIVE_INCLUDE_TARFILE && curl -o $LIBZIPARCHIVE_INCLUDE_TARFILE \ - "https://android.googlesource.com/platform/system/core/+archive/android-$_TAGNAME/include/ziparchive.tar.gz" - - mkdir -p include/{cutils,utils,androidfw,log,system,ziparchive} libcutils libutils androidfw aapt zipalign ziparchive - - (cd include/cutils; tar xf $LIBCUTILS_INCLUDE_TARFILE) - (cd include/utils; tar xf $LIBUTILS_INCLUDE_TARFILE; rm CallStack.h; touch CallStack.h) - (cd include/androidfw; tar xf $ANDROIDFW_INCLUDE_TARFILE) - (cd include/ziparchive; tar xf $LIBZIPARCHIVE_INCLUDE_TARFILE) - touch include/system/graphics.h - cp $TERMUX_PKG_BUILDER_DIR/log.h include/log/ - cp $TERMUX_PKG_BUILDER_DIR/thread_defs.h include/system/ - # to satisfy include: - ln -s "$TERMUX_PREFIX/include" include/libexpat - - cd libcutils - tar xf $LIBCUTILS_TARFILE - rm trace.c dlmalloc_stubs.c ashmem-host.c - - cd ../libutils - tar xf $LIBUTILS_TARFILE - rm CallStack.cpp ProcessCallStack.cpp Trace.cpp - perl -p -i -e 's/__android_log_print\(mPriority, mLogTag,/printf(/' Printer.cpp - - cd ../androidfw - tar xf $ANDROIDFW_TARFILE - rm BackupData.cpp BackupHelpers.cpp CursorWindow.cpp - - cd ../ziparchive + test ! -f $LIBZIPARCHIVE_TARFILE && termux_download \ + "https://android.googlesource.com/platform/system/core/+archive/android-$_TAGNAME/libziparchive.tar.gz" \ + $LIBZIPARCHIVE_TARFILE + mkdir -p $TERMUX_PKG_SRCDIR/libziparchive + cd $TERMUX_PKG_SRCDIR/libziparchive tar xf $LIBZIPARCHIVE_TARFILE - rm zip_archive_test.cc - - # png_set_expand_gray_1_2_4_to_8(png_ptr) is the newer name instead of png_set_gray_1_2_4_to_8(png_ptr): - # libpng no longer defines "#define png_sizeof(x) (sizeof (x))" - # -include since png.h no longer includes zlib.h - COMPILE_FLAGS="$CC $CFLAGS \ - -DANDROID_SMP=1 \ - -DHAVE_ENDIAN_H=1 -DHAVE_POSIX_FILEMAP=1 -DHAVE_OFF64_T=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_PTHREADS=1 \ + libziparchive_source_files="\ + zip_archive.cc \ + zip_archive_stream_entry.cc \ + zip_writer.cc" + sed -i 's%next_in = reinterpret_cast(data)%next_in = const_cast(reinterpret_cast(data))%' zip_writer.cc + $CXX $CXXFLAGS $LDFLAGS -std=c++11 \ + -DZLIB_CONST \ + -isystem $AOSP_INCLUDE_DIR \ + $libziparchive_source_files \ + -landroid-base \ + -landroid-utils \ + -lz \ + -llog \ + -shared \ + -o $TERMUX_PREFIX/lib/libandroid-ziparchive.so + + + + # Build libandroidfw: + ANDROIDFW_TARFILE=$TERMUX_PKG_CACHEDIR/androidfw_${_TAGNAME}.tar.gz + test ! -f $ANDROIDFW_TARFILE && termux_download \ + https://android.googlesource.com/platform/frameworks/base/+archive/android-$_TAGNAME/libs/androidfw.tar.gz \ + $ANDROIDFW_TARFILE + mkdir -p $TERMUX_PKG_SRCDIR/androidfw + cd $TERMUX_PKG_SRCDIR/androidfw + tar xf $ANDROIDFW_TARFILE + commonSources="\ + Asset.cpp \ + AssetDir.cpp \ + AssetManager.cpp \ + LocaleData.cpp \ + misc.cpp \ + ObbFile.cpp \ + ResourceTypes.cpp \ + StreamingZipInflater.cpp \ + TypeWrappers.cpp \ + ZipFileRO.cpp \ + ZipUtils.cpp" + sed -i 's%#include %%' ResourceTypes.cpp + $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -isystem $AOSP_INCLUDE_DIR \ + -std=c++11 \ + $commonSources \ + -landroid-cutils \ + -landroid-utils \ + -landroid-ziparchive \ + -llog \ + -lz \ + -shared \ + -o $TERMUX_PREFIX/lib/libandroid-fw.so + + # Build aapt: + AAPT_TARFILE=$TERMUX_PKG_CACHEDIR/aapt_${_TAGNAME}.tar.gz + test ! -f $AAPT_TARFILE && termux_download \ + "https://android.googlesource.com/platform/frameworks/base/+archive/android-$_TAGNAME/tools/aapt.tar.gz" \ + $AAPT_TARFILE + mkdir $TERMUX_PKG_SRCDIR/aapt + cd $TERMUX_PKG_SRCDIR/aapt + tar xf $AAPT_TARFILE + sed "s%\@TERMUX_PREFIX\@%${TERMUX_PREFIX}%g" $TERMUX_PKG_BUILDER_DIR/aapt-Main.cpp.patch.txt | patch -p1 + $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS \ + -std=c++11 \ + -DANDROID_SMP=1 \ -DNDEBUG=1 \ - -Dpng_set_gray_1_2_4_to_8=png_set_expand_gray_1_2_4_to_8 -Dpng_sizeof=sizeof -include zlib.h \ - -I $TERMUX_PKG_SRCDIR/include \ - -I $TERMUX_PREFIX/include \ - $LDFLAGS \ - -lm -lz -lpng -lexpat -lgnustl_shared \ - ../libcutils/*.c ../ziparchive/*.cc ../libutils/*.cpp ../androidfw/*.cpp *.cpp" - - cd ../aapt - tar xf $AAPT_TARFILE - rm printapk.cpp - perl -p -i -e 's/png_ptr->io_ptr/png_get_io_ptr(png_ptr)/' Images.cpp - $COMPILE_FLAGS *.c -o $TERMUX_PREFIX/bin/aapt - - # zipalign needs "zopfli/deflate.h", so disable for now: - #cd ../zipalign - #tar xf $ZIPALIGN_TARFILE - #$COMPILE_FLAGS -o $TERMUX_PREFIX/bin/zipalign + -DHAVE_ENDIAN_H=1 -DHAVE_POSIX_FILEMAP=1 -DHAVE_OFF64_T=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_PTHREADS=1 \ + -isystem $AOSP_INCLUDE_DIR \ + *.cpp \ + -landroid-cutils -landroid-utils -landroid-fw -landroid-ziparchive \ + -llog \ + -lm -lz -lpng -lexpat \ + -pie \ + -o $TERMUX_PREFIX/bin/aapt + + + + # Build zipalign: + ZIPALIGN_TARFILE=$TERMUX_PKG_CACHEDIR/zipalign_${_TAGNAME}.tar.gz + test ! -f $ZIPALIGN_TARFILE && termux_download \ + "https://android.googlesource.com/platform/build.git/+archive/android-$_TAGNAME/tools/zipalign.tar.gz" \ + $ZIPALIGN_TARFILE + mkdir $TERMUX_PKG_SRCDIR/zipalign + cd $TERMUX_PKG_SRCDIR/zipalign + tar xf $ZIPALIGN_TARFILE + $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS \ + -isystem $AOSP_INCLUDE_DIR \ + -std=c++11 \ + ZipAlign.cpp ZipEntry.cpp ZipFile.cpp \ + -landroid-cutils -landroid-utils -landroid-fw \ + -lm -lz -llog \ + -lzopfli \ + -pie \ + -o $TERMUX_PREFIX/bin/zipalign + + + # Remove this one for now: + rm -Rf $AOSP_INCLUDE_DIR + + # Create an android.jar with AndroidManifest.xml and resources.arsc: + cd $TERMUX_PKG_TMPDIR + rm -rf android-jar + mkdir android-jar + cd android-jar + cp $ANDROID_HOME/platforms/android-25/android.jar . + unzip -q android.jar + mkdir -p $TERMUX_PREFIX/share/aapt + zip -q $TERMUX_PREFIX/share/aapt/android.jar AndroidManifest.xml resources.arsc }