Browse Source

s3.TUP Integrating of Freetz-NG toolchains (v0.13.0)

- seamlessly add Freetz-NG cross toolchain builder integration including first cross templates for Fritz!OS (see wiki)
- rename source folder crosstool-ng
- new commandline options -fng / --freetz-ng to open the Freetz-NG menu
- fix unset variables in syscheck-function to avoid multiple checks
- extend the installers to setup the correct packages for Freetz-NG (tested on Ubuntu 20.04, ArchLinux, CentOS 8, Fedora 31, openSUSE in WSL2)
pull/35/head
WXbet 5 years ago
parent
commit
dd3984c11c
  1. 686
      support/crosstool/templates/fritzOS-musl-LAB_mips
  2. 7
      support/crosstool/templates/fritzOS-uClibc-69x_mips
  3. 7
      support/crosstool/templates/fritzOS-uClibc-71x_mips
  4. 356
      support/functions/_plugin_update_toolchain
  5. 1
      support/functions/_sys_check
  6. 16
      support/os/debian_ubuntu.install
  7. 17
      support/os/manjaro.install
  8. 33
      support/os/redhat_centos_fedora.install
  9. 27
      support/os/suse.install

686
support/crosstool/templates/fritzOS-musl-LAB_mips

@ -0,0 +1,686 @@
#toolchain template: FRITZ!OS musl Labor
CT_CONFIGURE_has_static_link=y
CT_CONFIGURE_has_cxx11=y
CT_CONFIGURE_has_wget=y
CT_CONFIGURE_has_curl=y
CT_CONFIGURE_has_make_3_81_or_newer=y
CT_CONFIGURE_has_make_4_0_or_newer=y
CT_CONFIGURE_has_libtool_2_4_or_newer=y
CT_CONFIGURE_has_libtoolize_2_4_or_newer=y
CT_CONFIGURE_has_autoconf_2_65_or_newer=y
CT_CONFIGURE_has_autoreconf_2_65_or_newer=y
CT_CONFIGURE_has_automake_1_15_or_newer=y
CT_CONFIGURE_has_gnu_m4_1_4_12_or_newer=y
CT_CONFIGURE_has_python_3_4_or_newer=y
CT_CONFIGURE_has_bison_2_7_or_newer=y
CT_CONFIGURE_has_python=y
CT_CONFIGURE_has_svn=y
CT_CONFIGURE_has_git=y
CT_CONFIGURE_has_md5sum=y
CT_CONFIGURE_has_sha1sum=y
CT_CONFIGURE_has_sha256sum=y
CT_CONFIGURE_has_sha512sum=y
CT_CONFIGURE_has_install_with_strip_program=y
CT_CONFIG_VERSION_CURRENT="3"
CT_CONFIG_VERSION="3"
CT_MODULES=y
# CT_OBSOLETE is not set
CT_EXPERIMENTAL=y
# CT_ALLOW_BUILD_AS_ROOT is not set
# CT_DEBUG_CT is not set
CT_LOCAL_TARBALLS_DIR="${HOME}/src"
CT_SAVE_TARBALLS=y
# CT_TARBALLS_BUILDROOT_LAYOUT is not set
CT_WORK_DIR="${CT_TOP_DIR}/.build"
CT_BUILD_TOP_DIR="${CT_WORK_DIR:-${CT_TOP_DIR}/.build}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}"
CT_BUILD_DIR="${CT_BUILD_TOP_DIR}/build"
CT_PREFIX_DIR="${CT_PREFIX:-${HOME}/x-tools}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}"
CT_RM_RF_PREFIX_DIR=y
CT_REMOVE_DOCS=y
CT_INSTALL_LICENSES=y
# CT_PREFIX_DIR_RO is not set
CT_STRIP_HOST_TOOLCHAIN_EXECUTABLES=y
# CT_STRIP_TARGET_TOOLCHAIN_EXECUTABLES is not set
CT_DOWNLOAD_AGENT_WGET=y
# CT_DOWNLOAD_AGENT_CURL is not set
# CT_DOWNLOAD_AGENT_NONE is not set
# CT_FORBID_DOWNLOAD is not set
# CT_FORCE_DOWNLOAD is not set
CT_CONNECT_TIMEOUT=10
CT_DOWNLOAD_WGET_OPTIONS="--passive-ftp --tries=3 -nc --progress=dot:binary"
# CT_ONLY_DOWNLOAD is not set
# CT_USE_MIRROR is not set
CT_VERIFY_DOWNLOAD_DIGEST=y
CT_VERIFY_DOWNLOAD_DIGEST_SHA512=y
# CT_VERIFY_DOWNLOAD_DIGEST_SHA256 is not set
# CT_VERIFY_DOWNLOAD_DIGEST_SHA1 is not set
# CT_VERIFY_DOWNLOAD_DIGEST_MD5 is not set
CT_VERIFY_DOWNLOAD_DIGEST_ALG="sha512"
# CT_VERIFY_DOWNLOAD_SIGNATURE is not set
# CT_FORCE_EXTRACT is not set
CT_OVERRIDE_CONFIG_GUESS_SUB=y
# CT_ONLY_EXTRACT is not set
CT_PATCH_BUNDLED=y
# CT_PATCH_LOCAL is not set
# CT_PATCH_BUNDLED_LOCAL is not set
# CT_PATCH_LOCAL_BUNDLED is not set
# CT_PATCH_NONE is not set
CT_PATCH_ORDER="bundled"
CT_PARALLEL_JOBS=0
CT_LOAD=""
CT_USE_PIPES=y
CT_EXTRA_CFLAGS_FOR_BUILD=""
CT_EXTRA_LDFLAGS_FOR_BUILD=""
CT_EXTRA_CFLAGS_FOR_HOST=""
CT_EXTRA_LDFLAGS_FOR_HOST=""
# CT_CONFIG_SHELL_SH is not set
# CT_CONFIG_SHELL_ASH is not set
CT_CONFIG_SHELL_BASH=y
# CT_CONFIG_SHELL_CUSTOM is not set
CT_CONFIG_SHELL="${bash}"
# CT_LOG_ERROR is not set
# CT_LOG_WARN is not set
# CT_LOG_INFO is not set
CT_LOG_EXTRA=y
# CT_LOG_ALL is not set
# CT_LOG_DEBUG is not set
CT_LOG_LEVEL_MAX="EXTRA"
# CT_LOG_SEE_TOOLS_WARN is not set
CT_LOG_PROGRESS_BAR=y
CT_LOG_TO_FILE=y
CT_LOG_FILE_COMPRESS=y
# CT_ARCH_ALPHA is not set
# CT_ARCH_ARC is not set
# CT_ARCH_ARM is not set
# CT_ARCH_AVR is not set
# CT_ARCH_M68K is not set
# CT_ARCH_MICROBLAZE is not set
CT_ARCH_MIPS=y
# CT_ARCH_MOXIE is not set
# CT_ARCH_MSP430 is not set
# CT_ARCH_NIOS2 is not set
# CT_ARCH_POWERPC is not set
# CT_ARCH_RISCV is not set
# CT_ARCH_S390 is not set
# CT_ARCH_SH is not set
# CT_ARCH_SPARC is not set
# CT_ARCH_X86 is not set
# CT_ARCH_XTENSA is not set
CT_ARCH="mips"
CT_ARCH_CHOICE_KSYM="MIPS"
CT_ARCH_TUNE=""
CT_ARCH_MIPS_SHOW=y
CT_ARCH_MIPS_PKG_KSYM=""
CT_ARCH_mips_o32=y
CT_ARCH_mips_ABI="32"
CT_ALL_ARCH_CHOICES="ALPHA ARC ARM AVR M68K MICROBLAZE MIPS MOXIE MSP430 NIOS2 POWERPC RISCV S390 SH SPARC X86 XTENSA"
CT_ARCH_SUFFIX=""
# CT_OMIT_TARGET_VENDOR is not set
# CT_MULTILIB is not set
CT_DEMULTILIB=y
CT_ARCH_USE_MMU=y
CT_ARCH_SUPPORTS_EITHER_ENDIAN=y
CT_ARCH_DEFAULT_BE=y
CT_ARCH_BE=y
# CT_ARCH_LE is not set
CT_ARCH_ENDIAN="big"
CT_ARCH_SUPPORTS_32=y
CT_ARCH_SUPPORTS_64=y
CT_ARCH_DEFAULT_32=y
CT_ARCH_BITNESS=32
CT_ARCH_32=y
# CT_ARCH_64 is not set
CT_ARCH_SUPPORTS_WITH_ARCH=y
CT_ARCH_SUPPORTS_WITH_TUNE=y
CT_ARCH_SUPPORTS_WITH_FLOAT=y
CT_ARCH_ARCH="mips1"
# CT_ARCH_FLOAT_AUTO is not set
# CT_ARCH_FLOAT_HW is not set
CT_ARCH_FLOAT_SW=y
CT_TARGET_CFLAGS=""
CT_TARGET_LDFLAGS=""
CT_ARCH_FLOAT="soft"
CT_FORCE_SYSROOT=y
CT_USE_SYSROOT=y
CT_SYSROOT_NAME="sysroot"
CT_SYSROOT_DIR_PREFIX=""
CT_WANTS_STATIC_LINK=y
CT_WANTS_STATIC_LINK_CXX=y
# CT_STATIC_TOOLCHAIN is not set
CT_SHOW_CT_VERSION=y
CT_TOOLCHAIN_PKGVERSION=""
CT_TOOLCHAIN_BUGURL=""
CT_TARGET_VENDOR="fritzos"
CT_TARGET_ALIAS_SED_EXPR=""
CT_TARGET_ALIAS=""
# CT_NATIVE is not set
CT_CROSS=y
# CT_CROSS_NATIVE is not set
# CT_CANADIAN is not set
CT_TOOLCHAIN_TYPE="cross"
CT_BUILD=""
CT_BUILD_PREFIX=""
CT_BUILD_SUFFIX=""
# CT_TOOLCHAIN_ENABLE_NLS is not set
CT_KERNEL_SUPPORTS_SHARED_LIBS=y
# CT_KERNEL_BARE_METAL is not set
CT_KERNEL_LINUX=y
CT_KERNEL="linux"
CT_KERNEL_CHOICE_KSYM="LINUX"
CT_KERNEL_LINUX_SHOW=y
CT_KERNEL_LINUX_PKG_KSYM="LINUX"
CT_LINUX_DIR_NAME="linux"
CT_LINUX_PKG_NAME="linux"
CT_LINUX_SRC_RELEASE=y
# CT_LINUX_SRC_DEVEL is not set
# CT_LINUX_SRC_CUSTOM is not set
CT_LINUX_PATCH_GLOBAL=y
# CT_LINUX_PATCH_BUNDLED is not set
# CT_LINUX_PATCH_LOCAL is not set
# CT_LINUX_PATCH_BUNDLED_LOCAL is not set
# CT_LINUX_PATCH_LOCAL_BUNDLED is not set
# CT_LINUX_PATCH_NONE is not set
CT_LINUX_PATCH_ORDER="global"
CT_LINUX_V_5_5=y
# CT_LINUX_V_5_4 is not set
# CT_LINUX_V_5_3 is not set
# CT_LINUX_V_5_2 is not set
# CT_LINUX_V_5_1 is not set
# CT_LINUX_V_5_0 is not set
# CT_LINUX_V_4_20 is not set
# CT_LINUX_V_4_19 is not set
# CT_LINUX_V_4_18 is not set
# CT_LINUX_V_4_17 is not set
# CT_LINUX_V_4_16 is not set
# CT_LINUX_V_4_15 is not set
# CT_LINUX_V_4_14 is not set
# CT_LINUX_V_4_13 is not set
# CT_LINUX_V_4_12 is not set
# CT_LINUX_V_4_11 is not set
# CT_LINUX_V_4_10 is not set
# CT_LINUX_V_4_9 is not set
# CT_LINUX_V_4_4 is not set
# CT_LINUX_V_4_1 is not set
# CT_LINUX_V_3_16 is not set
# CT_LINUX_V_3_13 is not set
# CT_LINUX_V_3_12 is not set
# CT_LINUX_V_3_10 is not set
# CT_LINUX_V_3_4 is not set
# CT_LINUX_V_3_2 is not set
# CT_LINUX_V_2_6_32 is not set
# CT_LINUX_NO_VERSIONS is not set
CT_LINUX_VERSION="5.5.5"
CT_LINUX_MIRRORS="$(CT_Mirrors kernel.org linux ${CT_LINUX_VERSION})"
CT_LINUX_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_LINUX_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_LINUX_ARCHIVE_FORMATS=".tar.xz .tar.gz"
CT_LINUX_SIGNATURE_FORMAT="unpacked/.sign"
CT_LINUX_later_than_4_8=y
CT_LINUX_4_8_or_later=y
CT_LINUX_later_than_3_7=y
CT_LINUX_3_7_or_later=y
CT_LINUX_later_than_3_2=y
CT_LINUX_3_2_or_later=y
CT_KERNEL_LINUX_VERBOSITY_0=y
# CT_KERNEL_LINUX_VERBOSITY_1 is not set
# CT_KERNEL_LINUX_VERBOSITY_2 is not set
CT_KERNEL_LINUX_VERBOSE_LEVEL=0
CT_KERNEL_LINUX_INSTALL_CHECK=y
CT_ALL_KERNEL_CHOICES="BARE_METAL LINUX WINDOWS"
CT_SHARED_LIBS=y
CT_ARCH_BINFMT_ELF=y
CT_BINUTILS_BINUTILS=y
CT_BINUTILS="binutils"
CT_BINUTILS_CHOICE_KSYM="BINUTILS"
CT_BINUTILS_BINUTILS_SHOW=y
CT_BINUTILS_BINUTILS_PKG_KSYM="BINUTILS"
CT_BINUTILS_DIR_NAME="binutils"
CT_BINUTILS_USE_GNU=y
CT_BINUTILS_USE="BINUTILS"
CT_BINUTILS_PKG_NAME="binutils"
CT_BINUTILS_SRC_RELEASE=y
# CT_BINUTILS_SRC_DEVEL is not set
# CT_BINUTILS_SRC_CUSTOM is not set
CT_BINUTILS_PATCH_GLOBAL=y
# CT_BINUTILS_PATCH_BUNDLED is not set
# CT_BINUTILS_PATCH_LOCAL is not set
# CT_BINUTILS_PATCH_BUNDLED_LOCAL is not set
# CT_BINUTILS_PATCH_LOCAL_BUNDLED is not set
# CT_BINUTILS_PATCH_NONE is not set
CT_BINUTILS_PATCH_ORDER="global"
# CT_BINUTILS_V_2_34 is not set
CT_BINUTILS_V_2_33=y
# CT_BINUTILS_V_2_32 is not set
# CT_BINUTILS_V_2_31 is not set
# CT_BINUTILS_V_2_30 is not set
# CT_BINUTILS_V_2_29 is not set
# CT_BINUTILS_V_2_28 is not set
# CT_BINUTILS_V_2_27 is not set
# CT_BINUTILS_V_2_26 is not set
# CT_BINUTILS_NO_VERSIONS is not set
CT_BINUTILS_VERSION="2.33.1"
CT_BINUTILS_MIRRORS="$(CT_Mirrors GNU binutils) $(CT_Mirrors sourceware binutils/releases)"
CT_BINUTILS_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_BINUTILS_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_BINUTILS_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz"
CT_BINUTILS_SIGNATURE_FORMAT="packed/.sig"
CT_BINUTILS_later_than_2_30=y
CT_BINUTILS_2_30_or_later=y
CT_BINUTILS_later_than_2_27=y
CT_BINUTILS_2_27_or_later=y
CT_BINUTILS_later_than_2_25=y
CT_BINUTILS_2_25_or_later=y
CT_BINUTILS_later_than_2_23=y
CT_BINUTILS_2_23_or_later=y
CT_BINUTILS_HAS_HASH_STYLE=y
CT_BINUTILS_HAS_GOLD=y
CT_BINUTILS_HAS_PLUGINS=y
CT_BINUTILS_HAS_PKGVERSION_BUGURL=y
CT_BINUTILS_LINKER_LD=y
CT_BINUTILS_LINKERS_LIST="ld"
CT_BINUTILS_LINKER_DEFAULT="bfd"
CT_BINUTILS_PLUGINS=y
CT_BINUTILS_RELRO=m
CT_BINUTILS_DETERMINISTIC_ARCHIVES=y
CT_BINUTILS_EXTRA_CONFIG_ARRAY=""
CT_BINUTILS_FOR_TARGET=y
CT_BINUTILS_FOR_TARGET_IBERTY=y
CT_BINUTILS_FOR_TARGET_BFD=y
CT_ALL_BINUTILS_CHOICES="BINUTILS"
# CT_LIBC_BIONIC is not set
# CT_LIBC_GLIBC is not set
CT_LIBC_MUSL=y
# CT_LIBC_UCLIBC is not set
CT_LIBC="musl"
CT_LIBC_CHOICE_KSYM="MUSL"
CT_THREADS="musl"
CT_LIBC_MUSL_SHOW=y
CT_LIBC_MUSL_PKG_KSYM="MUSL"
CT_MUSL_DIR_NAME="musl"
CT_MUSL_PKG_NAME="musl"
CT_MUSL_SRC_RELEASE=y
# CT_MUSL_SRC_DEVEL is not set
# CT_MUSL_SRC_CUSTOM is not set
CT_MUSL_PATCH_GLOBAL=y
# CT_MUSL_PATCH_BUNDLED is not set
# CT_MUSL_PATCH_LOCAL is not set
# CT_MUSL_PATCH_BUNDLED_LOCAL is not set
# CT_MUSL_PATCH_LOCAL_BUNDLED is not set
# CT_MUSL_PATCH_NONE is not set
CT_MUSL_PATCH_ORDER="global"
# CT_MUSL_V_1_1_24 is not set
CT_MUSL_V_1_1_23=y
# CT_MUSL_V_1_1_22 is not set
# CT_MUSL_V_1_1_21 is not set
# CT_MUSL_V_1_1_20 is not set
# CT_MUSL_V_1_1_19 is not set
# CT_MUSL_V_1_1_18 is not set
# CT_MUSL_V_1_1_17 is not set
# CT_MUSL_V_1_1_16 is not set
# CT_MUSL_NO_VERSIONS is not set
CT_MUSL_VERSION="1.1.23"
CT_MUSL_MIRRORS="http://www.musl-libc.org/releases"
CT_MUSL_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_MUSL_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_MUSL_ARCHIVE_FORMATS=".tar.gz"
CT_MUSL_SIGNATURE_FORMAT="packed/.asc"
# CT_LIBC_MUSL_DEBUG is not set
# CT_LIBC_MUSL_WARNINGS is not set
# CT_LIBC_MUSL_OPTIMIZE_NONE is not set
CT_LIBC_MUSL_OPTIMIZE_AUTO=y
# CT_LIBC_MUSL_OPTIMIZE_SPEED is not set
# CT_LIBC_MUSL_OPTIMIZE_SIZE is not set
CT_LIBC_MUSL_OPTIMIZE="auto"
CT_ALL_LIBC_CHOICES="AVR_LIBC BIONIC GLIBC MINGW_W64 MOXIEBOX MUSL NEWLIB NONE UCLIBC"
CT_LIBC_SUPPORT_THREADS_ANY=y
CT_LIBC_SUPPORT_THREADS_NATIVE=y
CT_THREADS_NATIVE=y
# CT_CREATE_LDSO_CONF is not set
CT_LIBC_XLDD=y
CT_CC_CORE_PASSES_NEEDED=y
CT_CC_CORE_PASS_1_NEEDED=y
CT_CC_CORE_PASS_2_NEEDED=y
CT_CC_SUPPORT_CXX=y
CT_CC_SUPPORT_FORTRAN=y
CT_CC_SUPPORT_ADA=y
CT_CC_SUPPORT_OBJC=y
CT_CC_SUPPORT_OBJCXX=y
CT_CC_SUPPORT_GOLANG=y
CT_CC_GCC=y
CT_CC="gcc"
CT_CC_CHOICE_KSYM="GCC"
CT_CC_GCC_SHOW=y
CT_CC_GCC_PKG_KSYM="GCC"
CT_GCC_DIR_NAME="gcc"
CT_GCC_USE_GNU=y
# CT_GCC_USE_LINARO is not set
CT_GCC_USE="GCC"
CT_GCC_PKG_NAME="gcc"
CT_GCC_SRC_RELEASE=y
# CT_GCC_SRC_DEVEL is not set
# CT_GCC_SRC_CUSTOM is not set
CT_GCC_PATCH_GLOBAL=y
# CT_GCC_PATCH_BUNDLED is not set
# CT_GCC_PATCH_LOCAL is not set
# CT_GCC_PATCH_BUNDLED_LOCAL is not set
# CT_GCC_PATCH_LOCAL_BUNDLED is not set
# CT_GCC_PATCH_NONE is not set
CT_GCC_PATCH_ORDER="global"
CT_GCC_V_9=y
# CT_GCC_V_8 is not set
# CT_GCC_V_7 is not set
# CT_GCC_V_6 is not set
# CT_GCC_V_5 is not set
# CT_GCC_V_4_9 is not set
# CT_GCC_NO_VERSIONS is not set
CT_GCC_VERSION="9.2.0"
CT_GCC_MIRRORS="$(CT_Mirrors GNU gcc/gcc-${CT_GCC_VERSION}) $(CT_Mirrors sourceware gcc/releases/gcc-${CT_GCC_VERSION})"
CT_GCC_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_GCC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_GCC_ARCHIVE_FORMATS=".tar.xz .tar.gz"
CT_GCC_SIGNATURE_FORMAT=""
CT_GCC_later_than_8=y
CT_GCC_8_or_later=y
CT_GCC_later_than_7=y
CT_GCC_7_or_later=y
CT_GCC_later_than_6=y
CT_GCC_6_or_later=y
CT_GCC_later_than_5=y
CT_GCC_5_or_later=y
CT_GCC_later_than_4_9=y
CT_GCC_4_9_or_later=y
CT_GCC_later_than_4_8=y
CT_GCC_4_8_or_later=y
CT_CC_GCC_ENABLE_PLUGINS=y
CT_CC_GCC_HAS_LIBMPX=y
CT_CC_GCC_ENABLE_CXX_FLAGS=""
CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY=""
CT_CC_GCC_EXTRA_CONFIG_ARRAY=""
CT_CC_GCC_STATIC_LIBSTDCXX=y
# CT_CC_GCC_SYSTEM_ZLIB is not set
CT_CC_GCC_CONFIG_TLS=m
CT_CC_GCC_USE_GRAPHITE=y
CT_CC_GCC_USE_LTO=y
CT_CC_GCC_ENABLE_TARGET_OPTSPACE=y
# CT_CC_GCC_LIBMUDFLAP is not set
# CT_CC_GCC_LIBGOMP is not set
# CT_CC_GCC_LIBSSP is not set
# CT_CC_GCC_LIBQUADMATH is not set
CT_CC_CXA_ATEXIT=y
# CT_CC_GCC_DISABLE_PCH is not set
CT_CC_GCC_SJLJ_EXCEPTIONS=m
CT_CC_GCC_LDBL_128=m
# CT_CC_GCC_BUILD_ID is not set
CT_CC_GCC_LNK_HASH_STYLE_DEFAULT=y
# CT_CC_GCC_LNK_HASH_STYLE_SYSV is not set
# CT_CC_GCC_LNK_HASH_STYLE_GNU is not set
# CT_CC_GCC_LNK_HASH_STYLE_BOTH is not set
CT_CC_GCC_LNK_HASH_STYLE=""
CT_CC_GCC_DEC_FLOAT_AUTO=y
# CT_CC_GCC_DEC_FLOAT_BID is not set
# CT_CC_GCC_DEC_FLOAT_DPD is not set
# CT_CC_GCC_DEC_FLOATS_NO is not set
CT_CC_GCC_HAS_ARCH_OPTIONS=y
CT_CC_GCC_mips_llsc=m
CT_CC_GCC_mips_synci=m
CT_CC_GCC_mips_plt=y
CT_ALL_CC_CHOICES="GCC"
CT_CC_LANG_CXX=y
# CT_CC_LANG_FORTRAN is not set
# CT_CC_LANG_ADA is not set
# CT_CC_LANG_OBJC is not set
# CT_CC_LANG_OBJCXX is not set
# CT_CC_LANG_GOLANG is not set
CT_CC_LANG_OTHERS=""
# CT_DEBUG_DUMA is not set
# CT_DEBUG_GDB is not set
# CT_DEBUG_LTRACE is not set
# CT_DEBUG_STRACE is not set
CT_ALL_DEBUG_CHOICES="DUMA GDB LTRACE STRACE"
# CT_COMPLIBS_CHECK is not set
# CT_COMP_LIBS_CLOOG is not set
CT_COMP_LIBS_EXPAT=y
CT_COMP_LIBS_EXPAT_PKG_KSYM="EXPAT"
CT_EXPAT_DIR_NAME="expat"
CT_EXPAT_PKG_NAME="expat"
CT_EXPAT_SRC_RELEASE=y
# CT_EXPAT_SRC_DEVEL is not set
# CT_EXPAT_SRC_CUSTOM is not set
CT_EXPAT_PATCH_GLOBAL=y
# CT_EXPAT_PATCH_BUNDLED is not set
# CT_EXPAT_PATCH_LOCAL is not set
# CT_EXPAT_PATCH_BUNDLED_LOCAL is not set
# CT_EXPAT_PATCH_LOCAL_BUNDLED is not set
# CT_EXPAT_PATCH_NONE is not set
CT_EXPAT_PATCH_ORDER="global"
CT_EXPAT_V_2_2=y
# CT_EXPAT_NO_VERSIONS is not set
CT_EXPAT_VERSION="2.2.9"
CT_EXPAT_MIRRORS="http://downloads.sourceforge.net/project/expat/expat/${CT_EXPAT_VERSION}"
CT_EXPAT_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_EXPAT_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_EXPAT_ARCHIVE_FORMATS=".tar.xz .tar.lz .tar.bz2 .tar.gz"
CT_EXPAT_SIGNATURE_FORMAT=""
# CT_COMP_LIBS_GETTEXT is not set
CT_COMP_LIBS_GMP=y
CT_COMP_LIBS_GMP_PKG_KSYM="GMP"
CT_GMP_DIR_NAME="gmp"
CT_GMP_PKG_NAME="gmp"
CT_GMP_SRC_RELEASE=y
# CT_GMP_SRC_DEVEL is not set
# CT_GMP_SRC_CUSTOM is not set
CT_GMP_PATCH_GLOBAL=y
# CT_GMP_PATCH_BUNDLED is not set
# CT_GMP_PATCH_LOCAL is not set
# CT_GMP_PATCH_BUNDLED_LOCAL is not set
# CT_GMP_PATCH_LOCAL_BUNDLED is not set
# CT_GMP_PATCH_NONE is not set
CT_GMP_PATCH_ORDER="global"
CT_GMP_V_6_2=y
# CT_GMP_V_6_1 is not set
# CT_GMP_NO_VERSIONS is not set
CT_GMP_VERSION="6.2.0"
CT_GMP_MIRRORS="https://gmplib.org/download/gmp https://gmplib.org/download/gmp/archive $(CT_Mirrors GNU gmp)"
CT_GMP_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_GMP_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_GMP_ARCHIVE_FORMATS=".tar.xz .tar.lz .tar.bz2"
CT_GMP_SIGNATURE_FORMAT="packed/.sig"
CT_GMP_later_than_5_1_0=y
CT_GMP_5_1_0_or_later=y
CT_GMP_later_than_5_0_0=y
CT_GMP_5_0_0_or_later=y
CT_GMP_REQUIRE_5_0_0_or_later=y
CT_COMP_LIBS_ISL=y
CT_COMP_LIBS_ISL_PKG_KSYM="ISL"
CT_ISL_DIR_NAME="isl"
CT_ISL_PKG_NAME="isl"
CT_ISL_SRC_RELEASE=y
# CT_ISL_SRC_DEVEL is not set
# CT_ISL_SRC_CUSTOM is not set
CT_ISL_PATCH_GLOBAL=y
# CT_ISL_PATCH_BUNDLED is not set
# CT_ISL_PATCH_LOCAL is not set
# CT_ISL_PATCH_BUNDLED_LOCAL is not set
# CT_ISL_PATCH_LOCAL_BUNDLED is not set
# CT_ISL_PATCH_NONE is not set
CT_ISL_PATCH_ORDER="global"
CT_ISL_V_0_22=y
# CT_ISL_V_0_21 is not set
# CT_ISL_V_0_20 is not set
# CT_ISL_V_0_19 is not set
# CT_ISL_V_0_18 is not set
# CT_ISL_V_0_17 is not set
# CT_ISL_V_0_16 is not set
# CT_ISL_V_0_15 is not set
# CT_ISL_NO_VERSIONS is not set
CT_ISL_VERSION="0.22"
CT_ISL_MIRRORS="http://isl.gforge.inria.fr"
CT_ISL_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ISL_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ISL_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz"
CT_ISL_SIGNATURE_FORMAT=""
CT_ISL_later_than_0_18=y
CT_ISL_0_18_or_later=y
CT_ISL_later_than_0_15=y
CT_ISL_0_15_or_later=y
CT_ISL_REQUIRE_0_15_or_later=y
CT_ISL_later_than_0_14=y
CT_ISL_0_14_or_later=y
CT_ISL_REQUIRE_0_14_or_later=y
CT_ISL_later_than_0_13=y
CT_ISL_0_13_or_later=y
CT_ISL_later_than_0_12=y
CT_ISL_0_12_or_later=y
CT_ISL_REQUIRE_0_12_or_later=y
CT_COMP_LIBS_LIBELF=y
CT_COMP_LIBS_LIBELF_PKG_KSYM="LIBELF"
CT_LIBELF_DIR_NAME="libelf"
CT_LIBELF_PKG_NAME="libelf"
CT_LIBELF_SRC_RELEASE=y
# CT_LIBELF_SRC_DEVEL is not set
# CT_LIBELF_SRC_CUSTOM is not set
CT_LIBELF_PATCH_GLOBAL=y
# CT_LIBELF_PATCH_BUNDLED is not set
# CT_LIBELF_PATCH_LOCAL is not set
# CT_LIBELF_PATCH_BUNDLED_LOCAL is not set
# CT_LIBELF_PATCH_LOCAL_BUNDLED is not set
# CT_LIBELF_PATCH_NONE is not set
CT_LIBELF_PATCH_ORDER="global"
CT_LIBELF_V_0_8=y
# CT_LIBELF_NO_VERSIONS is not set
CT_LIBELF_VERSION="0.8.13"
CT_LIBELF_MIRRORS="http://www.mr511.de/software https://fossies.org/linux/misc/old"
CT_LIBELF_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_LIBELF_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_LIBELF_ARCHIVE_FORMATS=".tar.gz"
CT_LIBELF_SIGNATURE_FORMAT=""
# CT_COMP_LIBS_LIBICONV is not set
CT_COMP_LIBS_MPC=y
CT_COMP_LIBS_MPC_PKG_KSYM="MPC"
CT_MPC_DIR_NAME="mpc"
CT_MPC_PKG_NAME="mpc"
CT_MPC_SRC_RELEASE=y
# CT_MPC_SRC_DEVEL is not set
# CT_MPC_SRC_CUSTOM is not set
CT_MPC_PATCH_GLOBAL=y
# CT_MPC_PATCH_BUNDLED is not set
# CT_MPC_PATCH_LOCAL is not set
# CT_MPC_PATCH_BUNDLED_LOCAL is not set
# CT_MPC_PATCH_LOCAL_BUNDLED is not set
# CT_MPC_PATCH_NONE is not set
CT_MPC_PATCH_ORDER="global"
CT_MPC_V_1_1=y
# CT_MPC_V_1_0 is not set
# CT_MPC_NO_VERSIONS is not set
CT_MPC_VERSION="1.1.0"
CT_MPC_MIRRORS="http://www.multiprecision.org/downloads $(CT_Mirrors GNU mpc)"
CT_MPC_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_MPC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_MPC_ARCHIVE_FORMATS=".tar.gz"
CT_MPC_SIGNATURE_FORMAT="packed/.sig"
CT_MPC_1_1_0_or_later=y
CT_MPC_1_1_0_or_older=y
CT_COMP_LIBS_MPFR=y
CT_COMP_LIBS_MPFR_PKG_KSYM="MPFR"
CT_MPFR_DIR_NAME="mpfr"
CT_MPFR_PKG_NAME="mpfr"
CT_MPFR_SRC_RELEASE=y
# CT_MPFR_SRC_DEVEL is not set
# CT_MPFR_SRC_CUSTOM is not set
CT_MPFR_PATCH_GLOBAL=y
# CT_MPFR_PATCH_BUNDLED is not set
# CT_MPFR_PATCH_LOCAL is not set
# CT_MPFR_PATCH_BUNDLED_LOCAL is not set
# CT_MPFR_PATCH_LOCAL_BUNDLED is not set
# CT_MPFR_PATCH_NONE is not set
CT_MPFR_PATCH_ORDER="global"
CT_MPFR_V_4_0=y
# CT_MPFR_V_3_1 is not set
# CT_MPFR_NO_VERSIONS is not set
CT_MPFR_VERSION="4.0.2"
CT_MPFR_MIRRORS="http://www.mpfr.org/mpfr-${CT_MPFR_VERSION} $(CT_Mirrors GNU mpfr)"
CT_MPFR_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_MPFR_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_MPFR_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz .zip"
CT_MPFR_SIGNATURE_FORMAT="packed/.asc"
CT_MPFR_later_than_4_0_0=y
CT_MPFR_4_0_0_or_later=y
CT_MPFR_later_than_3_0_0=y
CT_MPFR_3_0_0_or_later=y
CT_MPFR_REQUIRE_3_0_0_or_later=y
CT_COMP_LIBS_NCURSES=y
CT_COMP_LIBS_NCURSES_PKG_KSYM="NCURSES"
CT_NCURSES_DIR_NAME="ncurses"
CT_NCURSES_PKG_NAME="ncurses"
CT_NCURSES_SRC_RELEASE=y
# CT_NCURSES_SRC_DEVEL is not set
# CT_NCURSES_SRC_CUSTOM is not set
CT_NCURSES_PATCH_GLOBAL=y
# CT_NCURSES_PATCH_BUNDLED is not set
# CT_NCURSES_PATCH_LOCAL is not set
# CT_NCURSES_PATCH_BUNDLED_LOCAL is not set
# CT_NCURSES_PATCH_LOCAL_BUNDLED is not set
# CT_NCURSES_PATCH_NONE is not set
CT_NCURSES_PATCH_ORDER="global"
CT_NCURSES_V_6_2=y
# CT_NCURSES_V_6_1 is not set
# CT_NCURSES_V_6_0 is not set
# CT_NCURSES_NO_VERSIONS is not set
CT_NCURSES_VERSION="6.2"
CT_NCURSES_MIRRORS="ftp://invisible-island.net/ncurses $(CT_Mirrors GNU ncurses)"
CT_NCURSES_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_NCURSES_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_NCURSES_ARCHIVE_FORMATS=".tar.gz"
CT_NCURSES_SIGNATURE_FORMAT="packed/.sig"
# CT_NCURSES_NEW_ABI is not set
CT_NCURSES_HOST_CONFIG_ARGS=""
CT_NCURSES_HOST_DISABLE_DB=y
CT_NCURSES_HOST_FALLBACKS="linux,xterm,xterm-color,xterm-256color,vt100"
CT_NCURSES_TARGET_CONFIG_ARGS=""
# CT_NCURSES_TARGET_DISABLE_DB is not set
CT_NCURSES_TARGET_FALLBACKS=""
CT_COMP_LIBS_ZLIB=y
CT_COMP_LIBS_ZLIB_PKG_KSYM="ZLIB"
CT_ZLIB_DIR_NAME="zlib"
CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set
# CT_ZLIB_SRC_CUSTOM is not set
CT_ZLIB_PATCH_GLOBAL=y
# CT_ZLIB_PATCH_BUNDLED is not set
# CT_ZLIB_PATCH_LOCAL is not set
# CT_ZLIB_PATCH_BUNDLED_LOCAL is not set
# CT_ZLIB_PATCH_LOCAL_BUNDLED is not set
# CT_ZLIB_PATCH_NONE is not set
CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_11=y
# CT_ZLIB_NO_VERSIONS is not set
CT_ZLIB_VERSION="1.2.11"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
CT_ZLIB_SIGNATURE_FORMAT="packed/.asc"
CT_ALL_COMP_LIBS_CHOICES="CLOOG EXPAT GETTEXT GMP ISL LIBELF LIBICONV MPC MPFR NCURSES ZLIB"
# CT_LIBICONV_NEEDED is not set
# CT_GETTEXT_NEEDED is not set
CT_GMP_NEEDED=y
CT_MPFR_NEEDED=y
CT_ISL_NEEDED=y
CT_MPC_NEEDED=y
CT_ZLIB_NEEDED=y
CT_GMP=y
CT_MPFR=y
CT_ISL=y
CT_MPC=y
CT_ZLIB=y
# CT_COMP_TOOLS_FOR_HOST is not set
# CT_COMP_TOOLS_AUTOCONF is not set
# CT_COMP_TOOLS_AUTOMAKE is not set
# CT_COMP_TOOLS_BISON is not set
# CT_COMP_TOOLS_DTC is not set
# CT_COMP_TOOLS_LIBTOOL is not set
# CT_COMP_TOOLS_M4 is not set
# CT_COMP_TOOLS_MAKE is not set
CT_ALL_COMP_TOOLS_CHOICES="AUTOCONF AUTOMAKE BISON DTC LIBTOOL M4 MAKE"
# CT_TEST_SUITE_GCC is not set

