This repository contains two distinct things: scripts for building a toolchain with ILP32 support and Benchmark configurations; just SPECCPU2017 for the moment.
The script will build the toolchain with ILP32 support. You need to install all the toolchain build essential tools for your OS distribution. We are assuming you have installed the TXOS (ThunderX OS) latest available version on ThunderX2 or later version of the hardware and installed all the dependency packages. We support the build procedure only on the latest available TXOS.
You can try on other OS, but we won't support. e.g. CentOS/Debian/Ubuntu ..etc. But you may need to install the dependency packages.
sudo apt-get install libc6 gnat g++ gawk binutils gzip bzip2 make tar perl zip unzip autoconf automake gettext gperf dejagnu tcl tk autogen guile-2.0 flex texinfo subversion ssh diffutils patch build-essential libncurses5-dev bison byacc flex
sudo yum groupinstall "Development Tools"
sudo yum install autoconf automake binutils bison flex gcc gcc-c++ gettext libtool make patch pkgconfig redhat-rpm-config rpm-build rpm-sign ctags elfutils indent patchutils kernel-devel make
sudo yum install gawk binutils gzip bzip2 make tar perl zip unzip autoconf automake gettext tcl tk flex subversion diffutils patch bison byacc flex
dnf config-manager --enable PowerTools
dnf install texinfo
or
You can also download, compile and install texinfo - http://ftp.gnu.org/gnu/texinfo/
./configure --prefix=/usr/local
make -j$(nproc)
make install
You have to clone the git repository to get the script.
$ git clone https://github.com/MarvellServer/ThunderX-GCC-ILP32-build.git
$ cd ThunderX-GCC-ILP32-build
You can create the toolchain install directory wherever you want. But when you install the toolchain using untar or rpm commands it will install in the same path. Let's create the toolchain install directory under /opt and give permission to script as a user in the same path.
$ sudo mkdir /opt/toolchain-tot-ilp32
$ sudo chown YourUsername:YourUsername /opt/toolchain-tot-ilp32
NOTE: Avoid to run the script as a root, because it may cause your host machine rootfs unless you know exactly what you are doing
$ ./build_gcc_toolchain.sh /opt/toolchain-tot-ilp32 TRUE TRUE
toolchain-tot-ilp32 - INSTALLDIR of the built toolchain.
TRUE - Does the MULTILIB installation.
TRUE - Does the LIBMVEC installation.
The tar file toolchain-tot-ilp32.tar.bz2 is generated by the script under your directory Absolute-Path/ThunderX-GCC-ILP32-build
You can generate the RPM from tar file in 2 ways. One method is to use the alien tool. The other method is to generate the RPM using the SPEC file. In the first method you have to install the alien tool
Download alien from site currently the best place to download the tarball is from http://packages.debian.org/unstable/source/alien
$ tar -zxvf alien_8.88.tar.gz
$ cd alien
$ perl Makefile.PL
$ make -j$(nproc)
$ sudo make install
$ cd ..
Let’s check alien is working or not. If you don't find alien command you can also use alien.pl script
$ alien –to-rpm alien_8.88.tar.gz
Note: Please check help of alien (e.g. alien –help)
for example:
[nbhat@localhost ThunderX-GCC-ILP32-build]$ alien --to-rpm toolchain-tot-ilp32.tar.bz2 --target=aarch64
You can ignore the Warning:
Warning: alien is not running as root!
Warning: Ownerships of files in the generated packages will probably be wrong.
The RPM file is generated with the name
toolchain-tot-ilp32-1-2.aarch64.rpm generated
You can install the RPM file using the command
$ sudo rpm -ivh toolchain-tot-ilp32-1-2.aarch64.rpm --nodeps
The RPM will be installed under /opt/toolchain-tot-ilp32
You can uninstall the RPM using the below command
$ sudo rpm -e toolchain-tot-ilp32-1-2.aarch64
You have to execute the SPEC file as below
ThunderX-GCC-ILP32-build]$ rpmbuild --target aarch64 -bb toolchain_tot_ilp32.spec
The RPM is built and deployed under your home directory rpmbuild/RPMS/aarch64/
ThunderX-GCC-ILP32-build]$ ls ~/rpmbuild/RPMS/aarch64/
toolchain-tot-ilp32-1.0-2.el8.aarch64.rpm
You can install the RPM using the command from the location rpmbuild/RPMS/aarch64
ThunderX-GCC-ILP32-build]$ sudo rpm -ivh ~/rpmbuild/RPMS/aarch64/toolchain-tot-ilp32-1.0-2.el8.aarch64.rpm
This will install the toolchain under /opt/toolchain-tot-ilp32 path
The un-installation can be done using -e switch option
ThunderX-GCC-ILP32-build]$ sudo rpm -e toolchain-tot-ilp32-1.0-2.el8.aarch64
https://gcc.gnu.org/install/prerequisites.html
https://prasadlinuxblog.wordpress.com/2012/08/29/convert-tar-gz-to-rpm-on-centos/