From eb3ebc715ad6260cdb58e1a76efa2576457e53b1 Mon Sep 17 00:00:00 2001 From: Tee KOBAYASHI Date: Sat, 5 Feb 2022 17:38:29 +0900 Subject: [PATCH] aapt: Include aidl as a subpackage. --- packages/aapt/aidl-aidl_language_y.yy.patch | 16 +++++++ packages/aapt/aidl-options.h.patch | 33 +++++++++++++++ packages/aapt/aidl.subpackage.sh | 2 + packages/aapt/build.sh | 46 ++++++++++++++++++++- packages/aapt/sources.sh | 27 ++++++++++++ 5 files changed, 122 insertions(+), 2 deletions(-) create mode 100644 packages/aapt/aidl-aidl_language_y.yy.patch create mode 100644 packages/aapt/aidl-options.h.patch create mode 100644 packages/aapt/aidl.subpackage.sh diff --git a/packages/aapt/aidl-aidl_language_y.yy.patch b/packages/aapt/aidl-aidl_language_y.yy.patch new file mode 100644 index 000000000..a57d5d599 --- /dev/null +++ b/packages/aapt/aidl-aidl_language_y.yy.patch @@ -0,0 +1,16 @@ +--- a/aidl/aidl_language_y.yy ++++ b/aidl/aidl_language_y.yy +@@ -1,3 +1,5 @@ ++%header "aidl_language_y.h" ++ + %{ + #include "aidl_language.h" + #include "aidl_language_y.h" +@@ -14,7 +16,6 @@ + %parse-param { Parser* ps } + %lex-param { void *lex_scanner } + +-%pure-parser + %skeleton "glr.cc" + + %union { diff --git a/packages/aapt/aidl-options.h.patch b/packages/aapt/aidl-options.h.patch new file mode 100644 index 000000000..9cc1d80e4 --- /dev/null +++ b/packages/aapt/aidl-options.h.patch @@ -0,0 +1,33 @@ +--- a/aidl/options.h ++++ b/aidl/options.h +@@ -21,7 +21,6 @@ + #include + + #include +-#include + + namespace android { + namespace aidl { +@@ -59,13 +58,6 @@ + private: + JavaOptions() = default; + +- FRIEND_TEST(EndToEndTest, IExampleInterface); +- FRIEND_TEST(AidlTest, FailOnParcelable); +- FRIEND_TEST(AidlTest, WritePreprocessedFile); +- FRIEND_TEST(AidlTest, WritesCorrectDependencyFile); +- FRIEND_TEST(AidlTest, WritesCorrectDependencyFileNinja); +- FRIEND_TEST(AidlTest, WritesTrivialDependencyFileForParcelable); +- + DISALLOW_COPY_AND_ASSIGN(JavaOptions); + }; + +@@ -97,8 +89,6 @@ + std::string dep_file_name_; + bool dep_file_ninja_{false}; + +- FRIEND_TEST(CppOptionsTests, ParsesCompileCpp); +- FRIEND_TEST(CppOptionsTests, ParsesCompileCppNinja); + DISALLOW_COPY_AND_ASSIGN(CppOptions); + }; + diff --git a/packages/aapt/aidl.subpackage.sh b/packages/aapt/aidl.subpackage.sh new file mode 100644 index 000000000..a0848882c --- /dev/null +++ b/packages/aapt/aidl.subpackage.sh @@ -0,0 +1,2 @@ +TERMUX_SUBPKG_INCLUDE="bin/aidl" +TERMUX_SUBPKG_DESCRIPTION="Android Interface Definition Language (AIDL)" diff --git a/packages/aapt/build.sh b/packages/aapt/build.sh index a63cef60a..4f078fcda 100644 --- a/packages/aapt/build.sh +++ b/packages/aapt/build.sh @@ -8,15 +8,18 @@ TERMUX_PKG_VERSION=${_TAG_VERSION}.${_TAG_REVISION} TERMUX_PKG_SRCURL=(https://android.googlesource.com/platform/frameworks/base https://android.googlesource.com/platform/system/core https://android.googlesource.com/platform/build - https://android.googlesource.com/platform/external/safe-iop) + https://android.googlesource.com/platform/external/safe-iop + https://android.googlesource.com/platform/system/tools/aidl) TERMUX_PKG_GIT_BRANCH=android-${_TAG_VERSION}_r${_TAG_REVISION} TERMUX_PKG_SHA256=(SKIP_CHECKSUM + SKIP_CHECKSUM SKIP_CHECKSUM SKIP_CHECKSUM SKIP_CHECKSUM) TERMUX_PKG_SKIP_SRC_EXTRACT=true TERMUX_PKG_BUILD_IN_SRC=true TERMUX_PKG_DEPENDS="libc++, libexpat, libpng, libzopfli, zlib" +TERMUX_PKG_HOSTBUILD=true termux_step_post_get_source() { # FIXME: We would like to enable checksums when downloading @@ -41,6 +44,23 @@ termux_step_post_get_source() { mv zopfli-zopfli-$ZOPFLI_VER zopfli } +termux_step_host_build() { + _PREFIX_FOR_BUILD=$TERMUX_PKG_HOSTBUILD_DIR/_prefix + + # Need bison that understands --header=[FILE] option. + local BISON_BUILD_SH=$TERMUX_SCRIPTDIR/packages/bison/build.sh + local BISON_SRCURL=$(bash -c ". $BISON_BUILD_SH; echo \$TERMUX_PKG_SRCURL") + local BISON_SHA256=$(bash -c ". $BISON_BUILD_SH; echo \$TERMUX_PKG_SHA256") + local BISON_TARFILE=$TERMUX_PKG_CACHEDIR/$(basename $BISON_SRCURL) + termux_download $BISON_SRCURL $BISON_TARFILE $BISON_SHA256 + mkdir -p bison + cd bison + tar xf $BISON_TARFILE --strip-components=1 + ./configure --prefix=$_PREFIX_FOR_BUILD + make -j $TERMUX_MAKE_PROCESSES + make install +} + termux_step_pre_configure() { # Certain packages are not safe to build on device because their # build.sh script deletes specific files in $TERMUX_PREFIX. @@ -50,6 +70,8 @@ termux_step_pre_configure() { termux_setup_protobuf + export PATH=$_PREFIX_FOR_BUILD/bin:$PATH + CFLAGS+=" -fPIC" CXXFLAGS+=" -fPIC" @@ -76,6 +98,7 @@ termux_step_make() { local AAPT_SRCDIR=$TERMUX_PKG_SRCDIR/base/tools/aapt local AAPT2_SRCDIR=$TERMUX_PKG_SRCDIR/base/tools/aapt2 local ZIPALIGN_SRCDIR=$TERMUX_PKG_SRCDIR/build/tools/zipalign + local AIDL_SRCDIR=$TERMUX_PKG_SRCDIR/aidl # Build libcutils: cd $LIBCUTILS_SRCDIR @@ -212,13 +235,32 @@ termux_step_make() { -lzopfli \ -lz \ -o $_TMP_BINDIR/zipalign + + # Build aidl: + cd $AIDL_SRCDIR + flex aidl_language_l.ll + bison --header=aidl_language_y.h aidl_language_y.yy + cat >> aidl_language_y.h <<-EOF + typedef union yy::parser::value_type YYSTYPE; + typedef yy::parser::location_type YYLTYPE; + EOF + local AIDL_CPPFLAGS="$CPPFLAGS \ + -I. \ + -I$LIBBASE_SRCDIR/include" + for f in $aidl_sources_cpp; do + $CXX $CXXFLAGS $AIDL_CPPFLAGS $f -c + done + $CXX $CXXFLAGS *.o $LDFLAGS \ + -landroid-base \ + -llog \ + -o $_TMP_BINDIR/aidl } termux_step_make_install() { install -Dm600 -t $TERMUX_PREFIX/lib \ $_TMP_LIBDIR/libandroid-{cutils,utils,base,ziparchive,fw}.so install -Dm700 -t $TERMUX_PREFIX/bin \ - $_TMP_BINDIR/{aapt,aapt2,zipalign} + $_TMP_BINDIR/{aapt,aapt2,zipalign,aidl} # Create an android.jar with AndroidManifest.xml and resources.arsc: cd $TERMUX_PKG_TMPDIR diff --git a/packages/aapt/sources.sh b/packages/aapt/sources.sh index 975537bf3..d89a578ce 100644 --- a/packages/aapt/sources.sh +++ b/packages/aapt/sources.sh @@ -193,3 +193,30 @@ local aapt2_sources_cpp=" cmd/Util.cpp Main.cpp " + +# aidl +local libaidl_sources_cpp=" + aidl.cpp + aidl_language.cpp + ast_cpp.cpp + ast_java.cpp + code_writer.cpp + generate_cpp.cpp + generate_java.cpp + generate_java_binder.cpp + import_resolver.cpp + line_reader.cpp + io_delegate.cpp + options.cpp + type_cpp.cpp + type_java.cpp + type_namespace.cpp +" +libaidl_sources_cpp+=" + lex.yy.c + aidl_language_y.tab.cc +" +local aidl_sources_cpp=" + $libaidl_sources_cpp + main_java.cpp +"