Change glapi.sh to generate both files
This commit is contained in:
parent
b8a2bfbc73
commit
02374b945d
68
glgen.sh
68
glgen.sh
|
@ -7,15 +7,16 @@
|
|||
# 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
|
||||
if [ $# -ne 3 ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
SPEC=$1
|
||||
OUT=$2
|
||||
OUT_C=$2
|
||||
OUT_H=$3
|
||||
|
||||
BASE=$(basename "$SPEC" .txt)
|
||||
INCLUDE_GUARD=$(printf %s "$SPEC" | tr -c [:alnum:] _ | tr [:lower:] [:upper:])
|
||||
INCLUDE_GUARD=$(printf %s "$OUT_H" | tr -c [:alnum:] _ | tr [:lower:] [:upper:])
|
||||
|
||||
DECL=""
|
||||
DEFN=""
|
||||
|
@ -57,46 +58,37 @@ while read -r COMMAND; do
|
|||
fi
|
||||
done < $SPEC
|
||||
|
||||
cat > $OUT_H << EOF
|
||||
#ifndef $INCLUDE_GUARD
|
||||
#define $INCLUDE_GUARD
|
||||
|
||||
case $OUT in
|
||||
*.h)
|
||||
cat > $OUT << EOF
|
||||
#ifndef $INCLUDE_GUARD
|
||||
#define $INCLUDE_GUARD
|
||||
#include <stdbool.h>
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <EGL/egl.h>
|
||||
#include <EGL/eglext.h>
|
||||
#include <EGL/eglmesaext.h>
|
||||
#include <GLES2/gl2.h>
|
||||
#include <GLES2/gl2ext.h>
|
||||
|
||||
#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
|
||||
|
||||
bool load_$BASE(void);
|
||||
$DECL
|
||||
|
||||
#endif
|
||||
#endif
|
||||
EOF
|
||||
;;
|
||||
*.c)
|
||||
cat > $OUT << EOF
|
||||
#include <wlr/util/log.h>
|
||||
#include "$BASE.h"
|
||||
$DEFN
|
||||
|
||||
bool load_$BASE(void) {
|
||||
static bool done = false;
|
||||
if (done) {
|
||||
return true;
|
||||
}
|
||||
$LOADER
|
||||
cat > $OUT_C << EOF
|
||||
#include <wlr/util/log.h>
|
||||
#include "$OUT_H"
|
||||
$DEFN
|
||||
|
||||
done = true;
|
||||
return true;
|
||||
}
|
||||
bool load_$BASE(void) {
|
||||
static bool done = false;
|
||||
if (done) {
|
||||
return true;
|
||||
}
|
||||
$LOADER
|
||||
|
||||
done = true;
|
||||
return true;
|
||||
}
|
||||
EOF
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
|
|
@ -1,14 +1,9 @@
|
|||
glgen = find_program('../glgen.sh')
|
||||
|
||||
glapi_c = custom_target('glapi.c',
|
||||
glapi = custom_target('glapi',
|
||||
input: 'glapi.txt',
|
||||
output: '@BASENAME@.c',
|
||||
command: [glgen, '@INPUT@', '@OUTPUT@'],
|
||||
)
|
||||
glapi_h = custom_target('glapi.h',
|
||||
input: 'glapi.txt',
|
||||
output: '@BASENAME@.h',
|
||||
command: [glgen, '@INPUT@', '@OUTPUT@'],
|
||||
output: ['@BASENAME@.c', '@BASENAME@.h'],
|
||||
command: [glgen, '@INPUT@', '@OUTPUT0@', '@OUTPUT1@'],
|
||||
)
|
||||
|
||||
lib_wlr_render = static_library(
|
||||
|
@ -24,13 +19,13 @@ lib_wlr_render = static_library(
|
|||
'wlr_renderer.c',
|
||||
'wlr_texture.c',
|
||||
),
|
||||
glapi_c,
|
||||
glapi_h,
|
||||
glapi[0],
|
||||
glapi[1],
|
||||
include_directories: wlr_inc,
|
||||
dependencies: [glesv2, egl],
|
||||
)
|
||||
|
||||
wlr_render = declare_dependency(
|
||||
link_with: lib_wlr_render,
|
||||
sources: glapi_h,
|
||||
sources: glapi[1],
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue