diff options
Diffstat (limited to 'glgen.sh')
-rwxr-xr-x | glgen.sh | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/glgen.sh b/glgen.sh deleted file mode 100755 index 31af2812..00000000 --- a/glgen.sh +++ /dev/null @@ -1,103 +0,0 @@ -#!/bin/sh - -# Generates a simple GL/EGL extension function loader. -# -# The input is a .txt file, with each function to load on its own line. -# If a line starts with a -, it is optional, and will not cause the loader -# to fail if it can't load the function. You'll need to check if that function -# is NULL before using it. - -if [ $# -ne 2 ]; then - exit 1 -fi - -SPEC=$1 -OUTDIR=$2 - -BASE=$(basename "$SPEC" .txt) -INCLUDE_GUARD=$(printf %s_%s_H "$OUTDIR" "$BASE" | tr -c [:alnum:] _ | tr [:lower:] [:upper:]) - -DECL="" -DEFN="" -LOADER="" - -DECL_FMT='extern %s %s;' -DEFN_FMT='%s %s;' -LOADER_FMT='%s = (%s)eglGetProcAddress("%s");' -CHECK_FMT='if (!%s) { - wlr_log(WLR_ERROR, "Unable to load %s"); - return false; -}' - -while read -r COMMAND; do - OPTIONAL=0 - FUNC_PTR_FMT='PFN%sPROC' - - case $COMMAND in - -*) - OPTIONAL=1 - ;; - esac - - case $COMMAND in - *WL) - FUNC_PTR_FMT='PFN%s' - ;; - esac - - COMMAND=${COMMAND#-} - FUNC_PTR=$(printf "$FUNC_PTR_FMT" "$COMMAND" | tr [:lower:] [:upper:]) - - DECL="$DECL$(printf "\n$DECL_FMT" "$FUNC_PTR" "$COMMAND")" - DEFN="$DEFN$(printf "\n$DEFN_FMT" "$FUNC_PTR" "$COMMAND")" - LOADER="$LOADER$(printf "\n$LOADER_FMT" "$COMMAND" "$FUNC_PTR" "$COMMAND")" - - if [ $OPTIONAL -eq 0 ]; then - LOADER="$LOADER$(printf "\n$CHECK_FMT" "$COMMAND" "$COMMAND")" - fi -done < "$SPEC" - -cat > "$OUTDIR/$BASE.h" << EOF -#ifndef $INCLUDE_GUARD -#define $INCLUDE_GUARD - -#include <stdbool.h> -#include <wlr/config.h> - -#if !WLR_HAS_X11_BACKEND && !WLR_HAS_XWAYLAND -#ifndef MESA_EGL_NO_X11_HEADERS -#define MESA_EGL_NO_X11_HEADERS -#endif -#ifndef EGL_NO_X11 -#define EGL_NO_X11 -#endif -#endif - -#include <EGL/egl.h> -#include <EGL/eglext.h> -#include <EGL/eglmesaext.h> -#include <GLES2/gl2.h> -#include <GLES2/gl2ext.h> - -bool load_$BASE(void); -$DECL - -#endif -EOF - -cat > "$OUTDIR/$BASE.c" << EOF -#include <wlr/util/log.h> -#include "$BASE.h" -$DEFN - -bool load_$BASE(void) { - static bool done = false; - if (done) { - return true; - } -$LOADER - - done = true; - return true; -} -EOF |