# SPDX-FileCopyrightText: 2020 Efabless Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# SPDX-License-Identifier: Apache-2.0

# Note: to get cores or use gdb start like:   docker run --ulimit core=-1 --cap-add SYS_PTRACE ...

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

# Common development tools and libraries (kitchen sink approach)
RUN yum -y install centos-release-scl && \
    yum -y install devtoolset-8 devtoolset-8-libatomic-devel && \
    yum clean all && \
    rm -rf /var/cache/yum

# Python 3.6
RUN yum install -y https://repo.ius.io/ius-release-el7.rpm && \
    yum clean all && \
    rm -rf /var/cache/yum
RUN yum install -y python36u python36u-devel python36u-libs python36u-pip python36u-tkinter && \
    yum clean all && \
    rm -rf /var/cache/yum
RUN alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 60
RUN pip3.6 install --no-cache-dir --upgrade pip
RUN pip install --no-cache-dir awscli boto3 colorama coloredlogs klayout numpy pyyaml requests strsimpy

# Install pyverilog & pyspice
RUN pip install --no-cache-dir https://github.com/PyHDI/Pyverilog/archive/develop.zip && \
    pip install --no-cache-dir pyspice

# General Utils
RUN yum install -y ruby tcllib git tcl tk libjpeg libgomp libXext libSM libXft libffi cairo gettext Xvfb gcc-c++ patch \
    gdb.x86_64 file.x86_64 time.x86_64 && \
    yum clean all && \
    rm -rf /var/cache/yum

# uninstall current version of git and install latest version instead
RUN yum -y remove git && yum -y remove git-* && \
    yum -y install https://packages.endpoint.com/rhel/7/os/x86_64/endpoint-repo-1.9-1.x86_64.rpm && \
    yum -y install git && \
    yum clean all && \
    rm -rf /var/cache/yum

# Install iverilog
RUN yum install -y iverilog && \
    yum clean all && \
    rm -rf /var/cache/yum

# Magic Dependencies
RUN yum install -y libglu tcl tk csh wget tcl-devel tk-devel libX11-devel ncurses-devel \
    yum clean all && \
    rm -rf /var/cache/yum

# Install Klayout
RUN yum install -y https://www.klayout.org/downloads/CentOS_7/klayout-0.27.3-0.x86_64.rpm && \
    yum clean all && \
    rm -rf /var/cache/yum

# Clone Magic
RUN git clone --depth=1 --branch 8.3.220 https://github.com/RTimothyEdwards/magic.git ./magic_8_3_220
WORKDIR magic_8_3_220
# Build Magic
# '-O0' : disable optimization so vars visible in gdb (not optimized away). Already the default of gcc.
# -g    : keep debugging info, incl. symbols.
# --disable-locking : recommended by tim due to cell-depth of sky130A PDK cells.
# scl enable devtoolset-8 --  : use the devtoolset-8 gcc-8.x (not the native gcc-4.x).
# Note: to use gdb start like:   docker run --ulimit core=-1 --cap-add SYS_PTRACE ...
RUN scl enable devtoolset-8 -- ./configure --disable-locking --prefix=/build CFLAGS='-g -O0 -m64 -fPIC' && \
    scl enable devtoolset-8 -- make -j4 && \
    scl enable devtoolset-8 -- make install

ENV PRECHECKER_ROOT=/opt/
ENV BUILD_PATH=/build/
ENV PATH=$PRECHECKER_ROOT:$PRECHECKER_ROOT/scripts:$BUILD_PATH/bin:$BUILD_PATH/bin/Linux-x86_64:$BUILD_PATH/pdn/scripts:$PATH
ENV LD_LIBRARY_PATH=$BUILD_PATH/lib:$BUILD_PATH/lib/Linux-x86_64:$LD_LIBRARY_PATH
ENV MANPATH=$BUILD_PATH/share/man:$MANPATH
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8
ENV LC_CTYPE en_US.UTF-8
WORKDIR $PRECHECKER_ROOT