[gnome-builder] build: use subdirectories for meson.build files



commit d3fe98d86b3fee2cadff044d95024402987010ab
Author: Christian Hergert <chergert redhat com>
Date:   Mon Sep 18 15:15:33 2017 -0700

    build: use subdirectories for meson.build files
    
    This allows us to keep the build information much closer to the code
    implementation. Jumping between the libide/meson.build and invidivual
    sources was getting cumbersome and prone to error.

 contrib/gstyle/meson.build       |  110 +++---
 libide/application/meson.build   |   30 ++
 libide/buffers/meson.build       |   32 ++
 libide/buildconfig/meson.build   |   21 +
 libide/buildsystem/meson.build   |   56 +++
 libide/buildui/meson.build       |   23 ++
 libide/debugger/meson.build      |   62 +++
 libide/devices/meson.build       |   21 +
 libide/diagnostics/meson.build   |   29 ++
 libide/directory/meson.build     |   15 +
 libide/doap/meson.build          |   19 +
 libide/documentation/meson.build |   18 +
 libide/editor/meson.build        |   47 +++
 libide/files/meson.build         |   20 +
 libide/formatting/meson.build    |   14 +
 libide/genesis/meson.build       |   12 +
 libide/greeter/meson.build       |    8 +
 libide/gsettings/meson.build     |    8 +
 libide/highlighting/meson.build  |   21 +
 libide/keybindings/meson.build   |    8 +
 libide/langserv/meson.build      |   32 ++
 libide/layout/meson.build        |   39 ++
 libide/local/meson.build         |   12 +
 libide/logging/meson.build       |   12 +
 libide/meson.build               |  759 +++++++-------------------------------
 libide/modelines/meson.build     |    8 +
 libide/plugins/meson.build       |   20 +
 libide/preferences/meson.build   |   22 ++
 libide/projects/meson.build      |   31 ++
 libide/rename/meson.build        |   12 +
 libide/runner/meson.build        |   23 ++
 libide/runtimes/meson.build      |   21 +
 libide/search/meson.build        |   24 ++
 libide/snippets/meson.build      |   31 ++
 libide/sourceview/meson.build    |   64 ++++
 libide/subprocess/meson.build    |   25 ++
 libide/symbols/meson.build       |   31 ++
 libide/template/meson.build      |   16 +
 libide/threading/meson.build     |   17 +
 libide/transfers/meson.build     |   24 ++
 libide/util/meson.build          |   45 +++
 libide/vcs/meson.build           |   23 ++
 libide/workbench/meson.build     |   32 ++
 libide/workers/meson.build       |   20 +
 meson_options.txt                |    1 -
 45 files changed, 1230 insertions(+), 688 deletions(-)
---
diff --git a/contrib/gstyle/meson.build b/contrib/gstyle/meson.build
index 4652a37..47d5b42 100644
--- a/contrib/gstyle/meson.build
+++ b/contrib/gstyle/meson.build
@@ -95,68 +95,62 @@ libgstyle_dep = declare_dependency(
   include_directories: include_directories('.'),
 )
 
-if get_option('with_introspection')
-
-  libgstyle_introspection_sources = [
-    'gstyle-cielab.h',
-    'gstyle-cielab.c',
-    'gstyle-color.h',
-    'gstyle-color.c',
-    'gstyle-color-component.h',
-    'gstyle-color-component.c',
-    'gstyle-color-convert.h',
-    'gstyle-color-convert.c',
-    'gstyle-color-filter.h',
-    'gstyle-color-filter.c',
-    'gstyle-color-item.h',
-    'gstyle-color-item.c',
-    'gstyle-color-panel.h',
-    'gstyle-color-panel.c',
-    'gstyle-color-plane.h',
-    'gstyle-color-plane.c',
-    'gstyle-color-scale.h',
-    'gstyle-color-scale.c',
-    'gstyle-color-widget.h',
-    'gstyle-color-widget.c',
-    'gstyle-eyedropper.h',
-    'gstyle-eyedropper.c',
-    'gstyle-hsv.h',
-    'gstyle-hsv.c',
-    'gstyle-palette.h',
-    'gstyle-palette.c',
-    'gstyle-palette-widget.h',
-    'gstyle-palette-widget.c',
-    'gstyle-slidein.h',
-    'gstyle-slidein.c',
-    'gstyle-xyz.h',
-    'gstyle-xyz.c',
-  ]
+libgstyle_introspection_sources = [
+  'gstyle-cielab.h',
+  'gstyle-cielab.c',
+  'gstyle-color.h',
+  'gstyle-color.c',
+  'gstyle-color-component.h',
+  'gstyle-color-component.c',
+  'gstyle-color-convert.h',
+  'gstyle-color-convert.c',
+  'gstyle-color-filter.h',
+  'gstyle-color-filter.c',
+  'gstyle-color-item.h',
+  'gstyle-color-item.c',
+  'gstyle-color-panel.h',
+  'gstyle-color-panel.c',
+  'gstyle-color-plane.h',
+  'gstyle-color-plane.c',
+  'gstyle-color-scale.h',
+  'gstyle-color-scale.c',
+  'gstyle-color-widget.h',
+  'gstyle-color-widget.c',
+  'gstyle-eyedropper.h',
+  'gstyle-eyedropper.c',
+  'gstyle-hsv.h',
+  'gstyle-hsv.c',
+  'gstyle-palette.h',
+  'gstyle-palette.c',
+  'gstyle-palette-widget.h',
+  'gstyle-palette-widget.c',
+  'gstyle-slidein.h',
+  'gstyle-slidein.c',
+  'gstyle-xyz.h',
+  'gstyle-xyz.c',
+]
 
-  libgstyle_gir = gnome.generate_gir(libgstyle,
-    sources: libgstyle_introspection_sources,
-    nsversion: '1.0',
-    namespace: 'Gstyle',
-    symbol_prefix: 'gstyle',
+libgstyle_gir = gnome.generate_gir(libgstyle,
+              sources: libgstyle_introspection_sources,
+            nsversion: '1.0',
+            namespace: 'Gstyle',
+        symbol_prefix: 'gstyle',
     identifier_prefix: 'Gstyle',
-    includes: ['Gdk-3.0', 'Gio-2.0', 'Gtk-3.0', 'GtkSource-3.0'],
-    install: true,
-    install_dir_gir: pkggirdir,
-    install_dir_typelib: pkgtypelibdir,
-    extra_args: [
-      '--c-include=gstyle-private.h',
-    ],
-  )
-
-  if get_option('with_vapi')
+             includes: ['Gdk-3.0', 'Gio-2.0', 'Gtk-3.0', 'GtkSource-3.0'],
+              install: true,
+      install_dir_gir: pkggirdir,
+  install_dir_typelib: pkgtypelibdir,
+           extra_args: [ '--c-include=gstyle-private.h' ],
+)
 
-    libgstyle_vapi = gnome.generate_vapi('gstyle-private',
-      sources: libgstyle_gir[0],
-      packages: ['gio-2.0', 'gtk+-3.0', 'gtksourceview-3.0'],
-      install: true,
-      install_dir: pkgvapidir,
-    )
+if get_option('with_vapi')
 
-  endif
+  libgstyle_vapi = gnome.generate_vapi('gstyle-private',
+        sources: libgstyle_gir[0],
+       packages: ['gio-2.0', 'gtk+-3.0', 'gtksourceview-3.0'],
+        install: true,
+    install_dir: pkgvapidir,
+  )
 
 endif
 
