Skip to content

Instantly share code, notes, and snippets.

@abrodkin
Last active June 10, 2019 10:24
Show Gist options
  • Save abrodkin/ac518ec1fabbebd1302df09520826c14 to your computer and use it in GitHub Desktop.
Save abrodkin/ac518ec1fabbebd1302df09520826c14 to your computer and use it in GitHub Desktop.

CROSS-TOOLCHAIN (with GNU tools from ARC GitHub):

CT_EXPERIMENTAL=y
CT_PREFIX_DIR="${PWD}/toolchain_cross"
CT_ARCH_ARC=y
CT_ARCH_CPU="hs38_linux"
# CT_DEMULTILIB is not set
CT_TARGET_VENDOR="snps"
CT_KERNEL_LINUX=y
CT_BINUTILS_SRC_DEVEL=y
CT_BINUTILS_DEVEL_URL="https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb.git"
CT_BINUTILS_DEVEL_BRANCH="arc-2018.09-eng002"
CT_GLIBC_SRC_DEVEL=y
CT_GLIBC_DEVEL_URL="https://github.com/foss-for-synopsys-dwc-arc-processors/glibc.git"
CT_GLIBC_DEVEL_BRANCH="arc-2018.09-eng002"
CT_GCC_SRC_DEVEL=y
CT_GCC_DEVEL_VCS_git=y
CT_GCC_DEVEL_URL="https://github.com/foss-for-synopsys-dwc-arc-processors/gcc.git"
CT_GCC_DEVEL_BRANCH="arc-2018.09-eng002"
CT_CC_LANG_CXX=y
CT_CC_LANG_FORTRAN=y

Note CT_CREATE_LDSO_CONF is disabled in cross-toolchain otherwise ld.so.conf is created in sysroot and then when Buildroot finalizes rootfs it bails out like that:

ERROR: we shouldn't have a /etc/ld.so.conf file

See https://git.buildroot.org/buildroot/commit/?h=9c4072348960d99d39f2cf47ff022f2d3711962e

NATIVE TOOLCHAIN (with GNU tools from ARC GitHub):

CT_EXPERIMENTAL=y
CT_PREFIX_DIR="${PWD}/toolchain_native"
CT_ARCH_ARC=y
CT_ARCH_CPU="hs38_linux"
# CT_DEMULTILIB is not set
CT_TARGET_VENDOR="snps"
CT_TARGET_ALIAS_SED_EXPR="s/${CT_TARGET}-//"
CT_CANADIAN=y
CT_HOST="arc-snps-linux-gnu"
CT_KERNEL_LINUX=y
CT_BINUTILS_SRC_DEVEL=y
CT_BINUTILS_DEVEL_URL="https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb.git"
CT_BINUTILS_DEVEL_BRANCH="arc-2018.09-eng002"
CT_GLIBC_SRC_DEVEL=y
CT_GLIBC_DEVEL_URL="https://github.com/foss-for-synopsys-dwc-arc-processors/glibc.git"
CT_GLIBC_DEVEL_BRANCH="arc-2018.09-eng002"
CT_GCC_SRC_DEVEL=y
CT_GCC_DEVEL_VCS_git=y
CT_GCC_DEVEL_URL="https://github.com/foss-for-synopsys-dwc-arc-processors/gcc.git"
CT_GCC_DEVEL_BRANCH="arc-2018.09-eng002"
# CT_CC_GCC_STATIC_LIBSTDCXX is not set
CT_CC_LANG_CXX=y
CT_CC_LANG_FORTRAN=y

Note CT_TARGET_ALIAS_SED_EXPR="s/${CT_TARGET}-//" - this way we produce prefixless versions of tools like gcc, ld etc in bin folder. Otherwise we'll need to use prefixed commands like arc-snps-linux-gnu-cc which is not what people and software expect from native tools.

BUILDROOT

BR2_arcle=y
BR2_archs38=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
BR2_TOOLCHAIN_EXTERNAL_PATH="/home/abrodkin/Projects/sources/git/crosstool-ng/toolchain_cross"
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="$(ARCH)-snps-linux-gnu"
BR2_TOOLCHAIN_EXTERNAL_GCC_8=y
BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
BR2_TOOLCHAIN_EXTERNAL_CXX=y
BR2_SYSTEM_DHCP="eth0"
BR2_TARGET_TZ_INFO=y
BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/synopsys/hsdk/genimage.cfg"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.18.5"
BR2_LINUX_KERNEL_DEFCONFIG="hsdk"
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/synopsys/hsdk/linux.fragment"
BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
BR2_PACKAGE_STRACE=y
BR2_PACKAGE_MAKE=y
BR2_PACKAGE_DOSFSTOOLS=y
BR2_PACKAGE_MTOOLS=y
BR2_PACKAGE_LIBRSYNC=y
BR2_PACKAGE_NTP=y
BR2_PACKAGE_NTP_NTPDATE=y
BR2_PACKAGE_OPENSSH=y
BR2_PACKAGE_TMUX=y
BR2_PACKAGE_COREUTILS=y
BR2_PACKAGE_HTOP=y
BR2_TARGET_ROOTFS_CPIO=y
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="hsdk"
BR2_TARGET_UBOOT_NEEDS_DTC=y
BR2_TARGET_UBOOT_FORMAT_ELF=y
BR2_TARGET_UBOOT_ENVIMAGE=y
BR2_TARGET_UBOOT_ENVIMAGE_SOURCE="board/synopsys/hsdk/uboot.env.txt"
BR2_TARGET_UBOOT_ENVIMAGE_SIZE="0x4000"
BR2_PACKAGE_HOST_GENIMAGE=y

Deploy sdcard.img on the SD-card. Copy native toolchain to /opt folder of the SD-card with:

cp -r ~/Projects/sources/git/crosstool-ng/toolchain_native/* /var/run/media/ext4/opt

To build SPEC2000 tools run on target:

export PATH=/opt/bin:$PATH
ln -s /opt/arc-snps-linux-gnu/sysroot/usr/include/ /opt/local/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment