[Spice-devel] [PATCH spice-gtk v4 1/3] Rename generated vncdisplaykeymap_*.c files to .h

Frediano Ziglio fziglio at redhat.com
Tue Aug 14 07:47:39 UTC 2018


> On 13/08/18 07:23, Frediano Ziglio wrote:
> >>
> >> Ninja parallel build fails in certain environments, so it is required
> >> specify those files as a dependency so that vncdisplaykeymap.c will only
> >> be built after all files it depends on are generated.
> >>
> >> The problem is that, when using meson declare_dependency() function,
> >> only header files should be used as the "sources" keyword, as documented
> >> in
> >> http://mesonbuild.com/Wrap-best-practices-and-tips.html#declare-generated-headers-explicitly
> >> and
> >> http://mesonbuild.com/Wrap-best-practices-and-tips.html#avoid-exposing-compilable-source-files-in-declare_dependency
> >>
> >> Signed-off-by: Eduardo Lima (Etrunko) <etrunko at redhat.com>
> > 
> > Patch looks good for me, however the problem is not the file extensions,
> > but the
> > dependencies declaration. Is not the library that is dependent directly on
> > these
> > files, is the C file (src/vncdisplaykeymap.c) which is dependent directly
> > on these files.
> > So it is the meson.build file that should be updated to reflect this.
> > Does Meson lack the possibility to specify dependencies between source
> > files?
> 
> Yes, this is the issue, as far as I know, it is not possible to declare
> dependency between files.
> 

Very sad! I tried to find a possible workaround like doing a custom target
but using a compiler and didn't find a way to pass the compiler instead of
an executable; I was thinking to use a library but still I would need
another file. But also this seems to indicate that Meson dependency generation
can't generate dependencies in a proper way. Why files with .h are considered
and file with .c not? We have the same problem in spice-server for template
files which are .c.

> > 
> > Frediano
> > 
> >> ---
> >>  src/Makefile.am        | 28 ++++++++++++++--------------
> >>  src/vncdisplaykeymap.c | 14 +++++++-------
> >>  2 files changed, 21 insertions(+), 21 deletions(-)
> >>
> >> diff --git a/src/Makefile.am b/src/Makefile.am
> >> index afad922..e362b02 100644
> >> --- a/src/Makefile.am
> >> +++ b/src/Makefile.am
> >> @@ -2,13 +2,13 @@ NULL =
> >>  SUBDIRS =
> >>  
> >>  KEYMAPS =					\
> >> -	vncdisplaykeymap_xorgevdev2xtkbd.c	\
> >> -	vncdisplaykeymap_xorgkbd2xtkbd.c	\
> >> -	vncdisplaykeymap_xorgxquartz2xtkbd.c	\
> >> -	vncdisplaykeymap_xorgxwin2xtkbd.c	\
> >> -	vncdisplaykeymap_osx2xtkbd.c		\
> >> -	vncdisplaykeymap_win322xtkbd.c		\
> >> -	vncdisplaykeymap_x112xtkbd.c		\
> >> +	vncdisplaykeymap_xorgevdev2xtkbd.h	\
> >> +	vncdisplaykeymap_xorgkbd2xtkbd.h	\
> >> +	vncdisplaykeymap_xorgxquartz2xtkbd.h	\
> >> +	vncdisplaykeymap_xorgxwin2xtkbd.h	\
> >> +	vncdisplaykeymap_osx2xtkbd.h		\
> >> +	vncdisplaykeymap_win322xtkbd.h		\
> >> +	vncdisplaykeymap_x112xtkbd.h		\
> >>  	$(NULL)
> >>  
> >>  # End users build dependencies can be cleaned
> >> @@ -471,25 +471,25 @@ spice-widget-enums.h: spice-widget.h
> >>  vncdisplaykeymap.c: $(KEYMAPS)
> >>  $(KEYMAPS): $(srcdir)/$(KEYMAP_GEN) $(srcdir)/$(KEYMAP_CSV)
> >>  
> >> -vncdisplaykeymap_xorgevdev2xtkbd.c:
> >> +vncdisplaykeymap_xorgevdev2xtkbd.h:
> >>  	$(AM_V_GEN)$(PYTHON) $(srcdir)/$(KEYMAP_GEN) --lang glib2 --varname
> >>  	keymap_xorgevdev2xtkbd code-map $(srcdir)/$(KEYMAP_CSV) xorgevdev xtkbd
> >>  	>
> >>  	$@ || rm $@
> >>  
> >> -vncdisplaykeymap_xorgkbd2xtkbd.c:
> >> +vncdisplaykeymap_xorgkbd2xtkbd.h:
> >>  	$(AM_V_GEN)$(PYTHON) $(srcdir)/$(KEYMAP_GEN) --lang glib2 --varname
> >>  	keymap_xorgkbd2xtkbd code-map $(srcdir)/$(KEYMAP_CSV) xorgkbd xtkbd > $@
> >>  	|| rm $@
> >>  
> >> -vncdisplaykeymap_xorgxquartz2xtkbd.c:
> >> +vncdisplaykeymap_xorgxquartz2xtkbd.h:
> >>  	$(AM_V_GEN)$(PYTHON) $(srcdir)/$(KEYMAP_GEN) --lang glib2 --varname
> >>  	keymap_xorgxquartz2xtkbd code-map $(srcdir)/$(KEYMAP_CSV) xorgxquartz
> >>  	xtkbd > $@ || rm $@
> >>  
> >> -vncdisplaykeymap_xorgxwin2xtkbd.c:
> >> +vncdisplaykeymap_xorgxwin2xtkbd.h:
> >>  	$(AM_V_GEN)$(PYTHON) $(srcdir)/$(KEYMAP_GEN) --lang glib2 --varname
> >>  	keymap_xorgxwin2xtkbd code-map $(srcdir)/$(KEYMAP_CSV) xorgxwin xtkbd >
> >>  	$@
> >>  	|| rm $@
> >>  
> >> -vncdisplaykeymap_osx2xtkbd.c:
> >> +vncdisplaykeymap_osx2xtkbd.h:
> >>  	$(AM_V_GEN)$(PYTHON) $(srcdir)/$(KEYMAP_GEN) --lang glib2 --varname
> >>  	keymap_osx2xtkbd code-map $(srcdir)/$(KEYMAP_CSV) osx xtkbd > $@ || rm
> >>  	$@
> >>  
> >> -vncdisplaykeymap_win322xtkbd.c:
> >> +vncdisplaykeymap_win322xtkbd.h:
> >>  	$(AM_V_GEN)$(PYTHON) $(srcdir)/$(KEYMAP_GEN) --lang glib2 --varname
> >>  	keymap_win322xtkbd code-map $(srcdir)/$(KEYMAP_CSV) win32 xtkbd > $@ ||
> >>  	rm
> >>  	$@
> >>  
> >> -vncdisplaykeymap_x112xtkbd.c:
> >> +vncdisplaykeymap_x112xtkbd.h:
> >>  	$(AM_V_GEN)$(PYTHON) $(srcdir)/$(KEYMAP_GEN) --lang glib2 --varname
> >>  	keymap_x112xtkbd code-map $(srcdir)/$(KEYMAP_CSV) x11 xtkbd > $@ || rm
> >>  	$@
> >>  
> >>  -include $(INTROSPECTION_MAKEFILE)
> >> diff --git a/src/vncdisplaykeymap.c b/src/vncdisplaykeymap.c
> >> index e1a16aa..e09e330 100644
> >> --- a/src/vncdisplaykeymap.c
> >> +++ b/src/vncdisplaykeymap.c
> >> @@ -66,7 +66,7 @@ static unsigned int ref_count_for_untranslated_keys = 0;
> >>  
> >>  #if defined(GDK_WINDOWING_X11) || defined(GDK_WINDOWING_WAYLAND)
> >>  /* Xorg Linux + evdev (offset evdev keycodes) */
> >> -#include "vncdisplaykeymap_xorgevdev2xtkbd.c"
> >> +#include "vncdisplaykeymap_xorgevdev2xtkbd.h"
> >>  #endif
> >>  
> >>  #ifdef GDK_WINDOWING_X11
> >> @@ -76,11 +76,11 @@ static unsigned int ref_count_for_untranslated_keys =
> >> 0;
> >>  #include <string.h>
> >>  
> >>  /* Xorg Linux + kbd (offset + mangled XT keycodes) */
> >> -#include "vncdisplaykeymap_xorgkbd2xtkbd.c"
> >> +#include "vncdisplaykeymap_xorgkbd2xtkbd.h"
> >>  /* Xorg OS-X aka XQuartz (offset OS-X keycodes) */
> >> -#include "vncdisplaykeymap_xorgxquartz2xtkbd.c"
> >> +#include "vncdisplaykeymap_xorgxquartz2xtkbd.h"
> >>  /* Xorg Cygwin aka XWin (offset + mangled XT keycodes) */
> >> -#include "vncdisplaykeymap_xorgxwin2xtkbd.c"
> >> +#include "vncdisplaykeymap_xorgxwin2xtkbd.h"
> >>  
> >>  #endif
> >>  
> >> @@ -88,19 +88,19 @@ static unsigned int ref_count_for_untranslated_keys =
> >> 0;
> >>  #include <gdk/gdkwin32.h>
> >>  
> >>  /* Win32 native virtual keycodes */
> >> -#include "vncdisplaykeymap_win322xtkbd.c"
> >> +#include "vncdisplaykeymap_win322xtkbd.h"
> >>  #endif
> >>  
> >>  #ifdef GDK_WINDOWING_QUARTZ
> >>  #include <gdk/gdkquartz.h>
> >>  
> >>  /* OS-X native keycodes */
> >> -#include "vncdisplaykeymap_osx2xtkbd.c"
> >> +#include "vncdisplaykeymap_osx2xtkbd.h"
> >>  #endif
> >>  
> >>  #ifdef GDK_WINDOWING_BROADWAY
> >>  /* X11 keysyms */
> >> -#include "vncdisplaykeymap_x112xtkbd.c"
> >> +#include "vncdisplaykeymap_x112xtkbd.h"
> >>  #endif
> >>  
> >>  #ifdef GDK_WINDOWING_X11
> 

Frediano


More information about the Spice-devel mailing list