From 7dd46fa0456c850f8613aa343fd562b6e40cfbfb Mon Sep 17 00:00:00 2001 From: Dan Jacques Date: Wed, 26 Apr 2017 12:21:27 -0700 Subject: [PATCH] Implement "ct-ng" building, add "linux-mips". Add a mechanism to construct a full cross-compiler environment using the "crosstool-ng" cross-compiler building utility. This is implemented in the new "common.crosstool" include, and augments the "dockcross/base" base image. Update Makefile to consolidate Dockerfile generation, notably the "sed"-based inclusion directives. Finally, employ all of this to generate a "linux-mips" 32-bit hard-float MIPS cross-compiler Dockcross image. --- Makefile | 33 +- common.crosstool | 46 ++ imagefiles/install-crosstool-ng-toolchain.sh | 94 ++++ linux-mips/Dockerfile.in | 42 ++ linux-mips/Toolchain.cmake | 17 + linux-mips/crosstool-ng.config | 519 +++++++++++++++++++ 6 files changed, 740 insertions(+), 11 deletions(-) create mode 100644 common.crosstool create mode 100755 imagefiles/install-crosstool-ng-toolchain.sh create mode 100644 linux-mips/Dockerfile.in create mode 100644 linux-mips/Toolchain.cmake create mode 100644 linux-mips/crosstool-ng.config diff --git a/Makefile b/Makefile index d3b0ca7..98d512b 100644 --- a/Makefile +++ b/Makefile @@ -13,11 +13,17 @@ ORG = dockcross BIN = ./bin # These images are built using the "build implicit rule" -STANDARD_IMAGES = android-arm linux-x86 linux-x64 linux-arm64 linux-armv5 linux-armv6 linux-armv7 linux-mipsel linux-ppc64le windows-x86 windows-x64 +STANDARD_IMAGES = android-arm linux-x86 linux-x64 linux-arm64 linux-armv5 linux-armv6 linux-armv7 linux-mips linux-mipsel linux-ppc64le windows-x86 windows-x64 + +# Generated Dockerfiles. +GEN_IMAGES = linux-mips manylinux-x86 manylinux-x64 browser-asmjs +GEN_IMAGE_DOCKERFILES = $(addsuffix /Dockerfile,$(GEN_IMAGES)) # These images are expected to have explicit rules for *both* build and testing NON_STANDARD_IMAGES = browser-asmjs manylinux-x64 manylinux-x86 +DOCKER_COMPOSITE_SOURCES = common.docker common.debian common.manylinux common.crosstool + # This list all available images IMAGES = $(STANDARD_IMAGES) $(NON_STANDARD_IMAGES) @@ -43,11 +49,22 @@ images: base $(IMAGES) # test: base.test $(addsuffix .test,$(IMAGES)) +# +# Generic Targets (can specialize later). +# + +$(GEN_IMAGE_DOCKERFILES) Dockerfile: %Dockerfile: %Dockerfile.in $(DOCKER_COMPOSITE_SOURCES) + sed \ + -e '/common.docker/ r common.docker' \ + -e '/common.debian/ r common.debian' \ + -e '/common.manylinux/ r common.manylinux' \ + -e '/common.crosstool/ r common.crosstool' \ + $< > $@ + # # browser-asmjs # -browser-asmjs: browser-asmjs/Dockerfile.in common.docker common.debian - sed -e '/common.docker/ r common.docker' -e '/common.debian/ r common.debian' $@/Dockerfile.in > $@/Dockerfile +browser-asmjs: browser-asmjs/Dockerfile mkdir -p $@/imagefiles && cp -r imagefiles $@/ cp -r test browser-asmjs/ $(DOCKER) build -t $(ORG)/browser-asmjs:latest \ @@ -67,9 +84,6 @@ browser-asmjs.test: browser-asmjs # # manylinux-x64 -# -manylinux-x64/Dockerfile: manylinux-x64/Dockerfile.in common.docker common.manylinux - sed -e '/common.docker/ r common.docker' -e '/common.manylinux/ r common.manylinux' manylinux-x64/Dockerfile.in > manylinux-x64/Dockerfile manylinux-x64: manylinux-x64/Dockerfile mkdir -p $@/imagefiles && cp -r imagefiles $@/ @@ -88,8 +102,6 @@ manylinux-x64.test: manylinux-x64 # # manylinux-x86 # -manylinux-x86/Dockerfile: manylinux-x86/Dockerfile.in common.docker common.manylinux - sed -e '/common.docker/ r common.docker' -e '/common.manylinux/ r common.manylinux' manylinux-x86/Dockerfile.in > manylinux-x86/Dockerfile manylinux-x86: manylinux-x86/Dockerfile mkdir -p $@/imagefiles && cp -r imagefiles $@/ @@ -108,8 +120,6 @@ manylinux-x86.test: manylinux-x86 # # base # -Dockerfile: Dockerfile.in common.docker common.debian - sed -e '/common.docker/ r common.docker' -e '/common.debian/ r common.debian' Dockerfile.in > Dockerfile base: Dockerfile imagefiles/ $(DOCKER) build -t $(ORG)/base:latest \ @@ -131,7 +141,8 @@ $(VERBOSE).SILENT: display_images # # build implicit rule # -$(STANDARD_IMAGES): base + +$(STANDARD_IMAGES): %: %/Dockerfile base mkdir -p $@/imagefiles && cp -r imagefiles $@/ $(DOCKER) build -t $(ORG)/$@:latest \ --build-arg IMAGE=$(ORG)/$@ \ diff --git a/common.crosstool b/common.crosstool new file mode 100644 index 0000000..27dd583 --- /dev/null +++ b/common.crosstool @@ -0,0 +1,46 @@ +# crosstool.common +# +# Common Docker instructions to install "crosstool-ng" and build a full +# cross-compiler suite from a crosstool-ng configuration, CROSSTOOL_CONFIG. +# +# This import complements the "dockcross/base" image, adding: +# - "ct-ng", a cross-compiler building utilty. +# - A cross-compiler suite configured in "crosstool-ng.config". +# +# The generated cross-compiler will have a CROSS_ROOT of: +# ${XCC_PREFIX}/${CROSS_TRIPLE} +# +# A given platform will need to supply the appropriate "crosstool-ng.config" to +# generate its cross-compiler. This can be built using "ct-ng menuconfig" to +# generate a configuration. + +# Install Debian packages required for `ct-ng`. +RUN apt-get update --yes && apt-get install --no-install-recommends --yes \ + gawk \ + gperf \ + help2man \ + texinfo \ +&& apt-get clean --yes + +ENV XCC_PREFIX=/usr/xcc + +# Add the crosstool-ng script and image-specific toolchain configuration into +# /dockcross/. +# +# Afterwards, we will leave the "ct-ng" config in the image as a reference +# for users. +COPY \ + imagefiles/install-crosstool-ng-toolchain.sh \ + crosstool-ng.config \ + /dockcross/ + +# Build and install the toolchain, cleaning up artifacts afterwards. +RUN mkdir /dockcross/crosstool \ +&& cd /dockcross/crosstool \ +&& /dockcross/install-crosstool-ng-toolchain.sh \ + -p "${XCC_PREFIX}" \ + -c /dockcross/crosstool-ng.config \ +&& rm -rf /dockcross/crosstool /dockcross/install-crosstool-ng-toolchain.sh + +# Restore our default workdir (from "dockcross/base"). +WORKDIR /work diff --git a/imagefiles/install-crosstool-ng-toolchain.sh b/imagefiles/install-crosstool-ng-toolchain.sh new file mode 100755 index 0000000..a407629 --- /dev/null +++ b/imagefiles/install-crosstool-ng-toolchain.sh @@ -0,0 +1,94 @@ +#!/bin/bash + +# This script operates in a current working directory. It downloads +# "crosstool-ng", installs the base package, and then configures and installs +# a toolchain based on the supplied prefix and configuration. +# +# Artifacts: +# - "crosstool-ng" data in the current working directory (can be deleted). +# - Configured Toolchain installed in the supplied . + +set -x +set -e +set -o pipefail + +# Our base directory is the current working directory. All local artifacts will +# be generated underneath of here. +ROOT=${PWD} + +usage() { echo "Usage: $0 -p -c " 1>&2; exit 1; } + +# Resolve our input parameters. +# +# Note: we use "readlink" to resolve them to absolute paths so we can freelhy +# change directories during installation. +CT_PREFIX= +CONFIG_PATH= +while getopts "p:c:" o; do + case "${o}" in + p) + CT_PREFIX=$(readlink -f ${OPTARG}) + ;; + c) + CONFIG_PATH=$(readlink -f ${OPTARG}) + ;; + *) + usage + ;; + esac +done +shift $((OPTIND-1)) + +if [ -z ${CT_PREFIX} ]; then + echo "ERROR: You must supply an installation prefix (-p)." + usage +fi +if [ -z ${CONFIG_PATH} ] || [ ! -f ${CONFIG_PATH} ]; then + echo "ERROR: Missing config path (-c)." + usage +fi + +## +# Build "crosstool-ng". +## + +CTNG=${ROOT}/ct-ng +mkdir -p "${CTNG}" +cd "${CTNG}" + +# Download and install the "crosstool-ng" source. +REV=1.23.0 +wget --progress=bar:force \ + "https://github.com/crosstool-ng/crosstool-ng/archive/crosstool-ng-${REV}.tar.gz" +tar -xf "crosstool-ng-${REV}.tar.gz" +cd "crosstool-ng-crosstool-ng-${REV}" + +# Bootstrap and install the tool. +BOOTSTRAP_PREFIX="${CTNG}/prefix" +./bootstrap +./configure \ + --prefix "${BOOTSTRAP_PREFIX}" +make -j$(nproc) +make install + +## +# Use "crosstool-ng" to build the toolchain. +## + +# Override installation prefix, since we want to define it externally. +export CT_PREFIX + +# Allow installation as root, since we aren't really worried about system +# damage b/c we're running in a container and this saves us the trouble of +# having to generate a crosstool user. +export CT_ALLOW_BUILD_AS_ROOT_SURE=1 + +# Create our build directory and copy our configuration into it. +BUILD="${ROOT}/toolchain" +mkdir -p "${BUILD}" +cd "${BUILD}" + +cp "${CONFIG_PATH}" "${BUILD}/.config" + +# Build and install the toolchain! +"${BOOTSTRAP_PREFIX}/bin/ct-ng" build diff --git a/linux-mips/Dockerfile.in b/linux-mips/Dockerfile.in new file mode 100644 index 0000000..38da904 --- /dev/null +++ b/linux-mips/Dockerfile.in @@ -0,0 +1,42 @@ +FROM dockcross/base:latest + +# This is for 32-bit Big-Endian MIPS devices with hard floating point enabled + +#include "common.crosstool" + +# The cross-compiling emulator +RUN apt-get update \ +&& apt-get install -y \ + qemu-user \ + qemu-user-static \ +&& apt-get clean --yes + +# The CROSS_TRIPLE is a configured alias of the "mips-unknown-linux-gnu" target. +ENV CROSS_TRIPLE mips-unknown-linux-gnu + +ENV CROSS_ROOT ${XCC_PREFIX}/${CROSS_TRIPLE} +ENV AS=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-as \ + AR=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-ar \ + CC=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-gcc \ + CPP=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-cpp \ + CXX=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-g++ \ + LD=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-ld + +ENV QEMU_LD_PREFIX "${CROSS_ROOT}/${CROSS_TRIPLE}/sysroot" +ENV QEMU_SET_ENV "LD_LIBRARY_PATH=${CROSS_ROOT}/lib:${QEMU_LD_PREFIX}" + +ENV DEFAULT_DOCKCROSS_IMAGE dockcross/linux-mips + +COPY Toolchain.cmake ${CROSS_ROOT}/ +ENV CMAKE_TOOLCHAIN_FILE ${CROSS_ROOT}/Toolchain.cmake + +# Build-time metadata as defined at http://label-schema.org +ARG BUILD_DATE +ARG IMAGE +ARG VCS_REF +ARG VCS_URL +LABEL org.label-schema.build-date=$BUILD_DATE \ + org.label-schema.name=$IMAGE \ + org.label-schema.vcs-ref=$VCS_REF \ + org.label-schema.vcs-url=$VCS_URL \ + org.label-schema.schema-version="1.0" diff --git a/linux-mips/Toolchain.cmake b/linux-mips/Toolchain.cmake new file mode 100644 index 0000000..60eb52c --- /dev/null +++ b/linux-mips/Toolchain.cmake @@ -0,0 +1,17 @@ +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_VERSION 1) +set(CMAKE_SYSTEM_PROCESSOR mips) + +set(cross_triple "mips-unknown-linux-gnu") +set(cross_root /usr/xcc/${cross_triple}) + +set(CMAKE_C_COMPILER ${cross_root}/bin/${cross_triple}-gcc) +set(CMAKE_CXX_COMPILER ${cross_root}/bin/${cross_triple}-g++) +set(CMAKE_Fortran_COMPILER ${cross_root}/bin/${cross_triple}-gfortran) + +set(CMAKE_FIND_ROOT_PATH ${cross_root}/lib ${cross_root}/${cross_triple}/lib) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +set(CMAKE_CROSSCOMPILING_EMULATOR /usr/bin/qemu-mips) diff --git a/linux-mips/crosstool-ng.config b/linux-mips/crosstool-ng.config new file mode 100644 index 0000000..c00efff --- /dev/null +++ b/linux-mips/crosstool-ng.config @@ -0,0 +1,519 @@ +# +# Automatically generated file; DO NOT EDIT. +# Crosstool-NG Configuration +# +CT_CONFIGURE_has_static_link=y +CT_CONFIGURE_has_wget=y +CT_CONFIGURE_has_curl=y +CT_CONFIGURE_has_stat_flavor_GNU=y +CT_CONFIGURE_has_make_3_81_or_newer=y +CT_CONFIGURE_has_libtoolize_2_4_or_newer=y +CT_CONFIGURE_has_autoconf_2_63_or_newer=y +CT_CONFIGURE_has_autoreconf_2_63_or_newer=y +CT_CONFIGURE_has_gnu_m4_1_4_12_or_newer=y +CT_CONFIGURE_has_git=y +CT_MODULES=y + +# +# Paths and misc options +# + +# +# crosstool-NG behavior +# +# CT_OBSOLETE is not set +# CT_EXPERIMENTAL is not set +# CT_DEBUG_CT is not set + +# +# Paths +# +CT_LOCAL_TARBALLS_DIR="${HOME}/src" +CT_SAVE_TARBALLS=y +CT_WORK_DIR="${CT_TOP_DIR}/.build" +CT_BUILD_TOP_DIR="${CT_WORK_DIR}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}" +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_PREFIX_DIR_RO=y +CT_STRIP_HOST_TOOLCHAIN_EXECUTABLES=y +# CT_STRIP_TARGET_TOOLCHAIN_EXECUTABLES is not set + +# +# Downloading +# +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 + +# +# Extracting +# +# 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_BUNDLED_FALLBACK_LOCAL is not set +# CT_PATCH_LOCAL_FALLBACK_BUNDLED is not set +# CT_PATCH_NONE is not set +CT_PATCH_ORDER="bundled" + +# +# Build behavior +# +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}" + +# +# Logging +# +# 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 + +# +# Target options +# +CT_ARCH="mips" +# CT_ARCH_alpha is not set +# CT_ARCH_arm is not set +# CT_ARCH_avr is not set +# CT_ARCH_m68k is not set +CT_ARCH_mips=y +# CT_ARCH_nios2 is not set +# CT_ARCH_powerpc 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_alpha_AVAILABLE=y +CT_ARCH_arm_AVAILABLE=y +CT_ARCH_avr_AVAILABLE=y +CT_ARCH_m68k_AVAILABLE=y +CT_ARCH_microblaze_AVAILABLE=y +CT_ARCH_mips_AVAILABLE=y +CT_ARCH_nios2_AVAILABLE=y +CT_ARCH_powerpc_AVAILABLE=y +CT_ARCH_s390_AVAILABLE=y +CT_ARCH_sh_AVAILABLE=y +CT_ARCH_sparc_AVAILABLE=y +CT_ARCH_x86_AVAILABLE=y +CT_ARCH_xtensa_AVAILABLE=y +CT_ARCH_SUFFIX="" + +# +# Generic target options +# +# CT_MULTILIB is not set +CT_DEMULTILIB=y +CT_ARCH_USE_MMU=y +CT_ARCH_SUPPORTS_BOTH_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 + +# +# Target optimisations +# +CT_ARCH_SUPPORTS_WITH_ARCH=y +CT_ARCH_SUPPORTS_WITH_TUNE=y +CT_ARCH_SUPPORTS_WITH_FLOAT=y +CT_ARCH_ARCH="" +CT_ARCH_TUNE="" +# CT_ARCH_FLOAT_AUTO is not set +CT_ARCH_FLOAT_HW=y +# CT_ARCH_FLOAT_SW is not set +CT_TARGET_CFLAGS="" +CT_TARGET_LDFLAGS="" +CT_ARCH_FLOAT="hard" + +# +# mips other options +# +CT_ARCH_mips_o32=y +CT_ARCH_mips_ABI="32" + +# +# Toolchain options +# + +# +# General toolchain options +# +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_TOOLCHAIN_PKGVERSION="" +CT_TOOLCHAIN_BUGURL="" + +# +# Tuple completion and aliasing +# +CT_TARGET_VENDOR="" +CT_TARGET_ALIAS_SED_EXPR="s/-unknown//" +CT_TARGET_ALIAS="" + +# +# Toolchain type +# +CT_CROSS=y +# CT_CANADIAN is not set +CT_TOOLCHAIN_TYPE="cross" + +# +# Build system +# +CT_BUILD="" +CT_BUILD_PREFIX="" +CT_BUILD_SUFFIX="" + +# +# Misc options +# +# CT_TOOLCHAIN_ENABLE_NLS is not set + +# +# Operating System +# +CT_KERNEL_SUPPORTS_SHARED_LIBS=y +CT_KERNEL="linux" +CT_KERNEL_VERSION="4.10.8" +# CT_KERNEL_bare_metal is not set +CT_KERNEL_linux=y +CT_KERNEL_bare_metal_AVAILABLE=y +CT_KERNEL_linux_AVAILABLE=y +# CT_KERNEL_LINUX_CUSTOM is not set +CT_KERNEL_V_4_10=y +# CT_KERNEL_V_4_9 is not set +# CT_KERNEL_V_4_4 is not set +# CT_KERNEL_V_4_1 is not set +# CT_KERNEL_V_3_16 is not set +# CT_KERNEL_V_3_12 is not set +# CT_KERNEL_V_3_10 is not set +# CT_KERNEL_V_3_4 is not set +# CT_KERNEL_V_3_2 is not set +CT_KERNEL_windows_AVAILABLE=y + +# +# Common kernel options +# +CT_SHARED_LIBS=y + +# +# linux other options +# +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 + +# +# Binary utilities +# +CT_ARCH_BINFMT_ELF=y +CT_BINUTILS="binutils" +CT_BINUTILS_binutils=y + +# +# GNU binutils +# +CT_BINUTILS_VERSION="2.28" +# CT_BINUTILS_SHOW_LINARO is not set +CT_BINUTILS_V_2_28=y +# CT_BINUTILS_V_2_27 is not set +# CT_BINUTILS_V_2_26 is not set +CT_BINUTILS_2_27_or_later=y +CT_BINUTILS_2_26_or_later=y +CT_BINUTILS_2_25_1_or_later=y +CT_BINUTILS_2_25_or_later=y +CT_BINUTILS_2_24_or_later=y +CT_BINUTILS_2_23_2_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_FORCE_LD_BFD_DEFAULT=y +CT_BINUTILS_LINKER_LD=y +CT_BINUTILS_LINKERS_LIST="ld" +CT_BINUTILS_LINKER_DEFAULT="bfd" +CT_BINUTILS_PLUGINS=y +CT_BINUTILS_EXTRA_CONFIG_ARRAY="" +# CT_BINUTILS_FOR_TARGET is not set + +# +# binutils other options +# + +# +# C-library +# +CT_LIBC="glibc" +CT_LIBC_VERSION="2.25" +CT_LIBC_glibc=y +# CT_LIBC_uClibc is not set +CT_LIBC_avr_libc_AVAILABLE=y +CT_LIBC_glibc_AVAILABLE=y +CT_THREADS="nptl" +# CT_CC_GLIBC_SHOW_LINARO is not set +CT_LIBC_GLIBC_V_2_25=y +# CT_LIBC_GLIBC_V_2_24 is not set +# CT_LIBC_GLIBC_V_2_23 is not set +CT_LIBC_GLIBC_2_23_or_later=y +CT_LIBC_GLIBC_2_20_or_later=y +CT_LIBC_GLIBC_2_17_or_later=y +CT_LIBC_mingw_AVAILABLE=y +CT_LIBC_musl_AVAILABLE=y +CT_LIBC_newlib_AVAILABLE=y +CT_LIBC_none_AVAILABLE=y +CT_LIBC_uClibc_AVAILABLE=y +CT_LIBC_SUPPORT_THREADS_ANY=y +CT_LIBC_SUPPORT_THREADS_NATIVE=y + +# +# Common C library options +# +CT_THREADS_NATIVE=y +# CT_CREATE_LDSO_CONF is not set +CT_LIBC_XLDD=y + +# +# glibc other options +# +CT_LIBC_GLIBC_NEEDS_PORTS=y +CT_LIBC_glibc_family=y +CT_LIBC_GLIBC_EXTRA_CONFIG_ARRAY="" +CT_LIBC_GLIBC_CONFIGPARMS="" +CT_LIBC_GLIBC_EXTRA_CFLAGS="" +# CT_LIBC_DISABLE_VERSIONING is not set +CT_LIBC_OLDEST_ABI="" +CT_LIBC_GLIBC_FORCE_UNWIND=y +CT_LIBC_ADDONS_LIST="" +# CT_LIBC_LOCALES is not set +# CT_LIBC_GLIBC_KERNEL_VERSION_NONE is not set +CT_LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS=y +# CT_LIBC_GLIBC_KERNEL_VERSION_CHOSEN is not set +CT_LIBC_GLIBC_MIN_KERNEL="4.10.8" + +# +# C compiler +# +CT_CC="gcc" +CT_CC_CORE_PASSES_NEEDED=y +CT_CC_CORE_PASS_1_NEEDED=y +CT_CC_CORE_PASS_2_NEEDED=y +CT_CC_gcc=y +CT_CC_GCC_VERSION="6.3.0" +# CT_CC_GCC_SHOW_LINARO is not set +CT_CC_GCC_V_6_3_0=y +# CT_CC_GCC_V_5_4_0 is not set +# CT_CC_GCC_V_4_9_4 is not set +CT_CC_GCC_4_8_or_later=y +CT_CC_GCC_4_9_or_later=y +CT_CC_GCC_5_or_later=y +CT_CC_GCC_6=y +CT_CC_GCC_6_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 + +# +# Optimisation features +# +CT_CC_GCC_USE_GRAPHITE=y +CT_CC_GCC_USE_LTO=y + +# +# Settings for libraries running on target +# +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_GCC_LIBSANITIZER is not set + +# +# Misc. obscure options. +# +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 + +# +# archictecture-specific options +# +CT_CC_GCC_mips_llsc=m +CT_CC_GCC_mips_synci=m +CT_CC_GCC_mips_plt=y +CT_CC_SUPPORT_CXX=y +CT_CC_SUPPORT_FORTRAN=y +CT_CC_SUPPORT_JAVA=y +CT_CC_SUPPORT_ADA=y +CT_CC_SUPPORT_OBJC=y +CT_CC_SUPPORT_OBJCXX=y +CT_CC_SUPPORT_GOLANG=y + +# +# Additional supported languages: +# +CT_CC_LANG_CXX=y +# CT_CC_LANG_FORTRAN is not set +# CT_CC_LANG_JAVA is not set + +# +# Debug facilities +# +# CT_DEBUG_duma is not set +CT_DEBUG_gdb=y +CT_GDB_CROSS=y +# CT_GDB_CROSS_STATIC is not set +# CT_GDB_CROSS_SIM is not set +# CT_GDB_CROSS_PYTHON is not set +CT_GDB_CROSS_EXTRA_CONFIG_ARRAY="" +# CT_GDB_NATIVE is not set +CT_GDB_GDBSERVER=y +CT_GDB_GDBSERVER_HAS_IPA_LIB=y +# CT_GDB_GDBSERVER_BUILD_IPA_LIB is not set + +# +# gdb version +# +CT_GDB_VERSION="7.12.1" +CT_GDB_V_7_12_1=y +# CT_GDB_V_7_11_1 is not set +CT_GDB_7_12_or_later=y +CT_GDB_7_2_or_later=y +CT_GDB_7_0_or_later=y +CT_GDB_HAS_PKGVERSION_BUGURL=y +CT_GDB_HAS_PYTHON=y +CT_GDB_INSTALL_GDBINIT=y +# CT_DEBUG_ltrace is not set +# CT_DEBUG_strace is not set + +# +# Companion libraries +# +CT_COMPLIBS_NEEDED=y +CT_LIBICONV_NEEDED=y +CT_GETTEXT_NEEDED=y +CT_GMP_NEEDED=y +CT_MPFR_NEEDED=y +CT_ISL_NEEDED=y +CT_MPC_NEEDED=y +CT_EXPAT_NEEDED=y +CT_NCURSES_NEEDED=y +CT_COMPLIBS=y +CT_LIBICONV=y +CT_GETTEXT=y +CT_GMP=y +CT_MPFR=y +CT_ISL=y +CT_MPC=y +CT_EXPAT=y +CT_NCURSES=y +# CT_ZLIB is not set +CT_LIBICONV_V_1_15=y +# CT_LIBICONV_V_1_14 is not set +CT_LIBICONV_VERSION="1.15" +CT_GETTEXT_V_0_19_8_1=y +CT_GETTEXT_VERSION="0.19.8.1" +CT_GMP_V_6_1_2=y +CT_GMP_5_0_2_or_later=y +CT_GMP_VERSION="6.1.2" +CT_MPFR_V_3_1_5=y +CT_MPFR_VERSION="3.1.5" +CT_ISL_V_0_16_1=y +# CT_ISL_V_0_15 is not set +CT_ISL_V_0_16_or_later=y +CT_ISL_V_0_15_or_later=y +CT_ISL_V_0_14_or_later=y +CT_ISL_V_0_12_or_later=y +CT_ISL_VERSION="0.16.1" +CT_MPC_V_1_0_3=y +CT_MPC_VERSION="1.0.3" +CT_EXPAT_V_2_2_0=y +CT_EXPAT_VERSION="2.2.0" +CT_NCURSES_V_6_0=y +CT_NCURSES_VERSION="6.0" +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="" + +# +# Companion libraries common options +# +# CT_COMPLIBS_CHECK is not set + +# +# Companion tools +# +# CT_COMP_TOOLS_FOR_HOST is not set +# CT_COMP_TOOLS_autoconf is not set +CT_COMP_TOOLS_automake=y +CT_AUTOMAKE_V_1_15=y +CT_AUTOMAKE_VERSION="1.15" +CT_COMP_TOOLS_libtool=y +CT_LIBTOOL_V_2_4_6=y +CT_LIBTOOL_VERSION="2.4.6" +# CT_COMP_TOOLS_m4 is not set +# CT_COMP_TOOLS_make is not set