dix: generate MakePredeclaredAtoms() from BuiltInAtoms file

This function probably been (half?) auto generated somewhere back in the
dark ages (there're still remains of the former generator, which doesn't
work anymore, and hasn't been updated for ages). It's been added to SCM
with R6.6 baseline - and from that on manually maintained.

Adding a little generator to create source from "BuiltInAtoms" file,
directly in the build process.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1670>
This commit is contained in:
Enrico Weigelt, metux IT consult 2024-09-04 16:01:11 +02:00 committed by Marge Bot
parent 4775f547d8
commit 44e6558934
3 changed files with 45 additions and 153 deletions

37
dix/generate-atoms Executable file
View File

@ -0,0 +1,37 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: MIT OR X11
#
# Copyright © 2024 Enrico Weigelt, metux IT consult <info@metux.net>
INPUT="$1"
OUTPUT="$2"
do_line() {
local name="$1"
[ "$2" != "@" ] && return 0
echo " if (MakeAtom(\"$name\", ${#name}, 1) != XA_$name)"
echo " AtomError();"
}
cat > "$OUTPUT" << __END__
/* THIS IS A GENERATED FILE
*
* Do not change! Changing this file implies a protocol change!
*/
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
#include <X11/X.h>
#include <X11/Xatom.h>
#include "misc.h"
#include "dix.h"
void
MakePredeclaredAtoms(void)
{
__END__
( grep '@' < "$INPUT" ) | ( while read l ; do do_line $l ; done ) >> "$OUTPUT"
echo "}" >> "$OUTPUT"

View File

@ -1,151 +0,0 @@
/* THIS IS A GENERATED FILE
*
* Do not change! Changing this file implies a protocol change!
*/
#include <dix-config.h>
#include <X11/X.h>
#include <X11/Xatom.h>
#include "misc.h"
#include "dix.h"
void
MakePredeclaredAtoms(void)
{
if (MakeAtom("PRIMARY", 7, 1) != XA_PRIMARY)
AtomError();
if (MakeAtom("SECONDARY", 9, 1) != XA_SECONDARY)
AtomError();
if (MakeAtom("ARC", 3, 1) != XA_ARC)
AtomError();
if (MakeAtom("ATOM", 4, 1) != XA_ATOM)
AtomError();
if (MakeAtom("BITMAP", 6, 1) != XA_BITMAP)
AtomError();
if (MakeAtom("CARDINAL", 8, 1) != XA_CARDINAL)
AtomError();
if (MakeAtom("COLORMAP", 8, 1) != XA_COLORMAP)
AtomError();
if (MakeAtom("CURSOR", 6, 1) != XA_CURSOR)
AtomError();
if (MakeAtom("CUT_BUFFER0", 11, 1) != XA_CUT_BUFFER0)
AtomError();
if (MakeAtom("CUT_BUFFER1", 11, 1) != XA_CUT_BUFFER1)
AtomError();
if (MakeAtom("CUT_BUFFER2", 11, 1) != XA_CUT_BUFFER2)
AtomError();
if (MakeAtom("CUT_BUFFER3", 11, 1) != XA_CUT_BUFFER3)
AtomError();
if (MakeAtom("CUT_BUFFER4", 11, 1) != XA_CUT_BUFFER4)
AtomError();
if (MakeAtom("CUT_BUFFER5", 11, 1) != XA_CUT_BUFFER5)
AtomError();
if (MakeAtom("CUT_BUFFER6", 11, 1) != XA_CUT_BUFFER6)
AtomError();
if (MakeAtom("CUT_BUFFER7", 11, 1) != XA_CUT_BUFFER7)
AtomError();
if (MakeAtom("DRAWABLE", 8, 1) != XA_DRAWABLE)
AtomError();
if (MakeAtom("FONT", 4, 1) != XA_FONT)
AtomError();
if (MakeAtom("INTEGER", 7, 1) != XA_INTEGER)
AtomError();
if (MakeAtom("PIXMAP", 6, 1) != XA_PIXMAP)
AtomError();
if (MakeAtom("POINT", 5, 1) != XA_POINT)
AtomError();
if (MakeAtom("RECTANGLE", 9, 1) != XA_RECTANGLE)
AtomError();
if (MakeAtom("RESOURCE_MANAGER", 16, 1) != XA_RESOURCE_MANAGER)
AtomError();
if (MakeAtom("RGB_COLOR_MAP", 13, 1) != XA_RGB_COLOR_MAP)
AtomError();
if (MakeAtom("RGB_BEST_MAP", 12, 1) != XA_RGB_BEST_MAP)
AtomError();
if (MakeAtom("RGB_BLUE_MAP", 12, 1) != XA_RGB_BLUE_MAP)
AtomError();
if (MakeAtom("RGB_DEFAULT_MAP", 15, 1) != XA_RGB_DEFAULT_MAP)
AtomError();
if (MakeAtom("RGB_GRAY_MAP", 12, 1) != XA_RGB_GRAY_MAP)
AtomError();
if (MakeAtom("RGB_GREEN_MAP", 13, 1) != XA_RGB_GREEN_MAP)
AtomError();
if (MakeAtom("RGB_RED_MAP", 11, 1) != XA_RGB_RED_MAP)
AtomError();
if (MakeAtom("STRING", 6, 1) != XA_STRING)
AtomError();
if (MakeAtom("VISUALID", 8, 1) != XA_VISUALID)
AtomError();
if (MakeAtom("WINDOW", 6, 1) != XA_WINDOW)
AtomError();
if (MakeAtom("WM_COMMAND", 10, 1) != XA_WM_COMMAND)
AtomError();
if (MakeAtom("WM_HINTS", 8, 1) != XA_WM_HINTS)
AtomError();
if (MakeAtom("WM_CLIENT_MACHINE", 17, 1) != XA_WM_CLIENT_MACHINE)
AtomError();
if (MakeAtom("WM_ICON_NAME", 12, 1) != XA_WM_ICON_NAME)
AtomError();
if (MakeAtom("WM_ICON_SIZE", 12, 1) != XA_WM_ICON_SIZE)
AtomError();
if (MakeAtom("WM_NAME", 7, 1) != XA_WM_NAME)
AtomError();
if (MakeAtom("WM_NORMAL_HINTS", 15, 1) != XA_WM_NORMAL_HINTS)
AtomError();
if (MakeAtom("WM_SIZE_HINTS", 13, 1) != XA_WM_SIZE_HINTS)
AtomError();
if (MakeAtom("WM_ZOOM_HINTS", 13, 1) != XA_WM_ZOOM_HINTS)
AtomError();
if (MakeAtom("MIN_SPACE", 9, 1) != XA_MIN_SPACE)
AtomError();
if (MakeAtom("NORM_SPACE", 10, 1) != XA_NORM_SPACE)
AtomError();
if (MakeAtom("MAX_SPACE", 9, 1) != XA_MAX_SPACE)
AtomError();
if (MakeAtom("END_SPACE", 9, 1) != XA_END_SPACE)
AtomError();
if (MakeAtom("SUPERSCRIPT_X", 13, 1) != XA_SUPERSCRIPT_X)
AtomError();
if (MakeAtom("SUPERSCRIPT_Y", 13, 1) != XA_SUPERSCRIPT_Y)
AtomError();
if (MakeAtom("SUBSCRIPT_X", 11, 1) != XA_SUBSCRIPT_X)
AtomError();
if (MakeAtom("SUBSCRIPT_Y", 11, 1) != XA_SUBSCRIPT_Y)
AtomError();
if (MakeAtom("UNDERLINE_POSITION", 18, 1) != XA_UNDERLINE_POSITION)
AtomError();
if (MakeAtom("UNDERLINE_THICKNESS", 19, 1) != XA_UNDERLINE_THICKNESS)
AtomError();
if (MakeAtom("STRIKEOUT_ASCENT", 16, 1) != XA_STRIKEOUT_ASCENT)
AtomError();
if (MakeAtom("STRIKEOUT_DESCENT", 17, 1) != XA_STRIKEOUT_DESCENT)
AtomError();
if (MakeAtom("ITALIC_ANGLE", 12, 1) != XA_ITALIC_ANGLE)
AtomError();
if (MakeAtom("X_HEIGHT", 8, 1) != XA_X_HEIGHT)
AtomError();
if (MakeAtom("QUAD_WIDTH", 10, 1) != XA_QUAD_WIDTH)
AtomError();
if (MakeAtom("WEIGHT", 6, 1) != XA_WEIGHT)
AtomError();
if (MakeAtom("POINT_SIZE", 10, 1) != XA_POINT_SIZE)
AtomError();
if (MakeAtom("RESOLUTION", 10, 1) != XA_RESOLUTION)
AtomError();
if (MakeAtom("COPYRIGHT", 9, 1) != XA_COPYRIGHT)
AtomError();
if (MakeAtom("NOTICE", 6, 1) != XA_NOTICE)
AtomError();
if (MakeAtom("FONT_NAME", 9, 1) != XA_FONT_NAME)
AtomError();
if (MakeAtom("FAMILY_NAME", 11, 1) != XA_FAMILY_NAME)
AtomError();
if (MakeAtom("FULL_NAME", 9, 1) != XA_FULL_NAME)
AtomError();
if (MakeAtom("CAP_HEIGHT", 10, 1) != XA_CAP_HEIGHT)
AtomError();
if (MakeAtom("WM_CLASS", 8, 1) != XA_WM_CLASS)
AtomError();
if (MakeAtom("WM_TRANSIENT_FOR", 16, 1) != XA_WM_TRANSIENT_FOR)
AtomError();
}

View File

@ -18,7 +18,6 @@ srcs_dix = [
'globals.c',
'glyphcurs.c',
'grabs.c',
'initatoms.c',
'inpututils.c',
'pixmap.c',
'privates.c',
@ -35,6 +34,13 @@ srcs_dix = [
'window.c',
]
atom_generator = generator(
find_program('generate-atoms'),
output: '@BASENAME@.c',
arguments : ['@INPUT@', '@OUTPUT@'])
builtinatoms_src = atom_generator.process('BuiltInAtoms')
dtrace_src = []
if with_dtrace
dtrace_object = generator(dtrace,
@ -48,7 +54,7 @@ endif
dtrace_dep = declare_dependency(sources: [dtrace_src, dtrace_hdr])
libxserver_dix = static_library('libxserver_dix',
srcs_dix,
[ srcs_dix, builtinatoms_src ],
include_directories: inc,
dependencies: [ dtrace_dep, common_dep, ]
)