diff --git a/libide/application/meson.build b/libide/application/meson.build
new file mode 100644
index 0000000..4632564
--- /dev/null
+++ b/libide/application/meson.build
@@ -0,0 +1,30 @@
+application_headers = [
+  'ide-application.h',
+  'ide-application-addin.h',
+  'ide-application-credits.h',
+  'ide-application-tool.h',
+]
+
+application_sources = [
+  'ide-application.c',
+  'ide-application-addin.c',
+  'ide-application-open.c',
+  'ide-application-tool.c',
+]
+
+application_private_sources = [
+  'ide-application-actions.c',
+  'ide-application-actions.h',
+  'ide-application-command-line.c',
+  'ide-application-plugins.c',
+  'ide-application-private.h',
+  'ide-application-shortcuts.c',
+  'ide-application-tests.c',
+  'ide-application-tests.h',
+]
+
+libide_public_headers += files(application_headers)
+libide_public_sources += files(application_sources)
+libide_private_sources += files(application_private_sources)
+
+install_headers(application_headers, subdir: join_paths(libide_header_subdir, 'application'))
diff --git a/libide/buffers/meson.build b/libide/buffers/meson.build
new file mode 100644
index 0000000..4dc5fdc
--- /dev/null
+++ b/libide/buffers/meson.build
@@ -0,0 +1,32 @@
+buffers_headers = [
+  'ide-buffer.h',
+  'ide-buffer-addin.h',
+  'ide-buffer-change-monitor.h',
+  'ide-buffer-manager.h',
+  'ide-unsaved-file.h',
+  'ide-unsaved-files.h',
+]
+
+buffers_sources = [
+  'ide-buffer.c',
+  'ide-buffer-addin.c',
+  'ide-buffer-change-monitor.c',
+  'ide-buffer-manager.c',
+  'ide-unsaved-file.c',
+  'ide-unsaved-files.c',
+]
+
+buffers_private_sources = [
+  'ide-buffer-private.h',
+]
+
+buffers_enums = [
+  'ide-buffer.h',
+]
+
+libide_enum_headers += files(buffers_enums)
+libide_public_headers += files(buffers_headers)
+libide_public_sources += files(buffers_sources)
+libide_private_sources += files(buffers_private_sources)
+
+install_headers(buffers_headers, subdir: join_paths(libide_header_subdir, 'buffers'))
diff --git a/libide/buildconfig/meson.build b/libide/buildconfig/meson.build
new file mode 100644
index 0000000..8451d32
--- /dev/null
+++ b/libide/buildconfig/meson.build
@@ -0,0 +1,21 @@
+buildconfig_headers = [
+  'ide-buildconfig-configuration.h',
+  'ide-buildconfig-configuration-provider.h',
+]
+
+buildconfig_sources = [
+  'ide-buildconfig-configuration.c',
+  'ide-buildconfig-configuration-provider.c',
+]
+
+buildconfig_private_sources = [
+  'ide-buildconfig-plugin.c',
+  'ide-buildconfig-pipeline-addin.c',
+  'ide-buildconfig-pipeline-addin.h',
+]
+
+libide_public_headers += files(buildconfig_headers)
+libide_public_sources += files(buildconfig_sources)
+libide_private_sources += files(buildconfig_private_sources)
+
+install_headers(buildconfig_headers, subdir: join_paths(libide_header_subdir, 'buildconfig'))
diff --git a/libide/buildsystem/meson.build b/libide/buildsystem/meson.build
new file mode 100644
index 0000000..9a90d16
--- /dev/null
+++ b/libide/buildsystem/meson.build
@@ -0,0 +1,56 @@
+buildsystem_headers = [
+  'ide-build-log.h',
+  'ide-build-manager.h',
+  'ide-build-pipeline-addin.h',
+  'ide-build-pipeline.h',
+  'ide-build-stage-launcher.h',
+  'ide-build-stage-mkdirs.h',
+  'ide-build-stage-transfer.h',
+  'ide-build-stage.h',
+  'ide-build-system-discovery.h',
+  'ide-build-system.h',
+  'ide-build-target.h',
+  'ide-build-utils.h',
+  'ide-configuration-manager.h',
+  'ide-configuration-provider.h',
+  'ide-configuration.h',
+  'ide-environment-variable.h',
+  'ide-environment.h',
+]
+
+buildsystem_sources = [
+  'ide-build-manager.c',
+  'ide-build-pipeline-addin.c',
+  'ide-build-pipeline.c',
+  'ide-build-stage-launcher.c',
+  'ide-build-stage-mkdirs.c',
+  'ide-build-stage-transfer.c',
+  'ide-build-stage.c',
+  'ide-build-system-discovery.c',
+  'ide-build-system.c',
+  'ide-build-target.c',
+  'ide-build-utils.c',
+  'ide-configuration-manager.c',
+  'ide-configuration-provider.c',
+  'ide-configuration.c',
+  'ide-environment-variable.c',
+  'ide-environment.c',
+]
+
+buildsystem_private_sources = [
+  'ide-build-log.c',
+  'ide-build-log-private.h',
+  'ide-build-stage-private.h',
+]
+
+buildsystem_enums = [
+  'ide-build-log.h',
+  'ide-build-pipeline.h',
+]
+
+libide_enum_headers += files(buildsystem_enums)
+libide_public_headers += files(buildsystem_headers)
+libide_public_sources += files(buildsystem_sources)
+libide_private_sources += files(buildsystem_private_sources)
+
+install_headers(buildsystem_headers, subdir: join_paths(libide_header_subdir, 'buildsystem'))
diff --git a/libide/buildui/meson.build b/libide/buildui/meson.build
new file mode 100644
index 0000000..7ae42da
--- /dev/null
+++ b/libide/buildui/meson.build
@@ -0,0 +1,23 @@
+buildui_private_sources = [
+  'ide-build-configuration-row.c',
+  'ide-build-configuration-row.h',
+  'ide-build-configuration-view.c',
+  'ide-build-configuration-view.h',
+  'ide-build-log-panel.c',
+  'ide-build-log-panel.h',
+  'ide-build-panel.c',
+  'ide-build-panel.h',
+  'ide-build-perspective.c',
+  'ide-build-perspective.h',
+  'ide-build-plugin.c',
+  'ide-build-tool.c',
+  'ide-build-tool.h',
+  'ide-build-workbench-addin.c',
+  'ide-build-workbench-addin.h',
+  'ide-environment-editor-row.c',
+  'ide-environment-editor-row.h',
+  'ide-environment-editor.c',
+  'ide-environment-editor.h',
+]
+
+libide_private_sources += files(buildui_private_sources)
diff --git a/libide/debugger/meson.build b/libide/debugger/meson.build
new file mode 100644
index 0000000..ca74743
--- /dev/null
+++ b/libide/debugger/meson.build
@@ -0,0 +1,62 @@
+debugger_headers = [
+  'ide-debug-manager.h',
+  'ide-debugger.h',
+  'ide-debugger-breakpoint.h',
+  'ide-debugger-breakpoints.h',
+  'ide-debugger-frame.h',
+  'ide-debugger-instruction.h',
+  'ide-debugger-library.h',
+  'ide-debugger-register.h',
+  'ide-debugger-thread-group.h',
+  'ide-debugger-thread.h',
+  'ide-debugger-types.h',
+  'ide-debugger-variable.h',
+]
+
+debugger_sources = [
+  'ide-debug-manager.c',
+  'ide-debugger.c',
+  'ide-debugger-breakpoint.c',
+  'ide-debugger-breakpoints.c',
+  'ide-debugger-frame.c',
+  'ide-debugger-instruction.c',
+  'ide-debugger-library.c',
+  'ide-debugger-register.c',
+  'ide-debugger-thread-group.c',
+  'ide-debugger-thread.c',
+  'ide-debugger-types.c',
+  'ide-debugger-variable.c',
+]
+
+debugger_private_sources = [
+  'ide-debugger-actions.c',
+  'ide-debugger-address-map.c',
+  'ide-debugger-address-map.h',
+  'ide-debugger-breakpoints-view.c',
+  'ide-debugger-breakpoints-view.h',
+  'ide-debugger-controls.c',
+  'ide-debugger-controls.h',
+  'ide-debugger-disassembly-view.c',
+  'ide-debugger-disassembly-view.h',
+  'ide-debugger-editor-addin.c',
+  'ide-debugger-editor-addin.h',
+  'ide-debugger-fallbacks.c',
+  'ide-debugger-gutter-renderer.c',
+  'ide-debugger-gutter-renderer.h',
+  'ide-debugger-libraries-view.c',
+  'ide-debugger-libraries-view.h',
+  'ide-debugger-locals-view.c',
+  'ide-debugger-locals-view.h',
+  'ide-debugger-plugin.c',
+  'ide-debugger-private.h',
+  'ide-debugger-registers-view.c',
+  'ide-debugger-registers-view.h',
+  'ide-debugger-threads-view.c',
+  'ide-debugger-threads-view.h',
+]
+
+libide_public_headers += files(debugger_headers)
+libide_public_sources += files(debugger_sources)
+libide_private_sources += files(debugger_private_sources)
+
+install_headers(debugger_headers, subdir: join_paths(libide_header_subdir, 'debugger'))
diff --git a/libide/devices/meson.build b/libide/devices/meson.build
new file mode 100644
index 0000000..361794d
--- /dev/null
+++ b/libide/devices/meson.build
@@ -0,0 +1,21 @@
+devices_headers = [
+  'ide-device-manager.h',
+  'ide-device-provider.h',
+  'ide-device.h',
+]
+
+devices_sources = [
+  'ide-device-manager.c',
+  'ide-device-provider.c',
+  'ide-device.c',
+]
+
+devices_enums = [
+  'ide-device.h',
+]
+
+libide_enum_headers += files(devices_enums)
+libide_public_headers += files(devices_headers)
+libide_public_sources += files(devices_sources)
+
+install_headers(devices_headers, subdir: join_paths(libide_header_subdir, 'devices'))
diff --git a/libide/diagnostics/meson.build b/libide/diagnostics/meson.build
new file mode 100644
index 0000000..4aff576
--- /dev/null
+++ b/libide/diagnostics/meson.build
@@ -0,0 +1,29 @@
+diagnostics_headers = [
+  'ide-diagnostic.h',
+  'ide-diagnostic-provider.h',
+  'ide-diagnostics.h',
+  'ide-diagnostics-manager.h',
+  'ide-fixit.h',
+  'ide-source-location.h',
+  'ide-source-range.h',
+]
+
+diagnostics_sources = [
+  'ide-diagnostic.c',
+  'ide-diagnostic-provider.c',
+  'ide-diagnostics.c',
+  'ide-diagnostics-manager.c',
+  'ide-fixit.c',
+  'ide-source-location.c',
+  'ide-source-range.c',
+]
+
+diagnostics_enums = [
+  'ide-diagnostic.h',
+]
+
+libide_enum_headers += files(diagnostics_enums)
+libide_public_headers += files(diagnostics_headers)
+libide_public_sources += files(diagnostics_sources)
+
+install_headers(diagnostics_headers, subdir: join_paths(libide_header_subdir, 'diagnostics'))
diff --git a/libide/directory/meson.build b/libide/directory/meson.build
new file mode 100644
index 0000000..f5e18bc
--- /dev/null
+++ b/libide/directory/meson.build
@@ -0,0 +1,15 @@
+directory_headers = [
+  'ide-directory-build-system.h',
+  'ide-directory-vcs.h',
+]
+
+directory_sources = [
+  'ide-directory-build-system.c',
+  'ide-directory-plugin.c',
+  'ide-directory-vcs.c',
+]
+
+libide_public_headers += files(directory_headers)
+libide_public_sources += files(directory_sources)
+
+install_headers(directory_headers, subdir: join_paths(libide_header_subdir, 'directory'))
diff --git a/libide/doap/meson.build b/libide/doap/meson.build
new file mode 100644
index 0000000..b46c030
--- /dev/null
+++ b/libide/doap/meson.build
@@ -0,0 +1,19 @@
+doap_headers = [
+  'ide-doap-person.h',
+  'ide-doap.h',
+]
+
+doap_sources = [
+  'ide-doap-person.c',
+  'ide-doap.c',
+]
+
+doap_enums = [
+  'ide-doap.h',
+]
+
+libide_public_headers += files(doap_headers)
+libide_public_sources += files(doap_sources)
+libide_enum_headers += files(doap_enums)
+
+install_headers(doap_headers, subdir: join_paths(libide_header_subdir, 'doap'))
diff --git a/libide/documentation/meson.build b/libide/documentation/meson.build
new file mode 100644
index 0000000..6abd87f
--- /dev/null
+++ b/libide/documentation/meson.build
@@ -0,0 +1,18 @@
+directory_headers = [
+  'ide-documentation.h',
+  'ide-documentation-info.h',
+  'ide-documentation-proposal.h',
+  'ide-documentation-provider.h',
+]
+
+directory_sources = [
+  'ide-documentation.c',
+  'ide-documentation-info.c',
+  'ide-documentation-proposal.c',
+  'ide-documentation-provider.c',
+]
+
+libide_public_headers += files(directory_headers)
+libide_public_sources += files(directory_sources)
+
+install_headers(directory_headers, subdir: join_paths(libide_header_subdir, 'directory'))
diff --git a/libide/editor/meson.build b/libide/editor/meson.build
new file mode 100644
index 0000000..10df754
--- /dev/null
+++ b/libide/editor/meson.build
@@ -0,0 +1,47 @@
+editor_headers = [
+  'ide-editor-addin.h',
+  'ide-editor-perspective.h',
+  'ide-editor-sidebar.h',
+  'ide-editor-utilities.h',
+  'ide-editor-view-addin.h',
+  'ide-editor-view.h',
+]
+
+editor_sources = [
+  'ide-editor-addin.c',
+  'ide-editor-perspective.c',
+  'ide-editor-sidebar.c',
+  'ide-editor-utilities.c',
+  'ide-editor-view-addin.c',
+  'ide-editor-view.c',
+]
+
+editor_private_sources = [
+  'ide-editor-layout-stack-addin.c',
+  'ide-editor-layout-stack-addin.h',
+  'ide-editor-layout-stack-controls.c',
+  'ide-editor-layout-stack-controls.h',
+  'ide-editor-perspective-actions.c',
+  'ide-editor-perspective-shortcuts.c',
+  'ide-editor-plugin.c',
+  'ide-editor-print-operation.c',
+  'ide-editor-print-operation.h',
+  'ide-editor-private.h',
+  'ide-editor-properties.c',
+  'ide-editor-properties.h',
+  'ide-editor-search-bar.c',
+  'ide-editor-search-bar-actions.c',
+  'ide-editor-search-bar-shortcuts.c',
+  'ide-editor-search-bar.h',
+  'ide-editor-view-actions.c',
+  'ide-editor-view-settings.c',
+  'ide-editor-view-shortcuts.c',
+  'ide-editor-workbench-addin.c',
+  'ide-editor-workbench-addin.h',
+]
+
+libide_public_headers += files(editor_headers)
+libide_public_sources += files(editor_sources)
+libide_private_sources += files(editor_private_sources)
+
+install_headers(editor_headers, subdir: join_paths(libide_header_subdir, 'editor'))
diff --git a/libide/files/meson.build b/libide/files/meson.build
new file mode 100644
index 0000000..c14ec13
--- /dev/null
+++ b/libide/files/meson.build
@@ -0,0 +1,20 @@
+files_headers = [
+  'ide-file.h',
+  'ide-file-settings.h',
+  'ide-indent-style.h',
+]
+
+files_sources = [
+  'ide-file-settings.c',
+  'ide-file.c',
+]
+
+files_enums = [
+  'ide-indent-style.h',
+]
+
+libide_public_headers += files(files_headers)
+libide_public_sources += files(files_sources)
+libide_enum_headers += files(files_enums)
+
+install_headers(files_headers, subdir: join_paths(libide_header_subdir, 'files'))
diff --git a/libide/formatting/meson.build b/libide/formatting/meson.build
new file mode 100644
index 0000000..40fbd1b
--- /dev/null
+++ b/libide/formatting/meson.build
@@ -0,0 +1,14 @@
+formatting_headers = [
+  'ide-formatter.h',
+  'ide-formatter-options.h',
+]
+
+formatting_sources = [
+  'ide-formatter.c',
+  'ide-formatter-options.c',
+]
+
+libide_public_headers += files(formatting_headers)
+libide_public_sources += files(formatting_sources)
+
+install_headers(formatting_headers, subdir: libide_header_subdir)
diff --git a/libide/genesis/meson.build b/libide/genesis/meson.build
new file mode 100644
index 0000000..f461a3f
--- /dev/null
+++ b/libide/genesis/meson.build
@@ -0,0 +1,12 @@
+genesis_headers = [
+  'ide-genesis-addin.h',
+]
+
+genesis_sources = [
+  'ide-genesis-addin.c',
+]
+
+libide_public_headers += files(genesis_headers)
+libide_public_sources += files(genesis_sources)
+
+install_headers(genesis_headers, subdir: join_paths(libide_header_subdir, 'genesis'))
diff --git a/libide/greeter/meson.build b/libide/greeter/meson.build
new file mode 100644
index 0000000..49c6073
--- /dev/null
+++ b/libide/greeter/meson.build
@@ -0,0 +1,8 @@
+greeter_private_sources = [
+  'ide-greeter-perspective.c',
+  'ide-greeter-perspective.h',
+  'ide-greeter-project-row.c',
+  'ide-greeter-project-row.h',
+]
+
+libide_private_sources += files(greeter_private_sources)
diff --git a/libide/gsettings/meson.build b/libide/gsettings/meson.build
new file mode 100644
index 0000000..37bc050
--- /dev/null
+++ b/libide/gsettings/meson.build
@@ -0,0 +1,8 @@
+gsettings_private_sources = [
+  'ide-gsettings-file-settings.c',
+  'ide-gsettings-file-settings.h',
+  'ide-language-defaults.c',
+  'ide-language-defaults.h',
+]
+
+libide_private_sources += files(gsettings_private_sources)
diff --git a/libide/highlighting/meson.build b/libide/highlighting/meson.build
new file mode 100644
index 0000000..13b3866
--- /dev/null
+++ b/libide/highlighting/meson.build
@@ -0,0 +1,21 @@
+highlighting_headers = [
+  'ide-highlight-engine.h',
+  'ide-highlight-index.h',
+  'ide-highlighter.h',
+]
+
+highlighting_sources = [
+  'ide-highlight-engine.c',
+  'ide-highlight-index.c',
+  'ide-highlighter.c',
+]
+
+highlighting_enums = [
+  'ide-highlighter.h',
+]
+
+libide_public_headers += files(highlighting_headers)
+libide_public_sources += files(highlighting_sources)
+libide_enum_headers += files(highlighting_enums)
+
+install_headers(highlighting_headers, subdir: join_paths(libide_header_subdir, 'genesis'))
diff --git a/libide/keybindings/meson.build b/libide/keybindings/meson.build
new file mode 100644
index 0000000..096767f
--- /dev/null
+++ b/libide/keybindings/meson.build
@@ -0,0 +1,8 @@
+keybindings_private_sources = [
+  'ide-keybindings.c',
+  'ide-keybindings.h',
+  'ide-shortcuts-window.c',
+  'ide-shortcuts-window.h',
+]
+
+libide_private_sources += files(keybindings_private_sources)
diff --git a/libide/langserv/meson.build b/libide/langserv/meson.build
new file mode 100644
index 0000000..215be1f
--- /dev/null
+++ b/libide/langserv/meson.build
@@ -0,0 +1,32 @@
+langserv_headers = [
+  'ide-langserv-client.h',
+  'ide-langserv-completion-provider.h',
+  'ide-langserv-diagnostic-provider.h',
+  'ide-langserv-formatter.h',
+  'ide-langserv-highlighter.h',
+  'ide-langserv-rename-provider.h',
+  'ide-langserv-symbol-node.h',
+  'ide-langserv-symbol-resolver.h',
+  'ide-langserv-symbol-tree.h',
+  'ide-langserv-util.h',
+]
+
+langserv_sources = [
+  'ide-langserv-client.c',
+  'ide-langserv-completion-provider.c',
+  'ide-langserv-diagnostic-provider.c',
+  'ide-langserv-formatter.c',
+  'ide-langserv-highlighter.c',
+  'ide-langserv-rename-provider.c',
+  'ide-langserv-symbol-node.c',
+  'ide-langserv-symbol-node-private.h',
+  'ide-langserv-symbol-resolver.c',
+  'ide-langserv-symbol-tree.c',
+  'ide-langserv-symbol-tree-private.h',
+  'ide-langserv-util.c',
+]
+
+libide_public_headers += files(langserv_headers)
+libide_public_sources += files(langserv_sources)
+
+install_headers(langserv_headers, subdir: join_paths(libide_header_subdir, 'langserv'))
diff --git a/libide/layout/meson.build b/libide/layout/meson.build
new file mode 100644
index 0000000..90c4936
--- /dev/null
+++ b/libide/layout/meson.build
@@ -0,0 +1,39 @@
+layout_headers = [
+  'ide-layout-grid.h',
+  'ide-layout-grid-column.h',
+  'ide-layout-stack.h',
+  'ide-layout-stack-addin.h',
+  'ide-layout-stack-header.h',
+  'ide-layout-view.h',
+  'ide-layout-pane.h',
+  'ide-layout-transient-sidebar.h',
+  'ide-layout.h',
+]
+
+layout_sources = [
+  'ide-layout-grid.c',
+  'ide-layout-grid-column.c',
+  'ide-layout-pane.c',
+  'ide-layout-stack.c',
+  'ide-layout-stack-addin.c',
+  'ide-layout-stack-header.c',
+  'ide-layout-transient-sidebar.c',
+  'ide-layout-view.c',
+  'ide-layout.c',
+]
+
+layout_private_sources = [
+  'ide-layout-grid-actions.c',
+  'ide-layout-grid-column-actions.c',
+  'ide-layout-private.h',
+  'ide-layout-stack-actions.c',
+  'ide-layout-stack-shortcuts.c',
+  'ide-shortcut-label.c',
+  'ide-shortcut-label.h',
+]
+
+libide_public_headers += files(layout_headers)
+libide_public_sources += files(layout_sources)
+libide_private_sources += files(layout_private_sources)
+
+install_headers(layout_headers, subdir: join_paths(libide_header_subdir, 'layout'))
diff --git a/libide/local/meson.build b/libide/local/meson.build
new file mode 100644
index 0000000..c1962e9
--- /dev/null
+++ b/libide/local/meson.build
@@ -0,0 +1,12 @@
+local_headers = [
+  'ide-local-device.h',
+]
+
+local_sources = [
+  'ide-local-device.c',
+]
+
+libide_public_headers += files(local_headers)
+libide_public_sources += files(local_sources)
+
+install_headers(local_headers, subdir: join_paths(libide_header_subdir, 'local'))
diff --git a/libide/logging/meson.build b/libide/logging/meson.build
new file mode 100644
index 0000000..759ab91
--- /dev/null
+++ b/libide/logging/meson.build
@@ -0,0 +1,12 @@
+logging_headers = [
+  'ide-log.h',
+]
+
+logging_sources = [
+  'ide-log.c',
+]
+
+libide_public_headers += files(logging_headers)
+libide_public_sources += files(logging_sources)
+
+install_headers(logging_headers, subdir: join_paths(libide_header_subdir, 'logging'))
diff --git a/libide/meson.build b/libide/meson.build
index 5818619..82660ab 100644
--- a/libide/meson.build
+++ b/libide/meson.build
@@ -1,4 +1,11 @@
-libide_header_dir = pkgincludedir + '/libide'
+libide_header_subdir = join_paths('gnome-builder', 'libide')
+
+libide_enum_headers = []
+libide_generated_headers = []
+libide_public_headers = []
+libide_public_sources = []
+libide_private_sources = []
+libide_args = []
 
 version_data = configuration_data()
 version_data.set('MAJOR_VERSION', MAJOR_VERSION)
