#!/bin/sh
tce-load -i compiletc ninja meson cmake llvm15-dev llvm15-bin expat2-dev liblz4-dev liblzma-dev libXdamage-dev \
  libXxf86vm-dev libxshmfence-dev libdrm-dev wayland-dev wayland-protocols libXrandr-dev

#needs python3 mako
#llvm-config needs to be copied to fs

tar xf mesa-23.3.1.tar.xz
cd mesa-23.3.1
patch -Np1 -i ../mesa-add_xdemos-2.patch

mkdir build && cd build

CC="gcc -flto -march=armv8-a+crc -mtune=cortex-a72 -Os -pipe" CXX="g++ -flto \
 -march=armv8-a+crc -mtune=cortex-a72 -Os -pipe -DNDEBUG" \
 meson setup --prefix=/usr/local --buildtype=plain -Dvalgrind=disabled \
 -Dgallium-drivers="vc4,v3d,kmsro,virgl,swrast" -Dvulkan-drivers="broadcom,swrast" ../

ninja

TMPDIR=/tmp/mesa
DESTDIR=$TMPDIR ninja install

find $TMPDIR/ -type d | xargs chmod -v 755

find $TMPDIR | xargs file | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded


###mesa
EXTNAM=mesa

###libEGL  (libEGL, libgbm)
EXTNAM1=libEGL

mkdir -p /tmp/${EXTNAM1}/usr/local/lib
mkdir -p /tmp/${EXTNAM1}-dev/usr/local/lib/pkgconfig
mkdir -p /tmp/${EXTNAM1}-dev/usr/local/include
mv -f /tmp/$EXTNAM/usr/local/include/EGL /tmp/${EXTNAM1}-dev/usr/local/include
mv -f /tmp/$EXTNAM/usr/local/include/gbm.h /tmp/${EXTNAM1}-dev/usr/local/include
mv -f /tmp/$EXTNAM/usr/local/lib/libEGL* /tmp/${EXTNAM1}/usr/local/lib
mv -f /tmp/$EXTNAM/usr/local/lib/libgbm* /tmp/${EXTNAM1}/usr/local/lib
mv -f /tmp/$EXTNAM/usr/local/lib/pkgconfig/egl.pc /tmp/${EXTNAM1}-dev/usr/local/lib/pkgconfig
mv -f /tmp/$EXTNAM/usr/local/lib/pkgconfig/gbm.pc /tmp/${EXTNAM1}-dev/usr/local/lib/pkgconfig

###libGLES  (libGLESv1, libGLESv2)
EXTNAM2=libGLES

mkdir -p /tmp/${EXTNAM2}/usr/local/lib
mkdir -p /tmp/${EXTNAM2}-dev/usr/local/lib/pkgconfig
mkdir -p /tmp/${EXTNAM2}-dev/usr/local/include

mv -f /tmp/$EXTNAM/usr/local/include/GLES* /tmp/${EXTNAM2}-dev/usr/local/include
mv -f /tmp/$EXTNAM/usr/local/lib/libGLES* /tmp/${EXTNAM2}/usr/local/lib
mv -f /tmp/$EXTNAM/usr/local/lib/pkgconfig/gles*.pc /tmp/${EXTNAM2}-dev/usr/local/lib/pkgconfig

###glxinfo  bin program
EXTNAM3=glxinfo

mkdir -p /tmp/${EXTNAM3}/usr/local
mv -f /tmp/$EXTNAM/usr/local/bin  /tmp/${EXTNAM3}/usr/local/

###mesa-vulkan
EXTNAM4=mesa-vulkan-rpi4

mkdir -p /tmp/${EXTNAM4}/usr/local/share
mkdir -p /tmp/${EXTNAM4}/usr/local/lib
mv -f /tmp/$EXTNAM/usr/local/share/vulkan /tmp/${EXTNAM4}/usr/local/share/
mv -f /tmp/$EXTNAM/usr/local/lib/libvulkan* /tmp/${EXTNAM4}/usr/local/lib

###mesa-dev
mkdir -p /tmp/${EXTNAM}-dev/usr/local/lib

mv -f  /tmp/$EXTNAM/usr/local/include /tmp/${EXTNAM}-dev/usr/local
mv -f  /tmp/$EXTNAM/usr/local/lib/pkgconfig /tmp/${EXTNAM}-dev/usr/local/lib


#####remove extra stuff
rm -rf /tmp/$EXTNAM/usr/local/share/man
rm -f /tmp/$EXTNAM/usr/local/lib/dri/armada*
rm -f /tmp/$EXTNAM/usr/local/lib/dri/e*
rm -f /tmp/$EXTNAM/usr/local/lib/dri/h*
rm -f /tmp/$EXTNAM/usr/local/lib/dri/i*
rm -f /tmp/$EXTNAM/usr/local/lib/dri/k*
rm -f /tmp/$EXTNAM/usr/local/lib/dri/m*
rm -f /tmp/$EXTNAM/usr/local/lib/dri/p*
rm -f /tmp/$EXTNAM/usr/local/lib/dri/r*
rm -f /tmp/$EXTNAM/usr/local/lib/dri/st*
rm -f /tmp/$EXTNAM/usr/local/lib/dri/sun*


tce-load -i squashfs-tools
for FILE in $(echo "$EXTNAM $EXTNAM-dev $EXTNAM1 $EXTNAM1-dev $EXTNAM2 $EXTNAM2-dev $EXTNAM3 $EXTNAM4"); do

    ###################################################
    # Create extension in temp dir               #
    ###################################################
    cd /tmp/$FILE
    rm -f *.tcz*
    cd ..
    mksquashfs $FILE $FILE.tcz -noappend -b 16384
    cd $FILE
    find usr -not -type d | sort > $FILE.tcz.list
    mv ../$FILE.tcz .

    # Create md5 file
    md5sum $FILE.tcz > $FILE.tcz.md5.txt

    # Cleanup temp directory

    #rm -r -f usr

done



mesa 23.3.0-rc5

  Directories
    prefix                       : /usr/local
    libdir                       : lib
    includedir                   : include

  Common C and C++ arguments
    c_cpp_args                   :

  OpenGL
    OpenGL                       : YES
    ES1                          : YES
    ES2                          : YES
    Shared glapi                 : YES
    GLVND                        : NO

  DRI
    Platform                     : drm
    Driver dir                   : /usr/local/lib/dri

  GLX
    Enabled                      : YES
    Provider                     : dri

  EGL
    Enabled                      : YES
    Drivers                      : builtin:egl_dri2 builtin:egl_dri3
    Platforms                    : x11 wayland surfaceless drm xcb

  GBM
    Enabled                      : YES
    Backends path                : /usr/local/lib/gbm

  Vulkan
    Drivers                      : broadcom swrast
    Platforms                    : x11 wayland surfaceless drm xcb
    ICD dir                      : share/vulkan/icd.d
    Intel Ray tracing            : NO

  Video
    Codecs                       : NO
    APIs                         : vulkan

  LLVM
    Enabled                      : YES
    Version                      : 15.0.7

  Gallium
    Enabled                      : YES
    Drivers                      : vc4 v3d kmsro virgl swrast
    Platforms                    : x11 wayland surfaceless drm xcb
    Frontends                    : mesa
    Off-screen rendering (OSMesa): NO
    HUD lm-sensors               : NO

  Perfetto
    Enabled                      : NO

  User defined options
    buildtype                    : plain
    prefix                       : /usr/local
    gallium-drivers              : vc4,v3d,kmsro,virgl,swrast
    valgrind                     : disabled
    vulkan-drivers               : broadcom,swrast
