[gtk+/wip/meson: 174/215] meson: gdk: build individual backends as static libs



commit 85d809a249549d1abd0bc74415f4ccf52c5ad3cd
Author: Tim-Philipp Müller <tim centricular com>
Date:   Mon Mar 20 00:37:09 2017 +0000

    meson: gdk: build individual backends as static libs
    
    This is how it's done in the autotools build. Also avoids problems
    with multiple source files having the same name (gdkeventsource.c).
    
    Also move broadway backend code into broadway subdir.

 gdk/broadway/meson.build             |   63 ++++++++++++++++++++++++++++++++
 gdk/meson.build                      |   67 ++++++----------------------------
 gdk/wayland/gdkeventsource-wayland.c |    1 -
 gdk/wayland/meson.build              |    8 ++++-
 gdk/x11/meson.build                  |    6 +++
 gtk/meson.build                      |    2 +-
 6 files changed, 88 insertions(+), 59 deletions(-)
---
diff --git a/gdk/broadway/meson.build b/gdk/broadway/meson.build
new file mode 100644
index 0000000..0e5b1c4
--- /dev/null
+++ b/gdk/broadway/meson.build
@@ -0,0 +1,63 @@
+gdk_broadway_sources = files([
+  'broadway-buffer.c',
+  'broadway-output.c',
+  'broadway-server.c',
+  'broadwayd.c',
+  'gdkbroadway-server.c',
+  'gdkcursor-broadway.c',
+  'gdkdevice-broadway.c',
+  'gdkdevicemanager-broadway.c',
+  'gdkdisplay-broadway.c',
+  'gdkdnd-broadway.c',
+  'gdkeventsource.c',
+  'gdkglobals-broadway.c',
+  'gdkkeys-broadway.c',
+  'gdkmonitor-broadway.c',
+  'gdkproperty-broadway.c',
+  'gdkscreen-broadway.c',
+  'gdkselection-broadway.c',
+  'gdkwindow-broadway.c',
+])
+
+gdk_broadway_public_headers = [
+  'gdkbroadwaydisplay.h',
+  'gdkbroadwaywindow.h',
+  'gdkbroadwaycursor.h',
+  'gdkbroadwaymonitor.h',
+]
+
+# Broadway backend headers aren't installed it seems
+#install_headers(gdk_broadway_public_headers, subdir: 'gtk-4.0/gdk/broadway/')
+#install_headers('gdkbroadway.h', subdir: 'gtk-4.0/gdk/')
+
+gdk_broadway_deps = [shmlib]
+
+libgdk_broadway = static_library('libgdk-broadway',
+  gdk_broadway_sources, gdkconfig, gdkenum_h,
+  include_directories: [confinc, gdkinc],
+  c_args: ['-DGDK_COMPILATION', '-DG_LOG_DOMAIN="Gdk"'],
+  dependencies: [gdk_deps, gdk_broadway_deps])
+
+# gtk4-broadwayd
+
+broadwayd_syslib = os_win32 ? find_library('ws2_32') : shmlib
+
+clienthtml_h = custom_target('clienthtml.h',
+  input : 'client.html',
+  output : 'clienthtml.h',
+  command : [find_program('toarray.pl'), 'client_html', '@INPUT@'],
+  capture : true)
+
+broadwayjs_h = custom_target('broadwayjs.h',
+  input : ['broadway.js', 'rawinflate.min.js'],
+  output : 'broadwayjs.h',
+  command : [find_program('toarray.pl'), 'broadway_js', '@INPUT0@', '@INPUT1@'],
+  capture : true)
+
+executable('gtk4-broadwayd',
+  clienthtml_h, broadwayjs_h,
+  'broadwayd.c', 'broadway-server.c', 'broadway-buffer.c', 'broadway-output.c',
+  include_directories: [confinc, gdkinc],
+  c_args: ['-DGDK_COMPILATION', '-DG_LOG_DOMAIN="Gdk"'],
+  dependencies : [broadwayd_syslib, gdk_deps],
+  install : true)
diff --git a/gdk/meson.build b/gdk/meson.build
index aa30b5f..8e8b0ad 100644
--- a/gdk/meson.build
+++ b/gdk/meson.build
@@ -85,41 +85,6 @@ gdk_private_h_sources = files([
   'gdkseatdefaultprivate.h',
 ])
 
-gdk_broadway_sources = files([
-  'broadway/broadway-buffer.c',
-  'broadway/broadway-buffer.h',
-  'broadway/broadway-output.c',
-  'broadway/broadway-output.h',
-  'broadway/broadway-server.c',
-  'broadway/broadway-server.h',
-  'broadway/broadwayd.c',
-  'broadway/gdkbroadway-server.c',
-  'broadway/gdkcursor-broadway.c',
-  'broadway/gdkdevice-broadway.c',
-  'broadway/gdkdevice-broadway.h',
-  'broadway/gdkdevicemanager-broadway.c',
-  'broadway/gdkdevicemanager-broadway.h',
-  'broadway/gdkdisplay-broadway.c',
-  'broadway/gdkdisplay-broadway.h',
-  'broadway/gdkdnd-broadway.c',
-  'broadway/gdkeventsource.c',
-  'broadway/gdkeventsource.h',
-  'broadway/gdkglobals-broadway.c',
-  'broadway/gdkkeys-broadway.c',
-  'broadway/gdkmonitor-broadway.c',
-  'broadway/gdkmonitor-broadway.h',
-  'broadway/gdkproperty-broadway.c',
-  'broadway/gdkscreen-broadway.c',
-  'broadway/gdkscreen-broadway.h',
-  'broadway/gdkselection-broadway.c',
-  'broadway/gdkwindow-broadway.c',
-  'broadway/gdkwindow-broadway.h',
-])
-
-gdk_broadway_private_sources = files([
-  'broadway/gdkprivate-broadway.h'
-])
-
 gdk_gresource_xml = configure_file(output : 'gdk.gresource.xml',
   input : 'gen-gsk-resources-xml.py',
   command : [find_program('gen-gdk-gresources-xml.py'),
@@ -173,6 +138,8 @@ gdkversionmacros = configure_file(
   configuration: gdkversion_cdata,
   install_dir: 'include/gtk-4.0/gdk/')
 
+gdkinc = include_directories('.')
+
 xinc = include_directories('x11')
 wlinc = include_directories('.')
 
@@ -211,32 +178,20 @@ if wayland_enabled or broadway_enabled
   endif
 endif
 
-if x11_enabled
-  subdir('x11')
-  gdk_deps += gdk_x11_deps
-  gdk_sources += gdk_x11_sources
-endif
-
-if wayland_enabled
-  subdir('wayland')
-  gdk_deps += gdk_wayland_deps
-  gdk_sources += gdk_wayland_sources
-endif
-
-if broadway_enabled
-  gdk_deps += [
-    shmlib,
-  ]
-  gdk_sources += [
-    gdk_broadway_sources,
-    gdk_broadway_private_sources
-  ]
-endif
+gdk_backends = []
+foreach backend : ['broadway', 'wayland', 'x11']
+  if get_variable('@0@_enabled'.format(backend))
+    subdir(backend)
+    gdk_deps += get_variable('gdk_@0@_deps'.format(backend))
+    gdk_backends += get_variable('libgdk_@0@'.format(backend))
+  endif
+endforeach
 
 libgdk = static_library('gdk',
   sources: [gdk_sources, gdkconfig],
   c_args: ['-DGDK_COMPILATION', '-DG_LOG_DOMAIN="Gdk"'],
   include_directories: [confinc, xinc, wlinc],
+  link_with: gdk_backends,
   dependencies: gdk_deps,
 )
 
diff --git a/gdk/wayland/meson.build b/gdk/wayland/meson.build
index 5f4b1ba..d1a96b6 100644
--- a/gdk/wayland/meson.build
+++ b/gdk/wayland/meson.build
@@ -4,7 +4,7 @@ gdk_wayland_sources = files([
   'gdkdevice-wayland.c',
   'gdkdisplay-wayland.c',
   'gdkdnd-wayland.c',
-  'gdkeventsource-wayland.c',
+  'gdkeventsource.c',
   'gdkglcontext-wayland.c',
   'gdkkeys-wayland.c',
   'gdkmonitor-wayland.c',
@@ -79,3 +79,9 @@ foreach p : proto_sources
     output : '@0@-protocol.c'.format(output_base),
     command: [genprotocols, wayland_scanner, '@INPUT@', '@OUTPUT@', 'code'])
 endforeach
+
+libgdk_wayland = static_library('libgdk-wayland',
+  gdk_wayland_sources, gdkconfig, gdkenum_h,
+  include_directories: [confinc, gdkinc],
+  c_args: ['-DGDK_COMPILATION', '-DG_LOG_DOMAIN="Gdk"'],
+  dependencies: [gdk_deps, gdk_wayland_deps])
diff --git a/gdk/x11/meson.build b/gdk/x11/meson.build
index 9508bea..26b35d5 100644
--- a/gdk/x11/meson.build
+++ b/gdk/x11/meson.build
@@ -67,3 +67,9 @@ gdk_x11_deps = [
   xcomposite_dep,
   xrandr_dep,
 ]
+
+libgdk_x11 = static_library('libgdk-x11',
+  gdk_x11_sources, gdkconfig, gdkenum_h,
+  include_directories: [confinc, gdkinc],
+  c_args: ['-DGDK_COMPILATION', '-DG_LOG_DOMAIN="Gdk"'],
+  dependencies: [gdk_deps, gdk_x11_deps])
diff --git a/gtk/meson.build b/gtk/meson.build
index 5b833cf..25adaa4 100644
--- a/gtk/meson.build
+++ b/gtk/meson.build
@@ -793,7 +793,7 @@ gnome.compile_schemas()
 # install_headers(a11y_headers,           subdir: 'gtk-3.0/gtk/a11y/')
 
 libgtk = shared_library('gtk',
-  sources: [typefuncs, gtk_sources, gtkmarshal_h],
+  sources: [typefuncs, gtk_sources, gtkmarshal_h, gtkprivatetypebuiltins_h],
   c_args: gtk_cargs,
   include_directories: [confinc, gdkinc, gtkinc],
   dependencies: [gtk_deps, libgdk_dep, libgsk_dep],


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]