@@ -11,44 +18,22 @@ version_data.set_quoted('BUILD_TYPE', get_option('buildtype'))
 libide_version_h = configure_file(
           input: 'ide-version.h.in',
          output: 'ide-version.h',
-    install_dir: libide_header_dir,
+    install_dir: libide_header_subdir,
         install: true,
   configuration: version_data)
+libide_generated_headers += [libide_version_h]
 
 libide_build_ident_h = vcs_tag(
      fallback: meson.project_version(),
         input: 'ide-build-ident.h.in',
        output: 'ide-build-ident.h',
       install: true,
-  install_dir: libide_header_dir,
+  install_dir: libide_header_subdir,
 )
+libide_generated_headers += [libide_build_ident_h]
 
-libide_enum_headers = [
-  'buffers/ide-buffer.h',
-  'buildsystem/ide-build-log.h',
-  'buildsystem/ide-build-pipeline.h',
-  'devices/ide-device.h',
-  'diagnostics/ide-diagnostic.h',
-  'doap/ide-doap.h',
-  'files/ide-indent-style.h',
-  'highlighting/ide-highlighter.h',
-  'runtimes/ide-runtime.h',
-  'sourceview/ide-cursor.h',
-  'sourceview/ide-source-view.h',
-  'symbols/ide-symbol.h',
-  'threading/ide-thread-pool.h',
-  'vcs/ide-vcs-config.h',
-]
-
-libide_enums = gnome.mkenums('ide-enums',
-  h_template: 'ide-enums.h.in',
-  c_template: 'ide-enums.c.in',
-  sources: libide_enum_headers,
-  install_header: true,
-  install_dir: libide_header_dir,
-)
 
