lib/mesa/ndmake.sh
$ cat ndmake.sh
#!/bin/sh -ue
NAME=mesa
VERSION=git:ee031d67b48
RELEASE=1
SOURCE="https://gitlab.freedesktop.org/mesa/mesa.git
0001-static-lavapipe.patch"
BUILD_OPT="
-Dplatforms=wayland
-Dvulkan-drivers=swrast
-Dgallium-drivers=llvmpipe
-Dllvm-orcjit=true
-Dgallium-rusticl=false
-Dopengl=false
-Degl=disabled
-Dglx=disabled
-Dgbm=disabled
-Dtools=[]
-Dspirv-tools=disabled
-Dlibunwind=disabled
-Dlmsensors=disabled"
build() {
export PATH="$PREFIX/bin:$PATH"
export PKG_CONFIG_LIBDIR="$PREFIX/lib/pkgconfig:$PREFIX/share/pkgconfig"
export PKG_CONFIG_PATH="$PKG_CONFIG_LIBDIR"
export PKG_CONFIG="pkg-config --static"
muon setup \
-Dprefix="$PREFIX" \
-Dlibdir=lib \
-Ddefault_library=static \
-Dprefer_static=true \
-Dbuildtype=release \
${BUILD_OPT} \
build || die "muon setup failed"
samu -C build \
src/gallium/targets/lavapipe/libvulkan_lvp_static.a \
src/gallium/targets/lavapipe/libvulkan_lvp.so ||
die "samu build failed"
root=$(pwd)
flat="$root/build/src/gallium/targets/lavapipe/libvulkan_lvp_static.flat.a"
mri="$root/build/merge-lvp-static.mri"
cat > "$mri" <<EOI
CREATE $flat
ADDMOD $root/build/src/gallium/targets/lavapipe/libvulkan_lvp_static.a.p/lavapipe_target.c.o
ADDMOD $root/build/src/gallium/targets/lavapipe/libvulkan_lvp_static.a.p/lvp_static_shim.c.o
EOI
for lib in \
build/src/gallium/frontends/lavapipe/liblavapipe_st.a \
build/src/gallium/auxiliary/pipe-loader/libpipe_loader_static.a \
build/src/loader/libloader.a \
build/src/util/libmesa_util.a \
build/src/util/libmesa_util_clflush.a \
build/src/util/libmesa_util_clflushopt.a \
build/src/util/libmesa_util_simd.a \
build/src/util/blake3/libblake3.a \
build/src/c11/impl/libmesa_util_c11.a \
build/src/util/libxmlconfig.a \
build/src/gallium/auxiliary/libgallium.a \
build/src/compiler/nir/libnir.a \
build/src/compiler/libcompiler.a \
build/src/gallium/winsys/sw/wrapper/libwsw.a \
build/src/gallium/winsys/sw/null/libws_null.a \
build/src/gallium/drivers/llvmpipe/libllvmpipe.a \
build/src/vulkan/util/libvulkan_util.a \
build/src/loader/libloader_wayland_helper.a \
build/src/compiler/spirv/libvtn.a \
build/src/vulkan/wsi/libvulkan_wsi.a \
build/src/vulkan/runtime/libvulkan_lite_runtime.a \
build/src/vulkan/runtime/libvulkan_runtime.a \
build/src/vulkan/runtime/libvulkan_instance.a
do
printf 'ADDLIB %s/%s\n' "$root" "$lib" >> "$mri"
done
printf 'SAVE\nEND\n' >> "$mri"
ar -M < "$mri" || die "failed to merge static lavapipe archive"
ranlib "$flat" || die "ranlib failed for flat static archive"
mkdir -p \
"$PKG/$PREFIX/lib" \
"$PKG/$PREFIX/lib/pkgconfig" \
"$PKG/$PREFIX/include/vulkan" \
"$PKG/$PREFIX/include/vk_video" \
"$PKG/$PREFIX/share/vulkan/registry"
install -m 644 "$flat" "$PKG/$PREFIX/lib/libvulkan_lvp_static.a" ||
die "failed to install flattened libvulkan_lvp_static.a"
install -m 644 include/vulkan/*.h "$PKG/$PREFIX/include/vulkan/" ||
die "failed to install Vulkan headers"
install -m 644 include/vk_video/*.h "$PKG/$PREFIX/include/vk_video/" ||
die "failed to install Vulkan video headers"
install -m 644 src/vulkan/registry/vk.xml \
"$PKG/$PREFIX/share/vulkan/registry/vk.xml" ||
die "failed to install vk.xml"
cat > "$PKG/$PREFIX/lib/pkgconfig/vulkan.pc" <<EOI
prefix=$PREFIX
exec_prefix=\${prefix}
libdir=\${exec_prefix}/lib
includedir=\${prefix}/include
Name: vulkan
Description: mesa lavapipe vulkan, statically linked
Version: ${VERSION#git:}
Requires.private: llvm zlib libzstd libdrm expat libdisplay-info wayland-client
Libs: -L\${libdir} -lvulkan_lvp_static
Libs.private: -lstdc++ -lm -pthread
Cflags: -I\${includedir}
EOI
}
. ${0%/*}/../../libsh/libdmake.sh
