Initial checkin of Pika from heckimp
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
#!/bin/sh
|
||||
|
||||
# This is a wrapper to the tools/pika-mkenums perl script which:
|
||||
# * sets a few common values;
|
||||
# * updates the ${filebase}enums.c directly in the source directory in
|
||||
# order for it to be versionned.
|
||||
# * Create a no-op stamp-header file to be included by the resulting
|
||||
# enums.c. The goal is to make sure that meson will trigger a rebuild
|
||||
# of the enums.c generation before compiling, if the enums.h changed.
|
||||
# See the explanation here:
|
||||
# https://github.com/mesonbuild/meson/issues/10196#issuecomment-1080742592
|
||||
# This is also the trick used for pdbgen.
|
||||
|
||||
# Arguments to this script:
|
||||
# The perl binary to use.
|
||||
PERL="$1"
|
||||
# Root of the source directory.
|
||||
top_srcdir="$2"
|
||||
# Current source folder.
|
||||
srcdir="$3"
|
||||
# Current build folder.
|
||||
builddir="$4"
|
||||
# Base of the generated enums.c file name.
|
||||
filebase="$5"
|
||||
# Includes before #include "${filebase}enums.h"
|
||||
preincludes="$6"
|
||||
# Includes after #include "${filebase}enums.h"
|
||||
postincludes="$7"
|
||||
# Value for --dtail option if the default doesn't fit.
|
||||
dtail="$8"
|
||||
|
||||
if [ -z "$dtail" ]; then
|
||||
dtail=" { 0, NULL, NULL }\n };\n\n static GType type = 0;\n\n if (G_UNLIKELY (! type))\n {\n type = g_@type@_register_static (\"@EnumName@\", values);\n pika_type_set_translation_context (type, \"@enumnick@\");\n pika_@type@_set_value_descriptions (type, descs);\n }\n\n return type;\n}\n"
|
||||
fi
|
||||
|
||||
$PERL $top_srcdir/tools/pika-mkenums \
|
||||
--fhead "#include \"stamp-${filebase}enums.h\"\n#include \"config.h\"\n$preincludes#include \"${filebase}enums.h\"\n$postincludes" \
|
||||
--fprod "\n/* enumerations from \"@basename@\" */" \
|
||||
--vhead "GType\n@enum_name@_get_type (void)\n{\n static const G@Type@Value values[] =\n {" \
|
||||
--vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
|
||||
--vtail " { 0, NULL, NULL }\n };\n" \
|
||||
--dhead " static const Pika@Type@Desc descs[] =\n {" \
|
||||
--dprod " { @VALUENAME@, @valuedesc@, @valuehelp@ },@if ('@valueabbrev@' ne 'NULL')@\n /* Translators: this is an abbreviated version of @valueudesc@.\n Keep it short. */\n { @VALUENAME@, @valueabbrev@, NULL },@endif@" \
|
||||
--dtail "$dtail" \
|
||||
"$srcdir/${filebase}enums.h" > "$builddir/${filebase}enums-tmp.c"
|
||||
|
||||
if ! cmp -s "$builddir/${filebase}enums-tmp.c" "$srcdir/${filebase}enums.c"; then
|
||||
cp "$builddir/${filebase}enums-tmp.c" "$srcdir/${filebase}enums.c";
|
||||
else
|
||||
touch "$srcdir/${filebase}enums.c"; 2> /dev/null || true;
|
||||
fi
|
||||
|
||||
echo "/* Generated on `date`. */" > $builddir/stamp-${filebase}enums.h
|
||||
Reference in New Issue
Block a user