From 23e4884159ec4b3e0b2527ad4e8279775d31888f Mon Sep 17 00:00:00 2001 From: Leonid Pliushch Date: Sun, 24 Oct 2021 18:38:41 +0000 Subject: [PATCH] disabled packages: add tcc from unstable repo TCC is a Tiny C Compiler. It doesn't support PIE executables but has been added for its ability to act as C code interpreter. I don't know whether package is still needed at all and considering its limited usage scope on Android, I have moved it to disabled packages. --- disabled-packages/tcc/build.sh | 58 +++++++++++++++++++ .../tcc/tcc-0.9.27_libtcc.c.patch | 25 ++++++++ .../tcc/tcc-0.9.27_tccelf.c.patch | 22 +++++++ 3 files changed, 105 insertions(+) create mode 100644 disabled-packages/tcc/build.sh create mode 100644 disabled-packages/tcc/tcc-0.9.27_libtcc.c.patch create mode 100644 disabled-packages/tcc/tcc-0.9.27_tccelf.c.patch diff --git a/disabled-packages/tcc/build.sh b/disabled-packages/tcc/build.sh new file mode 100644 index 0000000000..41881a7cf9 --- /dev/null +++ b/disabled-packages/tcc/build.sh @@ -0,0 +1,58 @@ +TERMUX_PKG_HOMEPAGE=https://bellard.org/tcc/ +TERMUX_PKG_DESCRIPTION="Tiny C Compiler" +TERMUX_PKG_LICENSE="LGPL-2.1" +TERMUX_PKG_MAINTAINER="Leonid Pliushch " +TERMUX_PKG_VERSION=1:0.9.27 +TERMUX_PKG_REVISION=10 +TERMUX_PKG_SRCURL=https://repo.or.cz/tinycc.git/snapshot/fef838db2d124db3f1357385972371ccba7af2c6.tar.gz +TERMUX_PKG_SHA256=f6a022994b9903485a1777540c0c9e0571990fc339a2b325be6127b616534f33 +TERMUX_PKG_BUILD_IN_SRC=true +TERMUX_PKG_NO_STATICSPLIT=true + +termux_step_configure() { + unset CFLAGS CXXFLAGS + + if [ "${TERMUX_ARCH}" = "arm" ] || [ "${TERMUX_ARCH}" = "i686" ]; then + ELF_INTERPRETER_PATH="/system/bin/linker" + ANDROID_LIB_PATH="/system/lib:/system/vendor/lib" + else + ELF_INTERPRETER_PATH="/system/bin/linker64" + ANDROID_LIB_PATH="/system/lib64:/system/vendor/lib64" + fi +} + +termux_step_make() { + ( + unset CC CFLAGS LDFLAGS + ./configure --prefix="/tmp/tcc.host" --cpu="${TERMUX_ARCH}" + make -j $TERMUX_MAKE_PROCESSES tcc + mv -f tcc tcc.host + make distclean + ) + + ./configure \ + --prefix="$TERMUX_PREFIX" \ + --cross-prefix="${CC//clang}" \ + --cc="clang" \ + --cpu="$TERMUX_ARCH" \ + --disable-rpath \ + --elfinterp="$ELF_INTERPRETER_PATH" \ + --crtprefix="$TERMUX_PREFIX/lib/tcc/crt" \ + --sysincludepaths="$TERMUX_PREFIX/include:$TERMUX_PREFIX/lib/tcc/include" \ + --libpaths="$TERMUX_PREFIX/lib:$TERMUX_PREFIX/lib/tcc:$ANDROID_LIB_PATH" + + mv tcc.host tcc + touch -d "next minute" tcc + make -j ${TERMUX_MAKE_PROCESSES} libtcc1.a + + rm -f tcc + make -j ${TERMUX_MAKE_PROCESSES} tcc + + make install + + for file in crtbegin_dynamic.o crtbegin_so.o crtend_android.o crtend_so.o; do + install -Dm600 \ + "${TERMUX_STANDALONE_TOOLCHAIN}/sysroot/usr/lib/$TERMUX_HOST_PLATFORM/$TERMUX_PKG_API_LEVEL/$file" \ + "${TERMUX_PREFIX}/lib/tcc/crt/$file" + done +} diff --git a/disabled-packages/tcc/tcc-0.9.27_libtcc.c.patch b/disabled-packages/tcc/tcc-0.9.27_libtcc.c.patch new file mode 100644 index 0000000000..58777e7f4f --- /dev/null +++ b/disabled-packages/tcc/tcc-0.9.27_libtcc.c.patch @@ -0,0 +1,25 @@ +diff -uNr tcc-0.9.27/libtcc.c tcc-0.9.27.mod/libtcc.c +--- tcc-0.9.27/libtcc.c 2017-12-17 10:27:05.000000000 +0200 ++++ tcc-0.9.27.mod/libtcc.c 2018-08-09 19:25:44.086756864 +0300 +@@ -974,9 +974,20 @@ + /* add libc crt1/crti objects */ + if ((output_type == TCC_OUTPUT_EXE || output_type == TCC_OUTPUT_DLL) && + !s->nostdlib) { +- if (output_type != TCC_OUTPUT_DLL) ++ ++#ifdef __ANDROID__ ++ if (output_type != TCC_OUTPUT_DLL) { ++ tcc_add_crt(s, "crtbegin_dynamic.o"); ++ } else { ++ tcc_add_crt(s, "crtbegin_so.o"); ++ } ++#else ++ if (output_type != TCC_OUTPUT_DLL) { + tcc_add_crt(s, "crt1.o"); ++ } + tcc_add_crt(s, "crti.o"); ++#endif // __ANDROID__ ++ + } + #endif + return 0; diff --git a/disabled-packages/tcc/tcc-0.9.27_tccelf.c.patch b/disabled-packages/tcc/tcc-0.9.27_tccelf.c.patch new file mode 100644 index 0000000000..92cb531796 --- /dev/null +++ b/disabled-packages/tcc/tcc-0.9.27_tccelf.c.patch @@ -0,0 +1,22 @@ +diff -uNr tcc-0.9.27/tccelf.c tcc-0.9.27.mod/tccelf.c +--- tcc-0.9.27/tccelf.c 2017-12-17 10:27:05.000000000 +0200 ++++ tcc-0.9.27.mod/tccelf.c 2018-08-09 19:28:33.036752853 +0300 +@@ -1202,8 +1202,17 @@ + #endif + tcc_add_support(s1, TCC_LIBTCC1); + /* add crt end if not memory output */ +- if (s1->output_type != TCC_OUTPUT_MEMORY) ++ if (s1->output_type != TCC_OUTPUT_MEMORY) { ++#ifdef __ANDROID__ ++ if (s1->output_type == TCC_OUTPUT_DLL) { ++ tcc_add_crt(s1, "crtend_so.o"); ++ } else { ++ tcc_add_crt(s1, "crtend_android.o"); ++ } ++#else + tcc_add_crt(s1, "crtn.o"); ++#endif ++ } + } + } +