7
support/crosstool/templates/fritzOS-uClibc-69x_mips

@ -0,0 +1,7 @@
#toolchain template: FRITZ!OS uClibc Release 6.9x
FREETZ_USER_LEVEL_EXPERT=y
FREETZ_SHOW_ADVANCED=y
FREETZ_SHOW_EXPERT=y
FREETZ_TYPE_FIRMWARE_06_9X=y
FREETZ_TYPE_FIRMWARE_FINAL=y
FREETZ_BUILD_TOOLCHAIN=y

7
support/crosstool/templates/fritzOS-uClibc-71x_mips

@ -0,0 +1,7 @@
#toolchain template: FRITZ!OS uClibc Release 7.1x
FREETZ_USER_LEVEL_EXPERT=y
FREETZ_SHOW_ADVANCED=y
FREETZ_SHOW_EXPERT=y
FREETZ_TYPE_FIRMWARE_07_1X=y
FREETZ_TYPE_FIRMWARE_FINAL=y
FREETZ_BUILD_TOOLCHAIN=y

356
support/functions/_plugin_update_toolchain

@ -3,13 +3,15 @@
#simplebuild_plugin tcupdate
tcupdate(){
pversion="0.12.9";
pversion="0.13.0";
pname="s3.TUP";
pdesc="Plugin $pname v$pversion";
configname="$configdir/plugin_update_toolchain.config";
ctdir="$sdir/crosstool";
ctsrcdir="$ctdir/source";
ctsrcdir="$ctdir/crosstool-ng";
cttpldir="$ctdir/templates";
fngsrcdir="$ctdir/freetz-ng";
cpus="$(getconf _NPROCESSORS_ONLN)";
CMDTC="$1";
OPTION1="$2";
@ -18,12 +20,13 @@ tcupdate(){
tc="$CMDTC";
#check/install prerequisites
[ -d "$ctdir/source" ] && mv -f "$ctdir/source" "$ctsrcdir"; #rename folder for compatibility with pre 0.13.x releases
clear && _check_pkg;
#backup config
if [ "$CMDTC" == "-r" ] || [ "$CMDTC" == "--reset" ];then
if [ -f "$configname" ];then
if ! _check_github_api_limits 12; then
if ! _check_github_api_limits 12;then
echo -e "$y_l""RESET -> Moving existing config file...""$re_";
bcn="$configname".$(date +"%Y%m%d%H%M%S");
mv "$configname" "$bcn"
@ -64,7 +67,7 @@ tcupdate(){
else
CTNG_START_BUILD=0;
sp=$(printf '%*s' 9);
CTNG_ROOT_BUILD_ERROR="\nERROR -> The execution of crosstool-NG was aborted because it must not run as root!\n\n""$sp""If you are aware of the danger of running crosstool-NG as root and you\n""$sp""know what you are doing, you can force it with the following command:\n\n";
CTNG_ROOT_BUILD_ERROR="\nERROR -> The cross toolchain build process was aborted because it must not run as root!\n\n""$sp""If you are aware of the danger of building toolchains as root and you\n""$sp""know what you are doing, you can force it with the following command:\n\n";
CTNG_ROOT_BUILD_CMD="$sp""./s3 tcupdate --config \"CTNG_BUILD_AS_ROOT\" \"1\"\n";
fi;
@ -91,6 +94,9 @@ tcupdate(){
elif [ "$CMDTC" == "-ctng" ] || [ "$CMDTC" == "--crosstool-ng" ];then #croostool-NG menu
_ctng_menu "$OPTION1";
bye;
elif [ "$CMDTC" == "-fng" ] || [ "$CMDTC" == "--freetz-ng" ];then #croostool-NG menu
_fng_menu "$OPTION1";
bye;
elif [ -z "$CMDTC" ];then
unset menu_close;
while [ ! $menu_close ]
@ -102,8 +108,9 @@ tcupdate(){
if [ "$tcempty" == "0" ];then
for i in "${INST_TCLIST[@]}";do
if [ ! "$i" == "native" ];then
source "$tccfgdir/$i";
[ -f "$tcdir/$i/build.log.bz2" ] && tcdate=" ct-ng."$(date -r "$tcdir/$i/build.log.bz2" "+%F %T") || tcdate="";
source "$tccfgdir/$i" && tcdate="";
[ -f "$tcdir/$i/build.log.bz2" ] && tcdate=" ct-ng."$(date -r "$tcdir/$i/build.log.bz2" "+%F %T");
[ -f "$tcdir/$i/freetz-ng.log.bz2" ] && tcdate=" freetz-ng."$(date -r "$tcdir/$i/freetz-ng.log.bz2" "+%F %T");
MENU_OPTIONS+=("$_toolchainname" "$_description\Z2$tcdate\Zn" "toolchain folder:$tcdir/$i | config file:$tccfgdir/$i");
counter;
fi;
@ -307,18 +314,13 @@ _create_tc(){
case $ret in
0) #Start - Build cross toolchain
#Setup crosstool-NG automatically if not installed
if [ ! -f "$ctsrcdir/ct-ng" ]; then
clear;
echo -e "$r_l""\nCHECK -> crosstool-NG is not setup correctly. Try to fix it automatically...\n""$re_";
_paktc_timer 5;
_ctng_setup "$CTNG_START_BUILD";
fi;
#Setup crosstool-NG and Freetz-NG automatically if not installed
_check_crosstool_setup;
#Build cross toolchains
icount=$(echo $opts | wc -w);i=0;
for tpl in $opts;do
if [ -f "$cttpldir/$tpl" ]; then
if [ -f "$cttpldir/$tpl" ];then
logfile="$ldir/$(date +%F.%H%M%S)_tup_crosstoolchain_"$tpl".log"; ((i++));
@ -327,48 +329,87 @@ _create_tc(){
echo -e "$pdesc - creating cross toolchain log - $(date +"%F %T")" | tee -a "$logfile";
echo -e "$y_l$sp\nbuild ($i/$icount): command list for cross toolchain $tpl:\n$sp" | tee -a "$logfile";
#copy template and patching them
echo "rm \"$ctsrcdir/.config\"* 2>/dev/null;cp --no-preserve=mode,ownership -f \"$cttpldir/$tpl\" \"$ctsrcdir/.config\";" | tee -a "$logfile";
rm "$ctsrcdir/.config"* 2>/dev/null;cp --no-preserve=mode,ownership -f "$cttpldir/$tpl" "$ctsrcdir/.config";
#copy template
[ $(_get_template_type "$cttpldir/$tpl") == "CTNG" ] && tpltargetdir="$ctsrcdir";
[ $(_get_template_type "$cttpldir/$tpl") == "FNG" ] && tpltargetdir="$fngsrcdir";
echo "rm \"$tpltargetdir/.config\"* 2>/dev/null;cp -f \"$cttpldir/$tpl\" \"$tpltargetdir/.config\";" | tee -a "$logfile";
rm "$tpltargetdir/.config"* 2>/dev/null;cp -f "$cttpldir/$tpl" "$tpltargetdir/.config";
#CT_LOCAL_TARBALLS_DIR aka cache folder for downloads
echo "sed -i \"s#.*CT_LOCAL_TARBALLS_DIR=.*#CT_LOCAL_TARBALLS_DIR=\"$dldir\"#g\" \"$ctsrcdir/.config\";" | tee -a "$logfile";
sed -i "s#.*CT_LOCAL_TARBALLS_DIR=.*#CT_LOCAL_TARBALLS_DIR=\"$dldir\"#g" "$ctsrcdir/.config";
#CT_PREFIX_DIR aka folder that contains the final toolchain
echo "sed -i \"s#.*CT_PREFIX_DIR=.*#CT_PREFIX_DIR=\"$tcdir/$tpl\"#g\" \"$ctsrcdir/.config\";" | tee -a "$logfile";
sed -i "s#.*CT_PREFIX_DIR=.*#CT_PREFIX_DIR=\"$tcdir/$tpl\"#g" "$ctsrcdir/.config";
#CT_ALLOW_BUILD_AS_ROOT aka force build as root
_check_root && [ "$CTNG_BUILD_AS_ROOT" == "1" ] && echo "echo -e \"\nCT_EXPERIMENTAL=y\nCT_ALLOW_BUILD_AS_ROOT=y\nCT_ALLOW_BUILD_AS_ROOT_SURE=y\" >>\"$ctsrcdir/.config\";" | tee -a "$logfile";
_check_root && [ "$CTNG_BUILD_AS_ROOT" == "1" ] && echo -e "\nCT_EXPERIMENTAL=y\nCT_ALLOW_BUILD_AS_ROOT=y\nCT_ALLOW_BUILD_AS_ROOT_SURE=y" >>"$ctsrcdir/.config";
#patch template
if [ $(_get_template_type "$cttpldir/$tpl") == "CTNG" ];then
#CT_LOCAL_TARBALLS_DIR aka cache folder for downloads
echo "sed -i \"s#.*CT_LOCAL_TARBALLS_DIR=.*#CT_LOCAL_TARBALLS_DIR=\"$dldir\"#g\" \"$tpltargetdir/.config\";" | tee -a "$logfile";
sed -i "s#.*CT_LOCAL_TARBALLS_DIR=.*#CT_LOCAL_TARBALLS_DIR=\"$dldir\"#g" "$tpltargetdir/.config";
#CT_PREFIX_DIR aka folder that contains the final toolchain
echo "sed -i \"s#.*CT_PREFIX_DIR=.*#CT_PREFIX_DIR=\"$tcdir/$tpl\"#g\" \"$tpltargetdir/.config\";" | tee -a "$logfile";
sed -i "s#.*CT_PREFIX_DIR=.*#CT_PREFIX_DIR=\"$tcdir/$tpl\"#g" "$tpltargetdir/.config";
#CT_PARALLEL_JOBS aka parallel task count for building
echo "echo -e \"\nCT_PARALLEL_JOBS=$cpus\" >>\"$tpltargetdir/.config\";" | tee -a "$logfile";
echo -e "\nCT_PARALLEL_JOBS=$cpus" >>"$tpltargetdir/.config";
#CT_ALLOW_BUILD_AS_ROOT aka force build as root
_check_root && [ "$CTNG_BUILD_AS_ROOT" == "1" ] && echo "echo -e \"\nCT_EXPERIMENTAL=y\nCT_ALLOW_BUILD_AS_ROOT=y\nCT_ALLOW_BUILD_AS_ROOT_SURE=y\" >>\"$tpltargetdir/.config\";" | tee -a "$logfile";
_check_root && [ "$CTNG_BUILD_AS_ROOT" == "1" ] && echo -e "\nCT_EXPERIMENTAL=y\nCT_ALLOW_BUILD_AS_ROOT=y\nCT_ALLOW_BUILD_AS_ROOT_SURE=y" >>"$tpltargetdir/.config";
elif [ $(_get_template_type "$cttpldir/$tpl") == "FNG" ];then
#FREETZ_JLEVEL aka parallel task count for building
echo "echo -e \"\FREETZ_JLEVEL=$cpus\" >>\"$tpltargetdir/.config\";" | tee -a "$logfile";
echo -e "\nFREETZ_JLEVEL=$cpus" >>"$tpltargetdir/.config";
fi;
#run build
bcl=$(printf '%s\n' "${CTNG_BUILD_tasks[@]}");
echo -e "cd \"$ctsrcdir\";\n$(_replace_tokens "$bcl")\n$sp""$re_" | tee -a "$logfile";
[ $(_get_template_type "$cttpldir/$tpl") == "CTNG" ] && bcl=$(printf '%s\n' "${CTNG_BUILD_tasks[@]}");
[ $(_get_template_type "$cttpldir/$tpl") == "FNG" ] && bcl=$(printf '%s\n' "${FNG_BUILD_tasks[@]}");
echo -e "cd \"$tpltargetdir\";\n$(_replace_tokens "$bcl")\n$sp""$re_" | tee -a "$logfile";
sleep 2;
if [ $CTNG_START_BUILD -eq 1 ]; then
cd "$ctsrcdir";
#print out crosstool-NG version
echo -e "$g_l\n$(./ct-ng | grep 'crosstool-NG version' &2>/dev/null | tail -1)\n""$re_" | tee -a "$logfile";
if [ $CTNG_START_BUILD -eq 1 ];then
cd "$tpltargetdir";
#print out crosstool version
[ $(_get_template_type "$cttpldir/$tpl") == "CTNG" ] && echo -e "$g_l\n$(./ct-ng | grep 'crosstool-NG version' &2>/dev/null | tail -1)\n""$re_" | tee -a "$logfile";
[ $(_get_template_type "$cttpldir/$tpl") == "FNG" ] && echo -e "$g_l\n$(tools/freetz-revision 2>&1 | tail -1)\n""$re_" | tee -a "$logfile";
#generate build command list
unset buildtasks;
for task in "${CTNG_BUILD_tasks[@]}";do
task=$(_replace_tokens "$task"); #replace tokens
buildtasks+=("$task");
done;
if [ $(_get_template_type "$cttpldir/$tpl") == "CTNG" ];then
for task in "${CTNG_BUILD_tasks[@]}";do
task=$(_replace_tokens "$task"); #replace tokens
buildtasks+=("$task");
done;
elif [ $(_get_template_type "$cttpldir/$tpl") == "FNG" ];then
[[ ! $(umask) == 0022 ]] && umask 0022;
for task in "${FNG_BUILD_tasks[@]}";do
task=$(_replace_tokens "$task"); #replace tokens
buildtasks+=("$task");
done;
fi;
( eval "${buildtasks[@]}" ) 2>&1;
err=$(grep '\[ERROR\]' "$ctsrcdir/build.log" | wc -l)
#save build.log in logs
cat "$ctsrcdir/build.log" >>"$logfile";
[ $(_get_template_type "$cttpldir/$tpl") == "CTNG" ] && err=$(grep -c '\[ERROR\]' "$tpltargetdir/build.log");
[ $(_get_template_type "$cttpldir/$tpl") == "FNG" ] && err=$(grep 'Error .*' "$logfile" | grep -vc '(ignored)');
if [ ! $err -gt 0 ]; then
#get target from build.log
target=$(sed -n -e '/target = / s/.*\= *//p' "$ctsrcdir/build.log");
#get CT_BUILD_TOP_DIR aka temporary toolchain build directory from build.log and delete it to save disk space
buildtopdir=$(sed -n -e '/CT_BUILD_TOP_DIR=\// s/.*\= *//p' "$ctsrcdir/build.log");
[ -d "$buildtopdir" ] && rm -rf "$buildtopdir" 2>/dev/null;
#save build.log in logs
[ $(_get_template_type "$cttpldir/$tpl") == "CTNG" ] && cat "$tpltargetdir/build.log" >>"$logfile";
if [ ! $err -gt 0 ];then
if [ $(_get_template_type "$cttpldir/$tpl") == "CTNG" ];then
#get target from build.log
target=$(sed -n -e '/target = / s/.*\= *//p' "$tpltargetdir/build.log");
#get CT_BUILD_TOP_DIR aka temporary toolchain build directory from build.log and delete it to save disk space
buildtopdir=$(sed -n -e '/CT_BUILD_TOP_DIR=\// s/.*\= *//p' "$tpltargetdir/build.log");
[ -d "$buildtopdir" ] && rm -rf "$buildtopdir" 2>/dev/null;
elif [ $(_get_template_type "$cttpldir/$tpl") == "FNG" ];then
#get toolchain and target from logfile
btcbindir=$(grep -i '{ PATH=.*kernel.*' "$logfile" | head -n 1 | awk -F':|"' '{print $2}');
btcdir=$(realpath "$btcbindir/../");
target=$(basename "$btcdir");
#copy toolchain folder
rm -rf "$tcdir/$tpl";
cp -rf "$btcdir" "$tcdir/$tpl";
#compress log file
cp -f "$logfile" "$tcdir/$tpl/freetz-ng.log";
bzip2 -zf9 "$tcdir/$tpl/freetz-ng.log";
fi;
#compress toolchain
_compress "$dldir/Toolchain-$tpl.tar.xz" "$tcdir/$tpl" | "$gui" "$st_" "$bt_" "$title_ - \Z0$pdesc\Zn" "--colors" "--title" " -[ Compress cross toolchain $tpl to Toolchain-$tpl.tar.xz ]- " "$pb_" "$_lines" "$_cols";
@ -389,10 +430,12 @@ _create_tc(){
fi;
done;;
1) #Setup - Setup crosstool-NG
_ctng_setup "$CTNG_START_BUILD";;
_ctng_setup "$CTNG_START_BUILD";
_fng_setup "$CTNG_START_BUILD";;
2) #Edit
tpl=$(echo "$opts" | awk '{printf $2}';);
_ctng_menu "$tpl";;
[ $(_get_template_type "$cttpldir/$tpl") == "CTNG" ] && _ctng_menu "$tpl";
[ $(_get_template_type "$cttpldir/$tpl") == "FNG" ] && _fng_menu "$tpl";;
3) #Exit
menu_close="1";
return;;
@ -442,7 +485,7 @@ _build(){
#build error message
error_on_build=$(grep -cw1 Error "$lf");
if [ "$error_on_build" -gt "0" ]; then
if [ "$error_on_build" -gt "0" ];then
echo -e ""$r_l"ERRORS on build found, details:\n$b_l $lf\n$y_l" >$(tty);
_paktc_timer 10;
echo -e "$re_$w_l";
@ -453,7 +496,7 @@ _ctng_menu(){
tc="$1";tpl="$tc";unset configtasks;
if [ -f "$cttpldir/$tpl" ];then #copy the existing template to edit it
cp --no-preserve=mode,ownership -f "$cttpldir/$tpl" "$ctsrcdir/.config"
cp -f "$cttpldir/$tpl" "$ctsrcdir/.config"
elif [ -n "$tpl" ];then #create an empty template
[ -f "$ctsrcdir/.config" ] && rm "$ctsrcdir/.config"* 2>/dev/null;
touch "$ctsrcdir/.config";
@ -469,16 +512,37 @@ _ctng_menu(){
done;
( eval "${configtasks[@]}" ) 2>&1;
};
_fng_menu(){
tc="$1";tpl="$tc";unset configtasks;
if [ -f "$cttpldir/$tpl" ];then #copy the existing template to edit it
cp -f "$cttpldir/$tpl" "$fngsrcdir/.config"
elif [ -n "$tpl" ];then #create an empty template
[ -f "$fngsrcdir/.config" ] && rm "$fngsrcdir/.config"* 2>/dev/null;
touch "$fngsrcdir/.config";
else #use existing (self copied) template
[ ! -f "$fngsrcdir/.config" ] && touch "$fngsrcdir/.config";
tc="_test$(( $RANDOM % 100 ))";tpl="$tc";
fi;
cd "$fngsrcdir";
for task in "${FNG_CONFIG_tasks[@]}";do
task=$(_replace_tokens "$task"); #replace tokens
configtasks+=("$task");
done;
( eval "${configtasks[@]}" ) 2>&1;
};
_ctng_setup(){
logfile="$ldir/$(date +%F.%H%M%S)_tup_ctng_setup.log"
logfile="$ldir/$(date +%F.%H%M%S)_tup_ctng_setup.log";
unset setuptasks;
(
bcl=$(printf '%s\n' "${CTNG_SETUP_tasks[@]}");
sp=$(printf '%*s' 80 | tr ' ' '=')
echo -e "$pdesc - installing ctng log - $(date +"%F %T")";
echo -e "$pdesc - installing crosstool-ng log - $(date +"%F %T")";
echo -e "$sp\nbuild command list for crosstool-NG:\n$sp\ncd "$ctsrcdir"\n$(_replace_tokens "$bcl")\n$sp";
sleep 2;
if [ $1 -eq 1 ]; then
if [ $1 -eq 1 ];then
# setup crosstool wc
echo "Cleanup source directory "$ctsrcdir/"..."
rm -rf "$ctsrcdir" 2>/dev/null;
@ -496,6 +560,35 @@ _ctng_setup(){
fi;
) | tee "$logfile" | "$gui" "$st_" "$bt_" "$title_ - \Z0$pdesc\Zn" "--colors" "--title" " -[ Setup crosstool-NG ]- " "$pb_" "$_lines" "$_cols";
};
_fng_setup(){
logfile="$ldir/$(date +%F.%H%M%S)_tup_fng_setup.log";
unset setuptasks;
(
bcl=$(printf '%s\n' "${FNG_SETUP_tasks[@]}");
sp=$(printf '%*s' 80 | tr ' ' '=')
echo -e "$pdesc - installing freetz-ng log - $(date +"%F %T")";
echo -e "$sp\nbuild command list for Freetz-NG:\n$sp\ncd "$fngsrcdir"\n$(_replace_tokens "$bcl")\n$sp";
sleep 2;
if [ $1 -eq 1 ];then
# setup freetz-ng wc
echo "Cleanup source directory "$fngsrcdir/"..."
rm -rf "$fngsrcdir" 2>/dev/null;
mkdir --parents "$fngsrcdir";
cd "$fngsrcdir";
[[ ! $(umask) == 0022 ]] && umask 0022;
#generate setup command list
for task in "${FNG_SETUP_tasks[@]}";do
task=$(_replace_tokens "$task"); #replace tokens
setuptasks+=("$task");
done
( eval "${setuptasks[@]}" ) 2>&1;
else
echo -e "$CTNG_ROOT_BUILD_ERROR$CTNG_ROOT_BUILD_CMD";
sleep 5;
fi;
) | tee "$logfile" | "$gui" "$st_" "$bt_" "$title_ - \Z0$pdesc\Zn" "--colors" "--title" " -[ Setup Freetz-NG ]- " "$pb_" "$_lines" "$_cols";
};
_dl(){
[ -d "$dldir/#tmp" ] && rm --recursive --force "$dldir/#tmp"
mkdir --parents "$dldir/#tmp";
@ -529,7 +622,7 @@ _extract(){
c='';
e=1;
if [[ ! -r $i ]]; then
if [[ ! -r $i ]];then
echo "$0: file is unreadable: \`$i'" >&2;
continue;
fi
@ -570,6 +663,7 @@ _replace_tokens(){
s#@PREFIX@#$prefixdir#g; \
s#@HOST@#$hostname#g; \
s#@CTNGSOURCE@#$ctsrcdir#g; \
s#@FNGSOURCE@#$fngsrcdir#g; \
s#@VALIDATE@#_check_lib#g; \
s#@COMPRESS@#_compress#g; \
s#@CREATECFG@#_create_toolchaincfg#g; \
@ -586,42 +680,73 @@ _tidy_tasks(){
_get_template_properties(){
desc="";
if [ -f "$1" ];then
if [ -z "$2" ]; then
if [ -z "$2" ];then
desc=$(sed -n -e '/#toolchain template/ s/.*\: *//p' "$1" | awk -F'(' '{print $1}' | xargs);
else
desc="$2";
fi;
[ -z "$desc" ] && desc="missing description";
#extract template properties
arch=$(grep '^CT_ARCH=' "$1" | awk -F'"' '{print $2}');
endian=$(grep '^CT_ARCH_ENDIAN=' "$1" | awk -F'"' '{print $2}');
end=${endian^};
bitness=$(grep '^CT_ARCH_BITNESS=' "$1" | awk -F'=' '{print $2}');
[ "$arch" == "arm" ] && [ "$bitness" == "64" ] && arch="aarch64";
cpu=$(grep '^CT_ARCH_CPU=' "$1" | awk -F'"' '{print $2}') && [ -n "$cpu" ] && cpu=" $cpu";
aarch=$(grep '^CT_ARCH_ARCH=' "$1" | awk -F'"' '{print $2}') && [ -n "$aarch" ] && aarch=" $aarch";
cc=$(grep '^CT_CC=' "$1" | awk -F'"' '{print $2}');
ccv=$(grep -i "CT_${cc}_VERSION=" "$1" | awk -F'"' '{print $2}');
libc=$(grep '^CT_LIBC=' "$1" | awk -F'"' '{print $2}');
libcu=$(grep -i "^CT_${libc}_USE=" "$1" | awk -F'"' '{print $2}');
[ -n "$libcu" ] && libcv=$(grep -i "CT_${libcu}_VERSION=" "$1" | awk -F'"' '{print $2}');
[ -z "$libcu" ] && libcv=$(grep -i "CT_${libc}_VERSION=" "$1" | awk -F'"' '{print $2}');
kernel=$(grep '^CT_KERNEL=' "$1" | awk -F'"' '{print $2}');
kernelv=$(grep -i "CT_${kernel}_VERSION=" "$1" | awk -F'"' '{print $2}');
if [ $(_get_template_type "$1") == "CTNG" ];then
arch=$(grep '^CT_ARCH=' "$1" | awk -F'"' '{print $2}');
endian=$(grep '^CT_ARCH_ENDIAN=' "$1" | awk -F'"' '{print $2}');
end=${endian^};
bitness=$(grep '^CT_ARCH_BITNESS=' "$1" | awk -F'=' '{print $2}');
[ "$arch" == "arm" ] && [ "$bitness" == "64" ] && arch="aarch64";
cpu=$(grep '^CT_ARCH_CPU=' "$1" | awk -F'"' '{print $2}') && [ -n "$cpu" ] && cpu=" $cpu";
aarch=$(grep '^CT_ARCH_ARCH=' "$1" | awk -F'"' '{print $2}') && [ -n "$aarch" ] && aarch=" $aarch";
cc=$(grep '^CT_CC=' "$1" | awk -F'"' '{print $2}');
ccv=$(grep -i "CT_${cc}_VERSION=" "$1" | awk -F'"' '{print $2}');
libc=$(grep '^CT_LIBC=' "$1" | awk -F'"' '{print $2}');
libcu=$(grep -i "^CT_${libc}_USE=" "$1" | awk -F'"' '{print $2}');
[ -n "$libcu" ] && libcv=$(grep -i "CT_${libcu}_VERSION=" "$1" | awk -F'"' '{print $2}');
[ -z "$libcu" ] && libcv=$(grep -i "CT_${libc}_VERSION=" "$1" | awk -F'"' '{print $2}');
kernel=$(grep '^CT_KERNEL=' "$1" | awk -F'"' '{print $2}');
kernelv=$(grep -i "CT_${kernel}_VERSION=" "$1" | awk -F'"' '{print $2}');
elif [ $(_get_template_type "$1") == "FNG" ];then
if [ -d "$fngsrcdir" ];then
cp "$1" "$fngsrcdir/.config";
cd "$fngsrcdir";
[[ ! $(umask) == 0022 ]] && umask 0022;
make olddefconfig >/dev/null;
arch=$(grep '^FREETZ_TARGET_ARCH=' ".config" | awk -F'"' '{print $2}');
bitness=$(grep '^FREETZ_GCC_ABI=' ".config" | awk -F'"' '{print $2}');
[ $(grep -i '^FREETZ_TARGET_ARCH_BE=y' ".config") ] && end="B" || end="L";
[ $(grep -i '^FREETZ_LIB_libuClibc=y' ".config") ] && libc="uClibc";
[ $(grep -i '^FREETZ_LIB_libglibc=y' ".config") ] && libc="glibc";
[ $(grep -i '^FREETZ_LIB_libumusl=y' ".config") ] && libc="musl";
libcv=$(grep -i "^FREETZ_TARGET_${libc}_VERSION=" ".config" | awk -F'"' '{print $2}');
[ $(grep -i '^FREETZ_TARGET_GCC_[0-9]=y' ".config") ] && cc="gcc";
ccv=$(grep -i "^FREETZ_TARGET_${cc}_MAJOR_VERSION=" ".config" | awk -F'"' '{print $2}').$(grep -i "^FREETZ_TARGET_${cc}_MINOR_VERSION=" ".config" | awk -F'"' '{print $2}');
kernel='linux';
kernelv=$(grep -i "^FREETZ_KERNEL_VERSION=" ".config" | awk -F'"' '{print $2}');
rm -f "$fngsrcdir/.config";
else
setup=0;
desc="$desc (run \Zr<Setup>\ZR to show details)";
fi;
fi;
#build template property string
desc="$desc ($arch$cpu$aarch $bitness-bit ${end:0:1}E, $libc $libcv, $cc $ccv, $kernel $kernelv)";
[ -z $setup ] && desc="$desc ($arch$cpu$aarch $bitness-bit ${end:0:1}E, $libc $libcv, $cc $ccv, $kernel $kernelv)";
fi;
echo $desc;
[ -n "$desc" ] && exit 0 || exit 1;
};
_get_template_type(){
if [ $(grep -c '^FREETZ_' "$1") -gt 0 ];then
echo "FNG";
else
echo "CTNG";
fi;
};
_get_version(){
r="";
if [ -f "$1" ];then
content=$(cat "$1");
ver=$(echo "$content" | grep 'Version:' | sed -e "s/Version: //g");
if [ -z "$2" ]; then
if [ -z "$2" ];then
r="$ver";
else
(echo "$ver" | grep -qc "$2") && r="$ver";
@ -689,11 +814,12 @@ _check_lib(){
};
_check_pkg(){
pkgs=( git patch curl jq gcc g++ gperf bison flex makeinfo help2man make file cmp \
python3-config autoconf automake libtoolize libtool gawk wget bzip2 xz unzip rsync );
headers=( ncurses );
libs=( libstdc++.so.6 );
python3-config autoconf automake libtoolize libtool gawk wget bzip2 xz unzip rsync \
composite inkscape pkg-config python gettext ruby );
headers=( ncurses libacl.h sys/capability.h readline.h glib-2.0/glib.h );
libs=( libstdc++.so.6 libstdc++.a libc\\.a );
if syscheck "" "" "${pkgs[*]}" "${headers[*]}" "${libs[*]}";then
echo -e "$r_l""\nCHECK -> You need to manually install the following packages to use this plugin properly:\n"$y_l"$prefix apt install$packages\n""$re_" && _paktc_timer 10;
echo -e "$r_l""\nCHECK -> You need to manually install the following packages to use this plugin properly:\n"$y_l"$prefix install$packages\n""$re_" && _paktc_timer 10;
fi;
};
_check_github_api_limits(){
@ -703,7 +829,7 @@ _check_github_api_limits(){
reset=$(curl --silent "https://api.github.com/rate_limit" | jq -r '.resources.core.reset');
reset_time=$(date -d @$reset);
if [ "$remaining" -lt "$1" ]; then
if [ "$remaining" -lt "$1" ];then
echo -e "$y_l""NOTE -> Please wait until "$g_l"$reset_time"$y_l" to reset your configuration file."\
"The most recent versions and download links for the libraries are determined dynamically via the Github API."\
"Exceeding the rate limit on Github API will result in failures on generationg the configuration file."\
@ -715,13 +841,35 @@ _check_github_api_limits(){
return 1;
fi;
};
_check_crosstool_setup(){
#Setup crosstool-NG automatically if not installed
if [ "$1" == "CTNG" ] || [ -z "$1" ];then
if [ ! -f "$ctsrcdir/ct-ng" ];then
clear;
echo -e "$r_l""\nCHECK -> crosstool-NG is not setup correctly. Try to fix it automatically...\n""$re_";
[ -z "$1" ] && _paktc_timer 5;
_ctng_setup "$CTNG_START_BUILD";
fi;
fi;
#Setup Freetz-NG automatically if not installed
if [ "$1" == "FNG" ] || [ -z "$1" ];then
if [ ! -d "$fngsrcdir/dl" ];then
clear;
echo -e "$r_l""\nCHECK -> Freetz-NG is not setup correctly. Try to fix it automatically...\n""$re_";
[ -z "$1" ] && _paktc_timer 5;
_fng_setup "$CTNG_START_BUILD";
fi;
fi;
};
_check_config(){
nok=0;
[ -z ${FNG_REPO_URL+x} ] && nok=1;
[ -z ${CTNG_CONFIG_tasks+x} ] && nok=1;
[ -z ${CTNG_BUILD_AS_ROOT+x} ] && nok=1;
[ -z ${LIBS+x} ] && nok=1;
if [ $nok -eq 1 ]; then
if [ $nok -eq 1 ];then
clear;
echo -e "$r_l""\nCHECK -> Your config file seems to be outdated. Please restart s3 as follows to recreate an updated config file:\n"$y_l"./s3 tcupdate -r\n""$re_";
_paktc_timer 10;
@ -758,16 +906,7 @@ _create_config(){
fi;
ctng_config_tasks=( "('./ct-ng menuconfig;')"
"('TPL_SAVE=\$(\$gui --defaultno --output-fd 1 --ok-label \"Yes\" --cancel-label \"No\" --colors \$bt_ \"\$title_ - \Z0\$pdesc\Zn\" --title \"-[ Save Cross Toolchain Template ]-\" --inputbox \"\\\nWould you like to \ZrSAVE\ZR this toolchain template \Zrnow\ZR?\" 10 55 \"@TEMPLATE@\") && cp \"\$ctsrcdir/.config\" \"\$TPL_SAVE\";')"
"('TC_SAVE=\$(\$gui --defaultno --output-fd 1 --ok-label \"Yes\" --cancel-label \"No\" --colors \$bt_ \"\$title_ - \Z0\$pdesc\Zn\" --title \"-[ Build Cross Toolchain ]-\" --inputbox \"\\\nWould you like to \ZrBUILD\ZR this toolchain \Zrnow\ZR?\" 10 55 \"@TOOLCHAIN@\");')"
"('[ -n \"\$TC_SAVE\" ] && BUILD_TC=\$(basename \"\$TC_SAVE\") && BUILD_LOG=\"\$ldir/\$(date +%F.%H%M%S)_tup_crosstoolchain_\$(basename \"\$TC_SAVE\").log\";')"
"('[ -n \"\$TC_SAVE\" ] && sed -i \"s#.*CT_LOCAL_TARBALLS_DIR=.*#CT_LOCAL_TARBALLS_DIR=\\\"\$dldir\\\"#g\" \"\$ctsrcdir/.config\" && sed -i \"s#.*CT_PREFIX_DIR=.*#CT_PREFIX_DIR=\\\"\$TC_SAVE\\\"#g\" \"\$ctsrcdir/.config\";')"
"('[ -n \"\$TC_SAVE\" ] && clear && ./ct-ng show-config && ./ct-ng build;')"
"('[ -n \"\$TC_SAVE\" ] && cat \"\$ctsrcdir/build.log\" >\"\$BUILD_LOG\";')"
"('[ -n \"\$TC_SAVE\" ] && BUILD_ERROR=\$(grep \"\[ERROR\]\" \"\$ctsrcdir/build.log\" | wc -l);')"
"('[ -n \"\$TC_SAVE\" ] && [ ! \$BUILD_ERROR -gt 0 ] && BUILD_TARGET=\$(sed -n -e \"/target = / s/.*\= *//p\" \"\$ctsrcdir/build.log\") && BUILD_DESC=\$(sed -n -e \"/#toolchain template/ s/.*\: *//p\" \"\$cttpldir/\$BUILD_TC\");')"
"('[ -n \"\$TC_SAVE\" ] && _sz && [ ! \$BUILD_ERROR -gt 0 ] && @COMPRESS@ \"\$dldir/Toolchain-\$BUILD_TC.tar.xz\" \"\$TC_SAVE\" | \$gui \$st_ \$bt_ \"\$title_ - \Z0\$pdesc\Zn\" --colors --title \"-[ Compress cross toolchain \$BUILD_TC to Toolchain-\$BUILD_TC.tar.xz ]-\" \$pb_ \$_lines \$_cols;')"
"('[ -n \"\$TC_SAVE\" ] && [ ! \$BUILD_ERROR -gt 0 ] && @CREATECFG@ \"\$tcdir/\$BUILD_TC\" \"\$BUILD_TC\" \"\$BUILD_TARGET\" \"\" \"\" \"\$BUILD_DESC\" \"\" \"\$dldir/Toolchain-\$BUILD_TC.tar.xz\" \"yes\";')" );
"('TPL_SAVE=\$(\$gui --defaultno --output-fd 1 --ok-label \"Yes\" --cancel-label \"No\" --colors \$bt_ \"\$title_ - \Z0\$pdesc\Zn\" --title \"-[ Save Cross Toolchain Template ]-\" --inputbox \"\\\nWould you like to \ZrSAVE\ZR this toolchain template \Zrnow\ZR?\" 10 55 \"@TEMPLATE@\") && cp \"\$ctsrcdir/.config\" \"\$TPL_SAVE\";')" );
ctng_config_tasks_comment="#config command";
ctng_build_tasks=( "('./ct-ng show-config | tee -a \"@LOGFILE@\";')"
@ -779,7 +918,20 @@ _create_config(){
"('./configure --enable-local;')"
"('make;')" );
ctng_setup_tasks_comment="#setup command";
fng_config_tasks=( "('make menuconfig;')"
"('TPL_SAVE=\$(\$gui --defaultno --output-fd 1 --ok-label \"Yes\" --cancel-label \"No\" --colors \$bt_ \"\$title_ - \Z0\$pdesc\Zn\" --title \"-[ Save Cross Toolchain Template ]-\" --inputbox \"\\\nWould you like to \ZrSAVE\ZR this toolchain template \Zrnow\ZR?\" 10 55 \"@TEMPLATE@\") && cp \"\$fngsrcdir/.config\" \"\$TPL_SAVE\";')" );
fng_config_tasks_comment="#config command";
fng_build_tasks=( "('make olddefconfig | tee -a \"@LOGFILE@\";')"
"('make toolchain-dirclean | tee -a \"@LOGFILE@\";')"
"('make toolchain | tee -a \"@LOGFILE@\";')" );
fng_build_tasks_comment="#build command";
fng_setup_tasks=( "('git clone --progress \"\$FNG_REPO_URL\" \"@FNGSOURCE@\";')"
"('ln -s \"../../downloads\" \"@FNGSOURCE@/dl\";')" );
fng_setup_tasks_comment="#setup command";
lib_comments=( "#Enable/Disable (1|0)"
"#Displayname"
"#Versionnumber"
@ -843,6 +995,26 @@ _create_config(){
((i++));
done;
echo -e '\nFNG_REPO_URL="https://github.com/Freetz-NG/freetz-ng.git"; #Repository to load freetz-ng from' >>"$configname";
i=0;
for ct in "${fng_config_tasks[@]}";
do
echo -e "FNG_CONFIG_tasks"$([ "$i" -gt "0" ] && echo "+")"=$ct; $fng_config_tasks_comment$(($i+1))" >>"$configname";
((i++));
done;
i=0;
for bt in "${fng_build_tasks[@]}";
do
echo -e "FNG_BUILD_tasks"$([ "$i" -gt "0" ] && echo "+")"=$bt; $fng_build_tasks_comment$(($i+1))" >>"$configname";
((i++));
done;
i=0;
for st in "${fng_setup_tasks[@]}";
do
echo -e "FNG_SETUP_tasks"$([ "$i" -gt "0" ] && echo "+")"=$st; $fng_setup_tasks_comment$(($i+1))" >>"$configname";
((i++));
done;
echo -e '\n#LIBRARY update build settings\n#List of ordered libraries. Only libraries in this list are available' >>"$configname";
echo "LIBS=(${lib_keys[@]});" >>"$configname";

1
support/functions/_sys_check

@ -130,6 +130,7 @@ then
done
fi
unset binvars; unset headervars; unset libvars;
[ -z ${3+x} ] && binvars=( dialog grep gawk wget tar bzip2 svn xz upx patch gcc make scp sshpass openssl dos2unix ) || binvars=( $(echo "$3" | tr ' ' '\n') )
[ -z ${4+x} ] && headervars=( crypto.h libusb.h pcsclite.h pthread.h ) || headervars=( $(echo "$4" | tr ' ' '\n') )
[ -z ${5+x} ] && libvars=( libccidtwin.so ) || libvars=( $(echo "$5" | tr ' ' '\n') )

16
support/os/debian_ubuntu.install

@ -30,8 +30,12 @@ do
libtool)
inst="libtool-bin";
;;
composite)
inst="imagemagick";
;;
cmp)
inst="diffutils";
;;
esac;
printf -v pad %40s; e=$e$pad; e=${e:0:15};
echo -e "$w_l select $g_l$e$y_l from: $inst";
@ -59,6 +63,18 @@ do
ncurses)
inst="libncurses-dev";
;;
libacl.h)
inst="libacl1-dev";
;;
sys/capability.h)
inst="libcap-dev";
;;
readline.h)
inst="libreadline-dev";
;;
glib-2.0/glib.h)
inst="libglib2.0-dev";
;;
esac;
printf -v pad %40s; e=$e$pad; e=${e:0:15};
echo -e "$w_l select $g_l$e$y_l from: $inst";

17
support/os/manjaro.install

@ -9,7 +9,7 @@ packages="";
echo -n >"$install_log" &2>/dev/null;
echo -e "$w_l\n INSTALLATION\n ============\n";
source /etc/lsb-release
[ -f /etc/lsb-release ] && source /etc/lsb-release;
manjaro_version=$DISTRIB_RELEASE
# without sudo no user installation allowed
@ -41,6 +41,9 @@ do
libtool|libtoolize)
inst="libtool";
;;
composite)
inst="imagemagick";
;;
cmp)
inst="diffutils";
;;
@ -70,6 +73,18 @@ do
ncurses)
inst="ncurses";
;;
libacl.h)
inst="acl";
;;
sys/capability.h)
inst="libcap";
;;
readline.h)
inst="readline";
;;
glib-2.0/glib.h)
inst="glib2";
;;
esac;
echo -e "$w_l select $g_l$e$y_l\tfrom: $inst";
packages="$packages $inst";

33
support/os/redhat_centos_fedora.install

@ -72,6 +72,7 @@ do
;;
xz)
inst="xz-utils";
[ "$rh_version" -gt 29 ] && inst="xz";
;;
makeinfo)
inst="texinfo";
@ -82,12 +83,18 @@ do
libtool|libtoolize)
inst="libtool";
;;
cmp)
inst="diffutils";
;;
g++)
inst="gcc-c++";
;;
python)
[ "$rh_version" == 8 ] && inst="python3";
;;
composite)
inst="ImageMagick";
;;
cmp)
inst="diffutils";
;;
# the following guys have no official packages
sshpass)
continue;
@ -125,6 +132,18 @@ do
ncurses)
inst="ncurses-devel";
;;
libacl.h)
inst="libacl-devel";
;;
sys/capability.h)
inst="libcap-devel";
;;
readline.h)
inst="readline-devel";
;;
glib-2.0/glib.h)
inst="glib2-devel";
;;
esac;
echo -e "$w_l select $g_l$e$y_l\tfrom: $inst";
packages="$packages $inst";
@ -140,6 +159,12 @@ do
inst="ccid";
[ "$rh_version" -gt 6 ] && inst="pcsc-lite-ccid";
;;
libstdc++.a)
inst="libstdc++-static";
;;
libc\\.a)
inst="glibc-static";
;;
esac;
echo -e "$w_l select $g_l$e$y_l\tfrom: $inst";
packages="$packages $inst";
@ -175,7 +200,7 @@ if ! hash sshpass 2>/dev/null; then
[ "$(arch)" == "i686" ] && sshpass_src=$sshpass86_src;
echo -e "$w_l install$g_l sshpass$y_l\tfrom: $sshpass_src";
echo "+++ $(date): rpm -i $sshpass_src" >> "$install_log";
$prefix rpm -i $sshpass_src >> "$install_log" 2>&1 || failed=1;
$prefix rpm --nosignature -i $sshpass_src >> "$install_log" 2>&1 || failed=1;
fi
[ $failed == 1 ] && echo -e "\n$r_l Installation with errors - see: $install_log";

27
support/os/suse.install

@ -61,12 +61,18 @@ do
libtool)
inst="libtool-bin";
;;
cmp)
inst="diffutils";
;;
g++)
inst="gcc-c++";
;;
gettext)
inst="gettext-tools";
;;
composite)
inst="ImageMagick";
;;
cmp)
inst="diffutils";
;;
esac;
echo -e "$w_l select $g_l$e$y_l\tfrom: $inst";
packages="$packages $inst";
@ -93,6 +99,18 @@ do
ncurses)
inst="ncurses-devel";
;;
libacl.h)
inst="libacl-devel";
;;
sys/capability.h)
inst="libcap-devel";
;;
readline.h)
inst="readline-devel";
;;
glib-2.0/glib.h)
inst="glib2-devel-32bit";
;;
esac;
echo -e "$w_l select $g_l$e$y_l\tfrom: $inst";
packages="$packages $inst";
@ -110,6 +128,9 @@ do
libstdc++.so.6)
inst="libstdc++6";
;;
libc\\.a)
inst="glibc-static";
;;
esac;
echo -e "$w_l select $g_l$e$y_l\tfrom: $inst";
packages="$packages $inst";

Loading…
Cancel
Save