-libide_public_headers = [
+libide_public_headers += [
   'ide.h',
   'ide-context.h',
   'ide-global.h',
@@ -57,588 +42,108 @@ libide_public_headers = [
   'ide-pausable.h',
   'ide-service.h',
   'ide-types.h',
-  'application/ide-application-addin.h',
-  'application/ide-application-credits.h',
-  'application/ide-application-tool.h',
-  'application/ide-application.h',
-  'buffers/ide-buffer-addin.h',
-  'buffers/ide-buffer-change-monitor.h',
-  'buffers/ide-buffer-manager.h',
-  'buffers/ide-buffer.h',
-  'buffers/ide-unsaved-file.h',
-  'buffers/ide-unsaved-files.h',
-  'buildconfig/ide-buildconfig-configuration.h',
-  'buildconfig/ide-buildconfig-configuration-provider.h',
-  'buildsystem/ide-build-log.h',
-  'buildsystem/ide-build-manager.h',
-  'buildsystem/ide-build-pipeline.h',
-  'buildsystem/ide-build-pipeline-addin.h',
-  'buildsystem/ide-build-stage.h',
-  'buildsystem/ide-build-stage-launcher.h',
-  'buildsystem/ide-build-stage-mkdirs.h',
-  'buildsystem/ide-build-stage-transfer.h',
-  'buildsystem/ide-build-system.h',
-  'buildsystem/ide-build-system-discovery.h',
-  'buildsystem/ide-build-target.h',
-  'buildsystem/ide-build-utils.h',
-  'buildsystem/ide-configuration-manager.h',
-  'buildsystem/ide-configuration.h',
-  'buildsystem/ide-configuration-provider.h',
-  'buildsystem/ide-environment-variable.h',
-  'buildsystem/ide-environment.h',
-  'debugger/ide-debug-manager.h',
-  'debugger/ide-debugger-breakpoint.h',
-  'debugger/ide-debugger-breakpoints.h',
-  'debugger/ide-debugger-frame.h',
-  'debugger/ide-debugger-instruction.h',
-  'debugger/ide-debugger-library.h',
-  'debugger/ide-debugger-register.h',
-  'debugger/ide-debugger-thread-group.h',
-  'debugger/ide-debugger-thread.h',
-  'debugger/ide-debugger-types.h',
-  'debugger/ide-debugger-variable.h',
-  'debugger/ide-debugger.h',
-  'devices/ide-device-manager.h',
-  'devices/ide-device-provider.h',
-  'devices/ide-device.h',
-  'diagnostics/ide-diagnostic-provider.h',
-  'diagnostics/ide-diagnostic.h',
-  'diagnostics/ide-diagnostics-manager.h',
-  'diagnostics/ide-diagnostics.h',
-  'diagnostics/ide-fixit.h',
-  'diagnostics/ide-source-location.h',
-  'diagnostics/ide-source-range.h',
-  'directory/ide-directory-build-system.h',
-  'directory/ide-directory-vcs.h',
-  'doap/ide-doap-person.h',
-  'doap/ide-doap.h',
-  'documentation/ide-documentation.h',
-  'documentation/ide-documentation-info.h',
-  'documentation/ide-documentation-proposal.h',
-  'documentation/ide-documentation-provider.h',
-  'editor/ide-editor-addin.h',
-  'editor/ide-editor-perspective.h',
-  'editor/ide-editor-sidebar.h',
-  'editor/ide-editor-utilities.h',
-  'editor/ide-editor-view-addin.h',
-  'editor/ide-editor-view.h',
-  'files/ide-file-settings.h',
-  'files/ide-file.h',
-  'files/ide-indent-style.h',
-  'formatting/ide-formatter.h',
-  'formatting/ide-formatter-options.h',
-  'genesis/ide-genesis-addin.h',
-  'highlighting/ide-highlight-engine.h',
-  'highlighting/ide-highlight-index.h',
-  'highlighting/ide-highlighter.h',
-  'langserv/ide-langserv-client.h',
-  'langserv/ide-langserv-completion-provider.h',
-  'langserv/ide-langserv-diagnostic-provider.h',
-  'langserv/ide-langserv-formatter.h',
-  'langserv/ide-langserv-highlighter.h',
-  'langserv/ide-langserv-rename-provider.h',
-  'langserv/ide-langserv-symbol-node.h',
-  'langserv/ide-langserv-symbol-resolver.h',
-  'langserv/ide-langserv-symbol-tree.h',
-  'langserv/ide-langserv-util.h',
-  'layout/ide-layout-grid.h',
-  'layout/ide-layout-grid-column.h',
-  'layout/ide-layout-stack.h',
-  'layout/ide-layout-stack-addin.h',
-  'layout/ide-layout-stack-header.h',
-  'layout/ide-layout-view.h',
-  'layout/ide-layout-pane.h',
-  'layout/ide-layout-transient-sidebar.h',
-  'layout/ide-layout.h',
-  'local/ide-local-device.h',
-  'logging/ide-log.h',
-  'plugins/ide-extension-adapter.h',
-  'plugins/ide-extension-set-adapter.h',
-  'preferences/ide-preferences-addin.h',
-  'preferences/ide-preferences-perspective.h',
-  'projects/ide-project-edit.h',
-  'projects/ide-project-file.h',
-  'projects/ide-project-files.h',
-  'projects/ide-project-info.h',
-  'projects/ide-project-item.h',
-  'projects/ide-project-miner.h',
-  'projects/ide-project.h',
-  'projects/ide-recent-projects.h',
-  'rename/ide-rename-provider.h',
-  'runner/ide-run-button.h',
-  'runner/ide-run-manager.h',
-  'runner/ide-runner.h',
-  'runner/ide-runner-addin.h',
-  'runtimes/ide-runtime-manager.h',
-  'runtimes/ide-runtime-provider.h',
-  'runtimes/ide-runtime.h',
-  'search/ide-search-engine.h',
-  'search/ide-search-entry.h',
-  'search/ide-search-provider.h',
-  'search/ide-search-result.h',
-  'snippets/ide-source-snippet-chunk.h',
-  'snippets/ide-source-snippet-context.h',
-  'snippets/ide-source-snippet.h',
-  'snippets/ide-source-snippets-manager.h',
-  'snippets/ide-source-snippets.h',
-  'sourceview/ide-completion-item.h',
-  'sourceview/ide-completion-provider.h',
-  'sourceview/ide-completion-results.h',
-  'sourceview/ide-completion-words.h',
-  'sourceview/ide-cursor.h',
-  'sourceview/ide-indenter.h',
-  'sourceview/ide-language.h',
-  'sourceview/ide-source-map.h',
-  'sourceview/ide-source-style-scheme.h',
-  'sourceview/ide-source-view-mode.h',
-  'sourceview/ide-source-view.h',
-  'subprocess/ide-subprocess.h',
-  'subprocess/ide-subprocess-launcher.h',
-  'subprocess/ide-subprocess-supervisor.h',
-  'symbols/ide-code-index-entries.h',
-  'symbols/ide-code-index-entry.h',
-  'symbols/ide-code-indexer.h',
-  'symbols/ide-symbol-node.h',
-  'symbols/ide-symbol-resolver.h',
-  'symbols/ide-symbol-tree.h',
-  'symbols/ide-symbol.h',
-  'symbols/ide-tags-builder.h',
-  'template/ide-project-template.h',
-  'template/ide-template-base.h',
-  'template/ide-template-provider.h',
-  'threading/ide-thread-pool.h',
-  'transfers/ide-pkcon-transfer.h',
-  'transfers/ide-transfer-manager.h',
-  'transfers/ide-transfer-row.h',
-  'transfers/ide-transfer.h',
-  'transfers/ide-transfer-button.h',
-  'transfers/ide-transfers-button.h',
-  'transfers/ide-transfers-progress-icon.h',
-  'util/ide-cell-renderer-fancy.h',
-  'util/ide-fancy-tree-view.h',
-  'util/ide-flatpak.h',
-  'util/ide-glib.h',
-  'util/ide-gtk.h',
-  'util/ide-line-reader.h',
-  'util/ide-list-inline.h',
-  'util/ide-posix.h',
-  'util/ide-progress.h',
-  'util/ide-settings.h',
-  'util/ide-uri.h',
-  'vcs/ide-vcs-config.h',
-  'vcs/ide-vcs-initializer.h',
-  'vcs/ide-vcs-uri.h',
-  'vcs/ide-vcs.h',
-  'workbench/ide-omni-bar.h',
-  'workbench/ide-perspective.h',
-  'workbench/ide-workbench-addin.h',
-  'workbench/ide-workbench-message.h',
-  'workbench/ide-workbench-header-bar.h',
-  'workbench/ide-workbench.h',
-  'workers/ide-worker.h',
 ]
 
+libide_public_sources += [
+  'ide.c',
+  'ide-context.c',
+  'ide-object.c',
+  'ide-pausable.c',
+  'ide-service.c',
+]
+
+subdir('application')
+subdir('buildconfig')
+subdir('buildui')
+subdir('buildsystem')
+subdir('buffers')
+subdir('debugger')
+subdir('devices')
+subdir('diagnostics')
+subdir('doap')
+subdir('directory')
+subdir('documentation')
+subdir('editor')
+subdir('files')
+subdir('formatting')
+subdir('genesis')
+subdir('greeter')
+subdir('gsettings')
+subdir('highlighting')
+subdir('keybindings')
+subdir('langserv')
+subdir('layout')
+subdir('local')
+subdir('logging')
+subdir('modelines')
+subdir('plugins')
+subdir('preferences')
+subdir('projects')
+subdir('rename')
+subdir('runner')
+subdir('runtimes')
+subdir('search')
+subdir('snippets')
+subdir('sourceview')
+subdir('subprocess')
+subdir('symbols')
+subdir('template')
+subdir('threading')
+subdir('transfers')
+subdir('util')
+subdir('vcs')
+subdir('workbench')
+subdir('workers')
+
+libide_enums = gnome.mkenums('ide-enums',
+      h_template: 'ide-enums.h.in',
+      c_template: 'ide-enums.c.in',
+         sources: libide_enum_headers,
+  install_header: true,
+     install_dir: libide_header_subdir,
+)
+libide_public_sources += [libide_enums[0]]
+libide_generated_headers += [libide_enums[1]]
+
 libide_conf = configuration_data()
 libide_conf.set10('ENABLE_TRACING', get_option('enable_tracing'))
 libide_conf.set('BUGREPORT_URL', 'https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-builder')
 libide_debug_h = configure_file(
-  input: 'ide-debug.h.in',
-  output: 'ide-debug.h',
+         input: 'ide-debug.h.in',
+         output: 'ide-debug.h',
   configuration: libide_conf,
-  install: true,
-  install_dir: libide_header_dir,
+        install: true,
+    install_dir: libide_header_subdir,
 )
+libide_generated_headers += [libide_debug_h]
 
-# TODO: This is ugly and should be handled upstream
-foreach header: libide_public_headers
-  header_split = header.split('/')
-  if header_split.length() == 2
-    header_path = join_paths(libide_header_dir, header_split[0])
-    install_headers(header, install_dir: header_path)
-  else
-    install_headers(header, install_dir: libide_header_dir)
-  endif
-endforeach
+install_headers([
+  'ide.h',
+  'ide-context.h',
+  'ide-global.h',
+  'ide-macros.h',
+  'ide-object.h',
+  'ide-pausable.h',
+  'ide-service.h',
+  'ide-types.h',
+], subdir: libide_header_subdir)
 
 libide_resources = gnome.compile_resources('ide-resources',
   'libide.gresource.xml',
   c_name: 'ide',
 )
+libide_generated_headers += [libide_resources[1]]
 
 libide_icons_resources = gnome.compile_resources('ide-icons-resources',
   join_paths(meson.source_root(), 'data/icons/hicolor/icons.gresource.xml'),
   source_dir: join_paths(meson.source_root(), 'data/icons/hicolor'),
   c_name: 'ide_icons',
 )
+libide_generated_headers += [libide_icons_resources[1]]
 
-libide_public_sources = [
-  'ide.c',
-  'ide-context.c',
-  'ide-object.c',
-  'ide-pausable.c',
-  'ide-service.c',
-  'application/ide-application-addin.c',
-  'application/ide-application-tool.c',
-  'application/ide-application.c',
-  'application/ide-application-open.c',
-  'buffers/ide-buffer-addin.c',
-  'buffers/ide-buffer-change-monitor.c',
-  'buffers/ide-buffer-manager.c',
-  'buffers/ide-buffer.c',
-  'buffers/ide-unsaved-file.c',
-  'buffers/ide-unsaved-files.c',
-  'buildconfig/ide-buildconfig-configuration.c',
-  'buildconfig/ide-buildconfig-configuration-provider.c',
-  'buildsystem/ide-build-manager.c',
-  'buildsystem/ide-build-pipeline.c',
-  'buildsystem/ide-build-pipeline-addin.c',
-  'buildsystem/ide-build-stage.c',
-  'buildsystem/ide-build-stage-launcher.c',
-  'buildsystem/ide-build-stage-mkdirs.c',
-  'buildsystem/ide-build-stage-transfer.c',
-  'buildsystem/ide-build-system.c',
-  'buildsystem/ide-build-system-discovery.c',
-  'buildsystem/ide-build-target.c',
-  'buildsystem/ide-build-utils.c',
-  'buildsystem/ide-configuration-manager.c',
-  'buildsystem/ide-configuration.c',
-  'buildsystem/ide-configuration-provider.c',
-  'buildsystem/ide-environment-variable.c',
-  'buildsystem/ide-environment.c',
-  'debugger/ide-debug-manager.c',
-  'debugger/ide-debugger-breakpoint.c',
-  'debugger/ide-debugger-breakpoints.c',
-  'debugger/ide-debugger-frame.c',
-  'debugger/ide-debugger-instruction.c',
-  'debugger/ide-debugger-library.c',
-  'debugger/ide-debugger-register.c',
-  'debugger/ide-debugger-thread-group.c',
-  'debugger/ide-debugger-thread.c',
-  'debugger/ide-debugger-types.c',
-  'debugger/ide-debugger-variable.c',
-  'debugger/ide-debugger.c',
-  'devices/ide-device-manager.c',
-  'devices/ide-device-provider.c',
-  'devices/ide-device.c',
-  'diagnostics/ide-diagnostic-provider.c',
-  'diagnostics/ide-diagnostic.c',
-  'diagnostics/ide-diagnostics-manager.c',
-  'diagnostics/ide-diagnostics.c',
-  'diagnostics/ide-fixit.c',
-  'diagnostics/ide-source-location.c',
-  'diagnostics/ide-source-range.c',
-  'directory/ide-directory-build-system.c',
-  'directory/ide-directory-plugin.c',
-  'directory/ide-directory-vcs.c',
-  'doap/ide-doap-person.c',
-  'doap/ide-doap.c',
-  'documentation/ide-documentation.c',
-  'documentation/ide-documentation-info.c',
-  'documentation/ide-documentation-proposal.c',
-  'documentation/ide-documentation-provider.c',
-  'editor/ide-editor-addin.c',
-  'editor/ide-editor-perspective.c',
-  'editor/ide-editor-sidebar.c',
-  'editor/ide-editor-utilities.c',
-  'editor/ide-editor-view-addin.c',
-  'editor/ide-editor-view.c',
-  'files/ide-file-settings.c',
-  'files/ide-file.c',
-  'formatting/ide-formatter.c',
-  'formatting/ide-formatter-options.c',
-  'genesis/ide-genesis-addin.c',
-  'highlighting/ide-highlight-engine.c',
-  'highlighting/ide-highlight-index.c',
-  'highlighting/ide-highlighter.c',
-  'langserv/ide-langserv-client.c',
-  'langserv/ide-langserv-completion-provider.c',
-  'langserv/ide-langserv-diagnostic-provider.c',
-  'langserv/ide-langserv-formatter.c',
-  'langserv/ide-langserv-highlighter.c',
-  'langserv/ide-langserv-rename-provider.c',
-  'langserv/ide-langserv-symbol-node.c',
-  'langserv/ide-langserv-symbol-node-private.h',
-  'langserv/ide-langserv-symbol-resolver.c',
-  'langserv/ide-langserv-symbol-tree.c',
-  'langserv/ide-langserv-symbol-tree-private.h',
-  'langserv/ide-langserv-util.c',
-  'layout/ide-layout-grid.c',
-  'layout/ide-layout-grid-column.c',
-  'layout/ide-layout-pane.c',
-  'layout/ide-layout-stack.c',
-  'layout/ide-layout-stack-addin.c',
-  'layout/ide-layout-stack-header.c',
-  'layout/ide-layout-transient-sidebar.c',
-  'layout/ide-layout-view.c',
-  'layout/ide-layout.c',
-  'local/ide-local-device.c',
-  'logging/ide-log.c',
-  'plugins/ide-extension-adapter.c',
-  'plugins/ide-extension-set-adapter.c',
-  'preferences/ide-preferences-addin.c',
-  'preferences/ide-preferences-perspective.c',
-  'projects/ide-project-edit.c',
-  'projects/ide-project-file.c',
-  'projects/ide-project-files.c',
-  'projects/ide-project-info.c',
-  'projects/ide-project-item.c',
-  'projects/ide-project-miner.c',
-  'projects/ide-project.c',
-  'projects/ide-recent-projects.c',
-  'rename/ide-rename-provider.c',
-  'runner/ide-run-button.c',
-  'runner/ide-run-manager.c',
-  'runner/ide-runner.c',
-  'runner/ide-runner-addin.c',
-  'runtimes/ide-runtime-manager.c',
-  'runtimes/ide-runtime-provider.c',
-  'runtimes/ide-runtime.c',
-  'search/ide-search-engine.c',
-  'search/ide-search-entry.c',
-  'search/ide-search-provider.c',
-  'search/ide-search-result.c',
-  'snippets/ide-source-snippet-chunk.c',
-  'snippets/ide-source-snippet-context.c',
-  'snippets/ide-source-snippet.c',
-  'snippets/ide-source-snippets-manager.c',
-  'snippets/ide-source-snippets.c',
-  'sourceview/ide-completion-item.c',
-  'sourceview/ide-completion-provider.c',
-  'sourceview/ide-completion-results.c',
-  'sourceview/ide-completion-words.c',
-  'sourceview/ide-cursor.c',
-  'sourceview/ide-indenter.c',
-  'sourceview/ide-language.c',
-  'sourceview/ide-source-map.c',
-  'sourceview/ide-source-style-scheme.c',
-  'sourceview/ide-source-view-mode.c',
-  'sourceview/ide-source-view.c',
-  'subprocess/ide-subprocess.c',
-  'subprocess/ide-subprocess-launcher.c',
-  'subprocess/ide-subprocess-supervisor.c',
-  'symbols/ide-code-index-entries.c',
-  'symbols/ide-code-index-entry.c',
-  'symbols/ide-code-indexer.c',
-  'symbols/ide-symbol-node.c',
-  'symbols/ide-symbol-resolver.c',
-  'symbols/ide-symbol-tree.c',
-  'symbols/ide-symbol.c',
-  'symbols/ide-tags-builder.c',
-  'template/ide-project-template.c',
-  'template/ide-template-base.c',
-  'template/ide-template-provider.c',
-  'threading/ide-thread-pool.c',
-  'transfers/ide-pkcon-transfer.c',
-  'transfers/ide-transfer-manager.c',
-  'transfers/ide-transfer-row.c',
-  'transfers/ide-transfer.c',
-  'transfers/ide-transfer-button.c',
-  'transfers/ide-transfers-button.c',
-  'transfers/ide-transfers-progress-icon.c',
-  'util/ide-cell-renderer-fancy.c',
-  'util/ide-fancy-tree-view.c',
-  'util/ide-flatpak.c',
-  'util/ide-glib.c',
-  'util/ide-gtk.c',
-  'util/ide-line-reader.c',
-  'util/ide-posix.c',
-  'util/ide-progress.c',
-  'util/ide-settings.c',
-  'util/ide-uri.c',
-  'vcs/ide-vcs-config.c',
-  'vcs/ide-vcs-initializer.c',
-  'vcs/ide-vcs-uri.c',
-  'vcs/ide-vcs.c',
-  'workbench/ide-omni-bar.c',
-  'workbench/ide-perspective.c',
-  'workbench/ide-workbench-addin.c',
-  'workbench/ide-workbench-message.c',
-  'workbench/ide-workbench-header-bar.c',
-  'workbench/ide-workbench-open.c',
-  'workbench/ide-workbench.c',
-  'workers/ide-worker.c',
-  libide_enums[0],
-]
-
-libide_generated_headers = [
-  libide_build_ident_h,
-  libide_resources[1],
-  libide_icons_resources[1],
-  libide_enums[1],
-  libide_debug_h,
-  libide_version_h,
-]
-
-libide_args = []
-
-libide_sources = libide_generated_headers + libide_public_sources + [
-  'application/ide-application-actions.c',
-  'application/ide-application-actions.h',
-  'application/ide-application-command-line.c',
-  'application/ide-application-plugins.c',
-  'application/ide-application-private.h',
-  'application/ide-application-shortcuts.c',
-  'application/ide-application-tests.c',
-  'application/ide-application-tests.h',
-  'buffers/ide-buffer-private.h',
-  'buildconfig/ide-buildconfig-plugin.c',
-  'buildconfig/ide-buildconfig-pipeline-addin.c',
-  'buildconfig/ide-buildconfig-pipeline-addin.h',
-  'buildsystem/ide-build-log.c',
-  'buildsystem/ide-build-log-private.h',
-  'buildsystem/ide-build-stage-private.h',
-  'buildui/ide-build-configuration-row.c',
-  'buildui/ide-build-configuration-row.h',
-  'buildui/ide-build-configuration-view.c',
-  'buildui/ide-build-configuration-view.h',
-  'buildui/ide-build-log-panel.c',
-  'buildui/ide-build-log-panel.h',
-  'buildui/ide-build-panel.c',
-  'buildui/ide-build-panel.h',
-  'buildui/ide-build-perspective.c',
-  'buildui/ide-build-perspective.h',
-  'buildui/ide-build-plugin.c',
-  'buildui/ide-build-tool.c',
-  'buildui/ide-build-tool.h',
-  'buildui/ide-build-workbench-addin.c',
-  'buildui/ide-build-workbench-addin.h',
-  'buildui/ide-environment-editor-row.c',
-  'buildui/ide-environment-editor-row.h',
-  'buildui/ide-environment-editor.c',
-  'buildui/ide-environment-editor.h',
-  'debugger/ide-debugger-actions.c',
-  'debugger/ide-debugger-address-map.c',
-  'debugger/ide-debugger-address-map.h',
-  'debugger/ide-debugger-breakpoints-view.c',
-  'debugger/ide-debugger-breakpoints-view.h',
-  'debugger/ide-debugger-controls.c',
-  'debugger/ide-debugger-controls.h',
-  'debugger/ide-debugger-disassembly-view.c',
-  'debugger/ide-debugger-disassembly-view.h',
-  'debugger/ide-debugger-editor-addin.c',
-  'debugger/ide-debugger-editor-addin.h',
-  'debugger/ide-debugger-fallbacks.c',
-  'debugger/ide-debugger-gutter-renderer.c',
-  'debugger/ide-debugger-gutter-renderer.h',
-  'debugger/ide-debugger-libraries-view.c',
-  'debugger/ide-debugger-libraries-view.h',
-  'debugger/ide-debugger-locals-view.c',
-  'debugger/ide-debugger-locals-view.h',
-  'debugger/ide-debugger-plugin.c',
-  'debugger/ide-debugger-private.h',
-  'debugger/ide-debugger-registers-view.c',
-  'debugger/ide-debugger-registers-view.h',
-  'debugger/ide-debugger-threads-view.c',
-  'debugger/ide-debugger-threads-view.h',
-  'editor/ide-editor-layout-stack-addin.c',
-  'editor/ide-editor-layout-stack-addin.h',
-  'editor/ide-editor-layout-stack-controls.c',
-  'editor/ide-editor-layout-stack-controls.h',
-  'editor/ide-editor-perspective-actions.c',
-  'editor/ide-editor-perspective-shortcuts.c',
-  'editor/ide-editor-plugin.c',
-  'editor/ide-editor-print-operation.c',
-  'editor/ide-editor-print-operation.h',
-  'editor/ide-editor-private.h',
-  'editor/ide-editor-properties.c',
-  'editor/ide-editor-properties.h',
-  'editor/ide-editor-search-bar.c',
-  'editor/ide-editor-search-bar-actions.c',
-  'editor/ide-editor-search-bar-shortcuts.c',
-  'editor/ide-editor-search-bar.h',
-  'editor/ide-editor-view-actions.c',
-  'editor/ide-editor-view-settings.c',
-  'editor/ide-editor-view-shortcuts.c',
-  'editor/ide-editor-workbench-addin.c',
-  'editor/ide-editor-workbench-addin.h',
+libide_sources = libide_private_sources + libide_generated_headers + libide_public_sources + [
   'gconstructor.h',
-  'greeter/ide-greeter-perspective.c',
-  'greeter/ide-greeter-perspective.h',
-  'greeter/ide-greeter-project-row.c',
-  'greeter/ide-greeter-project-row.h',
-  'gsettings/ide-gsettings-file-settings.c',
-  'gsettings/ide-gsettings-file-settings.h',
-  'gsettings/ide-language-defaults.c',
-  'gsettings/ide-language-defaults.h',
   'ide-internal.h',
-  'keybindings/ide-keybindings.c',
-  'keybindings/ide-keybindings.h',
-  'keybindings/ide-shortcuts-window.c',
-  'keybindings/ide-shortcuts-window.h',
-  'layout/ide-layout-grid-actions.c',
-  'layout/ide-layout-grid-column-actions.c',
-  'layout/ide-layout-private.h',
-  'layout/ide-layout-stack-actions.c',
-  'layout/ide-layout-stack-shortcuts.c',
-  'layout/ide-shortcut-label.c', # todo: libdazzle
-  'layout/ide-shortcut-label.h', # todo: libdazzle
-  'modelines/ide-modelines-file-settings.c',
-  'modelines/ide-modelines-file-settings.h',
-  'modelines/modeline-parser.c',
-  'modelines/modeline-parser.h',
-  'plugins/ide-extension-util.c',
-  'plugins/ide-extension-util.h',
-  'projects/ide-project-edit-private.h',
-  'preferences/ide-preferences-builtin.c',
-  'preferences/ide-preferences-builtin.h',
-  'preferences/ide-preferences-language-row.c',
-  'preferences/ide-preferences-language-row.h',
-  'runner/ide-run-manager-private.h',
-  'search/ide-search-reducer.c',
-  'search/ide-search-reducer.h',
-  'snippets/ide-source-snippet-completion-item.c',
-  'snippets/ide-source-snippet-completion-item.h',
-  'snippets/ide-source-snippet-completion-provider.c',
-  'snippets/ide-source-snippet-completion-provider.h',
-  'snippets/ide-source-snippet-parser.c',
-  'snippets/ide-source-snippet-parser.h',
-  'snippets/ide-source-snippet-private.h',
-  'sourceview/ide-omni-gutter-renderer.c',
-  'sourceview/ide-omni-gutter-renderer.h',
-  'sourceview/ide-line-change-gutter-renderer.c',
-  'sourceview/ide-line-change-gutter-renderer.h',
-  'sourceview/ide-source-iter.c',
-  'sourceview/ide-source-iter.h',
-  'sourceview/ide-source-view-capture.c',
-  'sourceview/ide-source-view-capture.h',
-  'sourceview/ide-source-view-movements.c',
-  'sourceview/ide-source-view-movements.h',
-  'sourceview/ide-source-view-private.h',
-  'sourceview/ide-source-view-shortcuts.c',
-  'sourceview/ide-text-iter.c',
-  'sourceview/ide-text-iter.h',
-  'sourceview/ide-text-util.c',
-  'sourceview/ide-text-util.h',
-  'sourceview/ide-word-completion-provider.c',
-  'sourceview/ide-word-completion-provider.h',
-  'sourceview/ide-word-completion-results.c',
-  'sourceview/ide-word-completion-results.h',
-  'sourceview/ide-word-completion-item.c',
-  'sourceview/ide-word-completion-item.h',
-  'subprocess/ide-breakout-subprocess.c',
-  'subprocess/ide-breakout-subprocess.h',
-  'subprocess/ide-breakout-subprocess-private.h',
-  'subprocess/ide-simple-subprocess.c',
-  'subprocess/ide-simple-subprocess.h',
-  'util/ide-async-helper.c',
-  'util/ide-async-helper.h',
-  'util/ide-battery-monitor.c',
-  'util/ide-battery-monitor.h',
-  'util/ide-doc-seq.c',
-  'util/ide-doc-seq.h',
-  'util/ide-ref-ptr.c',
-  'util/ide-ref-ptr.h',
-  'util/ide-window-settings.c',
-  'util/ide-window-settings.h',
-  'workbench/ide-omni-pausable-row.c',
-  'workbench/ide-omni-pausable-row.h',
-  'workbench/ide-workbench-actions.c',
-  'workbench/ide-workbench-private.h',
-  'workbench/ide-workbench-shortcuts.c',
-  'workers/ide-worker-manager.c',
-  'workers/ide-worker-manager.h',
-  'workers/ide-worker-process.c',
-  'workers/ide-worker-process.h',
 ]
 
 libgtksource_dep = dependency('gtksourceview-3.0', version: '>= 3.22.0')
@@ -767,46 +272,42 @@ pkgg.generate(
   install_dir: join_paths(pkglibdir, 'pkgconfig'),
 )
 
-if get_option('with_introspection')
-
-  libide_gir = gnome.generate_gir(libide,
-                sources: libide_generated_headers + libide_public_headers + libide_public_sources,
-              nsversion: libide_api_version,
-              namespace: 'Ide',
-           dependencies: [ libgd_dep ],
-          symbol_prefix: 'ide',
-      identifier_prefix: 'Ide',
-               includes: [ 'Gio-2.0', 'GtkSource-3.0', 'Peas-1.0', libdazzle_gir, 'Json-1.0', 
libtemplate_glib_gir ],
-                install: true,
-        install_dir_gir: pkggirdir,
-    install_dir_typelib: pkgtypelibdir,
-             extra_args: [ '--c-include=ide.h' ]
-  )
-
-  if get_option('with_vapi')
-
-    configure_file(
-              input: 'libide-' + libide_api_version + '.deps',
-             output: 'libide-' + libide_api_version + '.deps',
-      configuration: configuration_data(),
-            install: true,
-        install_dir: pkgvapidir,
-    )
-
-    libide_vapi = gnome.generate_vapi('libide-' + libide_api_version,
-          sources: libide_gir[0],
-          install: true,
-      install_dir: pkgvapidir,
-         packages: [
-           'gio-2.0',
-           'gtk+-3.0',
-           'gtksourceview-3.0',
-           'json-glib-1.0',
-           libdazzle_vapi,
-           'libpeas-1.0',
-           libtemplate_glib_vapi,
-         ],
-    )
-
-  endif
+libide_gir = gnome.generate_gir(libide,
+             sources: libide_generated_headers + libide_public_headers + libide_public_sources,
+            nsversion: libide_api_version,
+            namespace: 'Ide',
+         dependencies: [ libgd_dep ],
+        symbol_prefix: 'ide',
+    identifier_prefix: 'Ide',
+             includes: [ 'Gio-2.0', 'GtkSource-3.0', 'Peas-1.0', libdazzle_gir, 'Json-1.0', 
libtemplate_glib_gir ],
+             install: true,
+      install_dir_gir: pkggirdir,
+  install_dir_typelib: pkgtypelibdir,
+           extra_args: [ '--c-include=ide.h' ]
+)
+
+if get_option('with_vapi')
+
+configure_file(
+      input: 'libide-' + libide_api_version + '.deps',
+     output: 'libide-' + libide_api_version + '.deps',
+configuration: configuration_data(),
+    install: true,
+install_dir: pkgvapidir,
+)
+
+libide_vapi = gnome.generate_vapi('libide-' + libide_api_version,
+      sources: libide_gir[0],
+      install: true,
+  install_dir: pkgvapidir,
+     packages: [ 'gio-2.0',
+                 'gtk+-3.0',
+                 'gtksourceview-3.0',
+                 'json-glib-1.0',
+                 libdazzle_vapi,
+                 'libpeas-1.0',
+                 libtemplate_glib_vapi,
+               ],
+)
+
 endif
diff --git a/libide/modelines/meson.build b/libide/modelines/meson.build
new file mode 100644
index 0000000..856840e
--- /dev/null
+++ b/libide/modelines/meson.build
@@ -0,0 +1,8 @@
+modelines_private_sources = [
+  'ide-modelines-file-settings.c',
+  'ide-modelines-file-settings.h',
+  'modeline-parser.c',
+  'modeline-parser.h',
+]
+
+libide_private_sources += files(modelines_private_sources)
diff --git a/libide/plugins/meson.build b/libide/plugins/meson.build
new file mode 100644
index 0000000..07466ad
--- /dev/null
+++ b/libide/plugins/meson.build
@@ -0,0 +1,20 @@
+plugins_headers = [
+  'ide-extension-adapter.h',
+  'ide-extension-set-adapter.h',
+]
+
+plugins_sources = [
+  'ide-extension-adapter.c',
+  'ide-extension-set-adapter.c',
+]
+
+plugins_private_sources = [
+  'ide-extension-util.c',
+  'ide-extension-util.h',
+]
+
+libide_public_headers += files(plugins_headers)
+libide_public_sources += files(plugins_sources)
+libide_private_sources += files(plugins_private_sources)
+
+install_headers(plugins_headers, subdir: join_paths(libide_header_subdir, 'plugins'))
diff --git a/libide/preferences/meson.build b/libide/preferences/meson.build
new file mode 100644
index 0000000..cd770d4
--- /dev/null
+++ b/libide/preferences/meson.build
@@ -0,0 +1,22 @@
+preferences_headers = [
+  'ide-preferences-addin.h',
+  'ide-preferences-perspective.h',
+]
+
+preferences_sources = [
+  'ide-preferences-addin.c',
+  'ide-preferences-perspective.c',
+]
+
+preferences_private_sources = [
+  'ide-preferences-builtin.c',
+  'ide-preferences-builtin.h',
+  'ide-preferences-language-row.c',
+  'ide-preferences-language-row.h',
+]
+
+libide_public_headers += files(preferences_headers)
+libide_public_sources += files(preferences_sources)
+libide_private_sources += files(preferences_private_sources)
+
+install_headers(preferences_headers, subdir: join_paths(libide_header_subdir, 'preferences'))
diff --git a/libide/projects/meson.build b/libide/projects/meson.build
new file mode 100644
index 0000000..71761f6
--- /dev/null
+++ b/libide/projects/meson.build
@@ -0,0 +1,31 @@
+projects_headers = [
+  'ide-project-edit.h',
+  'ide-project-file.h',
+  'ide-project-files.h',
+  'ide-project-info.h',
+  'ide-project-item.h',
+  'ide-project-miner.h',
+  'ide-project.h',
+  'ide-recent-projects.h',
+]
+
+projects_sources = [
+  'ide-project-edit.c',
+  'ide-project-file.c',
+  'ide-project-files.c',
+  'ide-project-info.c',
+  'ide-project-item.c',
+  'ide-project-miner.c',
+  'ide-project.c',
+  'ide-recent-projects.c',
+]
+
+projects_private_sources = [
+  'ide-project-edit-private.h',
+]
+
+libide_public_headers += files(projects_headers)
+libide_public_sources += files(projects_sources)
+libide_private_sources += files(projects_private_sources)
+
+install_headers(projects_headers, subdir: join_paths(libide_header_subdir, 'projects'))
diff --git a/libide/rename/meson.build b/libide/rename/meson.build
new file mode 100644
index 0000000..b2f7279
--- /dev/null
+++ b/libide/rename/meson.build
@@ -0,0 +1,12 @@
+rename_headers = [
+  'ide-rename-provider.h',
+]
+
+rename_sources = [
+  'ide-rename-provider.c',
+]
+
+libide_public_headers += files(rename_headers)
+libide_public_sources += files(rename_sources)
+
+install_headers(rename_headers, subdir: join_paths(libide_header_subdir, 'rename'))
diff --git a/libide/runner/meson.build b/libide/runner/meson.build
new file mode 100644
index 0000000..0e16c90
--- /dev/null
+++ b/libide/runner/meson.build
@@ -0,0 +1,23 @@
+runner_headers = [
+  'ide-run-button.h',
+  'ide-run-manager.h',
+  'ide-runner.h',
+  'ide-runner-addin.h',
+]
+
+runner_sources = [
+  'ide-run-button.c',
+  'ide-run-manager.c',
+  'ide-runner.c',
+  'ide-runner-addin.c',
+]
+
+runner_private_sources = [
+  'ide-run-manager-private.h',
+]
+
+libide_public_headers += files(runner_headers)
+libide_public_sources += files(runner_sources)
+libide_private_sources += files(runner_private_sources)
+
+install_headers(runner_headers, subdir: join_paths(libide_header_subdir, 'runner'))
diff --git a/libide/runtimes/meson.build b/libide/runtimes/meson.build
new file mode 100644
index 0000000..3e2f7df
--- /dev/null
+++ b/libide/runtimes/meson.build
@@ -0,0 +1,21 @@
+runtimes_headers = [
+  'ide-runtime-manager.h',
+  'ide-runtime-provider.h',
+  'ide-runtime.h',
+]
+
+runtimes_sources = [
+  'ide-runtime-manager.c',
+  'ide-runtime-provider.c',
+  'ide-runtime.c',
+]
+
+runtimes_enums = [
+  'ide-runtime.h',
+]
+
+libide_public_headers += files(runtimes_headers)
+libide_public_sources += files(runtimes_sources)
+libide_enum_headers += files(runtimes_enums)
+
+install_headers(runtimes_headers, subdir: join_paths(libide_header_subdir, 'runtime'))
diff --git a/libide/search/meson.build b/libide/search/meson.build
new file mode 100644
index 0000000..fe74442
--- /dev/null
+++ b/libide/search/meson.build
@@ -0,0 +1,24 @@
+search_headers = [
+  'ide-search-engine.h',
+  'ide-search-entry.h',
+  'ide-search-provider.h',
+  'ide-search-result.h',
+]
+
+search_sources = [
+  'ide-search-engine.c',
+  'ide-search-entry.c',
+  'ide-search-provider.c',
+  'ide-search-result.c',
+]
+
+search_private_sources = [
+  'ide-search-reducer.c',
+  'ide-search-reducer.h',
+]
+
+libide_public_headers += files(search_headers)
+libide_public_sources += files(search_sources)
+libide_private_sources += files(search_private_sources)
+
+install_headers(search_headers, subdir: join_paths(libide_header_subdir, 'search'))
diff --git a/libide/snippets/meson.build b/libide/snippets/meson.build
new file mode 100644
index 0000000..2ef8784
--- /dev/null
+++ b/libide/snippets/meson.build
@@ -0,0 +1,31 @@
+snippets_headers = [
+  'ide-source-snippet-chunk.h',
+  'ide-source-snippet-context.h',
+  'ide-source-snippet.h',
+  'ide-source-snippets-manager.h',
+  'ide-source-snippets.h',
+]
+
+snippets_sources = [
+  'ide-source-snippet-chunk.c',
+  'ide-source-snippet-context.c',
+  'ide-source-snippet.c',
+  'ide-source-snippets-manager.c',
+  'ide-source-snippets.c',
+]
+
+snippets_private_sources = [
+  'ide-source-snippet-completion-item.c',
+  'ide-source-snippet-completion-item.h',
+  'ide-source-snippet-completion-provider.c',
+  'ide-source-snippet-completion-provider.h',
+  'ide-source-snippet-parser.c',
+  'ide-source-snippet-parser.h',
+  'ide-source-snippet-private.h',
+]
+
+libide_public_headers += files(snippets_headers)
+libide_public_sources += files(snippets_sources)
+libide_private_sources += files(snippets_private_sources)
+
+install_headers(snippets_headers, subdir: join_paths(libide_header_subdir, 'snippets'))
diff --git a/libide/sourceview/meson.build b/libide/sourceview/meson.build
new file mode 100644
index 0000000..e77a2c2
--- /dev/null
+++ b/libide/sourceview/meson.build
@@ -0,0 +1,64 @@
+sourceview_headers = [
+  'ide-completion-item.h',
+  'ide-completion-provider.h',
+  'ide-completion-results.h',
+  'ide-cursor.h',
+  'ide-indenter.h',
+  'ide-language.h',
+  'ide-source-map.h',
+  'ide-source-style-scheme.h',
+  'ide-source-view-mode.h',
+  'ide-source-view.h',
+]
+
+sourceview_sources = [
+  'ide-completion-item.c',
+  'ide-completion-provider.c',
+  'ide-completion-results.c',
+  'ide-cursor.c',
+  'ide-indenter.c',
+  'ide-language.c',
+  'ide-source-map.c',
+  'ide-source-style-scheme.c',
+  'ide-source-view-mode.c',
+  'ide-source-view.c',
+]
+
+sourceview_private_sources = [
+  'ide-completion-words.c',
+  'ide-completion-words.h',
+  'ide-omni-gutter-renderer.c',
+  'ide-omni-gutter-renderer.h',
+  'ide-line-change-gutter-renderer.c',
+  'ide-line-change-gutter-renderer.h',
+  'ide-source-iter.c',
+  'ide-source-iter.h',
+  'ide-source-view-capture.c',
+  'ide-source-view-capture.h',
+  'ide-source-view-movements.c',
+  'ide-source-view-movements.h',
+  'ide-source-view-private.h',
+  'ide-source-view-shortcuts.c',
+  'ide-text-iter.c',
+  'ide-text-iter.h',
+  'ide-text-util.c',
+  'ide-text-util.h',
+  'ide-word-completion-provider.c',
+  'ide-word-completion-provider.h',
+  'ide-word-completion-results.c',
+  'ide-word-completion-results.h',
+  'ide-word-completion-item.c',
+  'ide-word-completion-item.h',
+]
+
+sourceview_enums = [
+  'ide-cursor.h',
+  'ide-source-view.h',
+]
+
+libide_public_headers += files(sourceview_headers)
+libide_public_sources += files(sourceview_sources)
+libide_private_sources += files(sourceview_private_sources)
+libide_enum_headers += files(sourceview_enums)
+
+install_headers(sourceview_headers, subdir: join_paths(libide_header_subdir, 'sourceview'))
diff --git a/libide/subprocess/meson.build b/libide/subprocess/meson.build
new file mode 100644
index 0000000..a279882
--- /dev/null
+++ b/libide/subprocess/meson.build
@@ -0,0 +1,25 @@
+subprocess_headers = [
+  'ide-subprocess.h',
+  'ide-subprocess-launcher.h',
+  'ide-subprocess-supervisor.h',
+]
+
+subprocess_sources = [
+  'ide-subprocess.c',
+  'ide-subprocess-launcher.c',
+  'ide-subprocess-supervisor.c',
+]
+
+subprocess_private_sources = [
+  'ide-breakout-subprocess.c',
+  'ide-breakout-subprocess.h',
+  'ide-breakout-subprocess-private.h',
+  'ide-simple-subprocess.c',
+  'ide-simple-subprocess.h',
+]
+
+libide_public_headers += files(subprocess_headers)
+libide_public_sources += files(subprocess_sources)
+libide_private_sources += files(subprocess_private_sources)
+
+install_headers(subprocess_headers, subdir: join_paths(libide_header_subdir, 'subprocess'))
diff --git a/libide/symbols/meson.build b/libide/symbols/meson.build
new file mode 100644
index 0000000..b09ca24
--- /dev/null
+++ b/libide/symbols/meson.build
@@ -0,0 +1,31 @@
+symbols_headers = [
+  'ide-code-index-entries.h',
+  'ide-code-index-entry.h',
+  'ide-code-indexer.h',
+  'ide-symbol-node.h',
+  'ide-symbol-resolver.h',
+  'ide-symbol-tree.h',
+  'ide-symbol.h',
+  'ide-tags-builder.h',
+]
+
+symbols_sources = [
+  'ide-code-index-entries.c',
+  'ide-code-index-entry.c',
+  'ide-code-indexer.c',
+  'ide-symbol-node.c',
+  'ide-symbol-resolver.c',
+  'ide-symbol-tree.c',
+  'ide-symbol.c',
+  'ide-tags-builder.c',
+]
+
+symbols_enums = [
+  'ide-symbol.h',
+]
+
+libide_public_headers += files(symbols_headers)
+libide_public_sources += files(symbols_sources)
+libide_enum_headers += files(symbols_enums)
+
+install_headers(symbols_headers, subdir: join_paths(libide_header_subdir, 'symbols'))
diff --git a/libide/template/meson.build b/libide/template/meson.build
new file mode 100644
index 0000000..c0be265
--- /dev/null
+++ b/libide/template/meson.build
@@ -0,0 +1,16 @@
+template_headers = [
+  'ide-project-template.h',
+  'ide-template-base.h',
+  'ide-template-provider.h',
+]
+
+template_sources = [
+  'ide-project-template.c',
+  'ide-template-base.c',
+  'ide-template-provider.c',
+]
+
+libide_public_headers += files(template_headers)
+libide_public_sources += files(template_sources)
+
+install_headers(template_headers, subdir: join_paths(libide_header_subdir, 'template'))
diff --git a/libide/threading/meson.build b/libide/threading/meson.build
new file mode 100644
index 0000000..44fc6ff
--- /dev/null
+++ b/libide/threading/meson.build
@@ -0,0 +1,17 @@
+threading_headers = [
+  'ide-thread-pool.h',
+]
+
+threading_sources = [
+  'ide-thread-pool.c',
+]
+
+threading_enums = [
+  'ide-thread-pool.h',
+]
+
+libide_public_headers += files(threading_headers)
+libide_public_sources += files(threading_sources)
+libide_enum_headers += files(threading_enums)
+
+install_headers(threading_headers, subdir: join_paths(libide_header_subdir, 'threading'))
diff --git a/libide/transfers/meson.build b/libide/transfers/meson.build
new file mode 100644
index 0000000..a7191d8
--- /dev/null
+++ b/libide/transfers/meson.build
@@ -0,0 +1,24 @@
+transfers_headers = [
+  'ide-pkcon-transfer.h',
+  'ide-transfer-manager.h',
+  'ide-transfer-row.h',
+  'ide-transfer.h',
+  'ide-transfer-button.h',
+  'ide-transfers-button.h',
+  'ide-transfers-progress-icon.h',
+]
+
+transfers_sources = [
+  'ide-pkcon-transfer.c',
+  'ide-transfer-manager.c',
+  'ide-transfer-row.c',
+  'ide-transfer.c',
+  'ide-transfer-button.c',
+  'ide-transfers-button.c',
+  'ide-transfers-progress-icon.c',
+]
+
+libide_public_headers += files(transfers_headers)
+libide_public_sources += files(transfers_sources)
+
+install_headers(transfers_headers, subdir: join_paths(libide_header_subdir, 'transfers'))
diff --git a/libide/util/meson.build b/libide/util/meson.build
new file mode 100644
index 0000000..fa1d56c
--- /dev/null
+++ b/libide/util/meson.build
@@ -0,0 +1,45 @@
+util_headers = [
+  'ide-cell-renderer-fancy.h',
+  'ide-fancy-tree-view.h',
+  'ide-flatpak.h',
+  'ide-glib.h',
+  'ide-gtk.h',
+  'ide-line-reader.h',
+  'ide-list-inline.h',
+  'ide-posix.h',
+  'ide-progress.h',
+  'ide-settings.h',
+  'ide-uri.h',
+]
+
+util_sources = [
+  'ide-cell-renderer-fancy.c',
+  'ide-fancy-tree-view.c',
+  'ide-flatpak.c',
+  'ide-glib.c',
+  'ide-gtk.c',
+  'ide-line-reader.c',
+  'ide-posix.c',
+  'ide-progress.c',
+  'ide-settings.c',
+  'ide-uri.c',
+]
+
+util_private_sources = [
+  'ide-async-helper.c',
+  'ide-async-helper.h',
+  'ide-battery-monitor.c',
+  'ide-battery-monitor.h',
+  'ide-doc-seq.c',
+  'ide-doc-seq.h',
+  'ide-ref-ptr.c',
+  'ide-ref-ptr.h',
+  'ide-window-settings.c',
+  'ide-window-settings.h',
+]
+
+libide_public_headers += files(util_headers)
+libide_public_sources += files(util_sources)
+libide_private_sources += files(util_private_sources)
+
+install_headers(util_headers, subdir: join_paths(libide_header_subdir, 'util'))
diff --git a/libide/vcs/meson.build b/libide/vcs/meson.build
new file mode 100644
index 0000000..0f01338
--- /dev/null
+++ b/libide/vcs/meson.build
@@ -0,0 +1,23 @@
+vcs_headers = [
+  'ide-vcs-config.h',
+  'ide-vcs-initializer.h',
+  'ide-vcs-uri.h',
+  'ide-vcs.h',
+]
+
+vcs_sources = [
+  'ide-vcs-config.c',
+  'ide-vcs-initializer.c',
+  'ide-vcs-uri.c',
+  'ide-vcs.c',
+]
+
+vcs_enums = [
+  'ide-vcs-config.h',
+]
+
+libide_public_headers += files(vcs_headers)
+libide_public_sources += files(vcs_sources)
+libide_enum_headers += files(vcs_enums)
+
+install_headers(vcs_headers, subdir: join_paths(libide_header_subdir, 'vcs'))
diff --git a/libide/workbench/meson.build b/libide/workbench/meson.build
new file mode 100644
index 0000000..9f56388
--- /dev/null
+++ b/libide/workbench/meson.build
@@ -0,0 +1,32 @@
+workbench_headers = [
+  'ide-omni-bar.h',
+  'ide-perspective.h',
+  'ide-workbench-addin.h',
+  'ide-workbench-message.h',
+  'ide-workbench-header-bar.h',
+  'ide-workbench.h',
+]
+
+workbench_sources = [
+  'ide-omni-bar.c',
+  'ide-perspective.c',
+  'ide-workbench-addin.c',
+  'ide-workbench-message.c',
+  'ide-workbench-header-bar.c',
+  'ide-workbench-open.c',
+  'ide-workbench.c',
+]
+
+workbench_private_sources = [
+  'ide-omni-pausable-row.c',
+  'ide-omni-pausable-row.h',
+  'ide-workbench-actions.c',
+  'ide-workbench-private.h',
+  'ide-workbench-shortcuts.c',
+]
+
+libide_public_headers += files(workbench_headers)
+libide_public_sources += files(workbench_sources)
+libide_private_sources += files(workbench_private_sources)
+
+install_headers(workbench_headers, subdir: join_paths(libide_header_subdir, 'workbench'))
diff --git a/libide/workers/meson.build b/libide/workers/meson.build
new file mode 100644
index 0000000..09c07f4
--- /dev/null
+++ b/libide/workers/meson.build
@@ -0,0 +1,20 @@
+workers_headers = [
+  'ide-worker.h',
+]
+
+workers_sources = [
+  'ide-worker.c',
+]
+
+workers_private_sources = [
+  'ide-worker-manager.c',
+  'ide-worker-manager.h',
+  'ide-worker-process.c',
+  'ide-worker-process.h',
+]
+
+libide_public_headers += files(workers_headers)
+libide_public_sources += files(workers_sources)
+libide_private_sources += files(workers_private_sources)
+
+install_headers(workers_headers, subdir: join_paths(libide_header_subdir, 'workers'))
diff --git a/meson_options.txt b/meson_options.txt
index e2dcacc..dad0d4d 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -13,7 +13,6 @@ option('with_channel',
 
 option('with_editorconfig', type: 'boolean')
 option('with_webkit', type: 'boolean')
-option('with_introspection', type: 'boolean')
 option('with_vapi', type: 'boolean')
 option('with_help', type: 'boolean')
 option('with_docs', type: 'boolean')


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