# syntax = docker/dockerfile:1.0-experimental
FROM centos:centos6 as build


# install gcc 7
RUN yum -y install centos-release-scl && \
    yum -y install curl libffi-devel readline-devel tcl tcl-devel graphviz xdot && \
    yum -y install bison flex gawk gcc git glibc-static zlib-devel

# python
RUN yum -y install rh-python35
SHELL ["/usr/bin/scl", "enable", "rh-python35"]
RUN python --version

RUN yum -y install devtoolset-7 devtoolset-7-libatomic-devel
ENV CC=/opt/rh/devtoolset-7/root/usr/bin/gcc \
    CPP=/opt/rh/devtoolset-7/root/usr/bin/cpp \
    CXX=/opt/rh/devtoolset-7/root/usr/bin/g++ \
    PATH=/opt/rh/devtoolset-7/root/usr/bin:$PATH \
    LD_LIBRARY_PATH=/opt/rh/devtoolset-7/root/usr/lib64:/opt/rh/devtoolset-7/root/usr/lib:/opt/rh/devtoolset-7/root/usr/lib64/dyninst:/opt/rh/devtoolset-7/root/usr/lib/dyninst:/opt/rh/devtoolset-7/root/usr/lib64:/opt/rh/devtoolset-7/root/usr/lib:$LD_LIBRARY_PATH


# Updating new bison 3+
# https://github.com/YosysHQ/yosys/issues/332
RUN yum install -y wget autoconf && \
    wget https://ftp.gnu.org/gnu/bison/bison-3.0.1.tar.gz && \
    tar -xvzf bison-3.0.1.tar.gz && \
    cd bison-3.0.1 && \
    ./configure && \
    make -j$(nproc) && \
    make install

# download public key for github.com
# RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts

# git clone yosys
RUN git clone https://github.com/YosysHQ/yosys yosys


# build yosys
WORKDIR yosys


RUN make PREFIX=/build config-gcc \
 && make PREFIX=/build -j$(nproc) \
 && make PREFIX=/build install


RUN mkdir -p /build/version
RUN date +"Build Timestamp: %Y-%m-%d_%H-%M-%S" > /build/version/yosys.version
RUN git rev-parse HEAD >> /build/version/yosys.version
RUN tar -czf /build.tar.gz /build
