#--------------------------------------------------------------------------------
# Paraview build stage
FROM ubuntu:23.04 AS build_paraview

RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends git cmake ninja-build \
    autoconf automake libtool curl make g++ unzip \
    apt-transport-https ca-certificates \
    qtbase5-dev qtbase5-dev-tools g++ python3-dev libglvnd-dev qttools5-dev libqt5svg5-dev \
    mpi-default-dev qtxmlpatterns5-dev-tools libqt5opengl5-dev libpugixml-dev libdouble-conversion-dev \
    liblz4-dev liblzma-dev libjpeg-dev libpng-dev libtiff-dev libfreetype-dev libjsoncpp-dev libeigen3-dev \
    python3-mpi4py libxml2-dev libhdf5-dev libnetcdf-dev nlohmann-json3-dev libsqlite3-dev sqlite3 libproj-dev \
    libtheora-dev libprotobuf-dev catch2 libcli11-dev && update-ca-certificates && \
    rm -rf /var/lib/apt/lists/* 

WORKDIR /opt

RUN git clone https://gitlab.kitware.com/paraview/paraview.git && cd paraview && git submodule update --init --recursive

# protobuf packaged in ubuntu is too old. Doesn't export protobuf::protoc target?
RUN git clone https://github.com/protocolbuffers/protobuf.git && cd protobuf && git checkout v21.7 && ./autogen.sh && \
    ./configure && make -j 8 && make install && ldconfig

WORKDIR /opt/paraview_build

RUN cmake -GNinja -DCMAKE_INSTALL_PREFIX=/opt/paraview_install \
    -Dqt_xmlpatterns_executable=/usr/lib/qt5/bin/xmlpatterns \
    -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo -DCMAKE_INTERPROCEDURAL_OPTIMIZATION:BOOL=OFF -DVTK_OPENGL_HAS_OSMESA:BOOL=OFF \
    -DVTK_USE_X:BOOL=ON -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON -DBUILD_TESTING:BOOL=OFF -DCMAKE_SKIP_INSTALL_RPATH=TRUE \
    -DOpenGL_GL_PREFERENCE:STRING=LEGACY -DVTK_MODULE_USE_EXTERNAL_ParaView_vtkcatalyst:BOOL=OFF \
    -DVTK_MODULE_USE_EXTERNAL_VTK_ioss:BOOL=OFF -DVTK_MODULE_USE_EXTERNAL_VTK_exprtk:BOOL=OFF \
    -DVTK_MODULE_USE_EXTERNAL_VTK_ogg:BOOL=OFF -DVTK_MODULE_USE_EXTERNAL_VTK_fmt:BOOL=OFF \
    -DPARAVIEW_BUILD_EDITION:STRING=CANONICAL -DPARAVIEW_USE_QT:BOOL=ON -DPARAVIEW_BUILD_WITH_EXTERNAL=ON \
    -DPARAVIEW_ENABLE_EXAMPLES:BOOL=OFF -DVTK_MODULE_USE_EXTERNAL_ParaView_cgns=OFF -DVTK_MODULE_USE_EXTERNAL_VTK_glew=OFF \
    -DVTK_MODULE_USE_EXTERNAL_VTK_gl2ps=OFF -DVTK_MODULE_USE_EXTERNAL_VTK_libharu=OFF -DVTK_MODULE_USE_EXTERNAL_VTK_utf8=OFF \
    -DVTK_MODULE_USE_EXTERNAL_VTK_verdict=OFF -DVTK_MODULE_USE_EXTERNAL_VTK_token=OFF -DPARAVIEW_QT_VERSION=5 -DPARAVIEW_USE_PYTHON:BOOL=ON \
    -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3.10 -DPARAVIEW_PYTHON_VERSION:STRING=3 -DPARAVIEW_USE_MPI:BOOL=ON \
    -DPARAVIEW_BUILD_SHARED_LIBS:BOOL=ON -DPARAVIEW_USE_CUDA:BOOL=OFF -DPARAVIEW_BUILD_WITH_KITS:BOOL=ON \
    -DVTK_MODULE_USE_EXTERNAL_VTK_fast_float:BOOL=OFF -DPARAVIEW_BUILD_TESTING=ON \
    ../paraview 

#    cmake --build .  && \
#    cmake --install .

