summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErnestas Kulik <ernestask@src.gnome.org>2016-09-28 09:16:11 +0300
committerErnestas Kulik <ernestask@src.gnome.org>2017-02-24 00:01:00 +0200
commit8e237490e99ae5e16e86cb70d2582bcd8f196469 (patch)
tree4db9d3ae839d199943bdb57644595f778838637c
parent9edc580ca0b8dfc719a1cfb9a5c03e83fb56acc4 (diff)
downloadnautilus-8e237490e99ae5e16e86cb70d2582bcd8f196469.tar.gz
general: add support for Meson
Since it’s 2017 already, Nautilus should use a build system that doesn’t take longer to set up the build than it takes to actually build. An observed build time using Ninja of roughly one-fifth of what it took Autotools is more than reason enough to add support for Meson. Along with that, this commit adds a convenience script (https://github.com/meitar/git-archive-all.sh) to generate a tarball for releases, since we use libgd as a submodule and Meson does not handle source distributions. https://bugzilla.gnome.org/show_bug.cgi?id=778167
-rw-r--r--.gitattributes13
-rw-r--r--config.h.meson11
-rw-r--r--data/icons/meson.build2
-rw-r--r--data/meson.build67
-rw-r--r--docs/meson.build3
-rw-r--r--docs/reference/libnautilus-extension/meson.build13
-rw-r--r--docs/reference/meson.build1
-rw-r--r--eel/meson.build47
-rw-r--r--libnautilus-extension/meson.build67
-rwxr-xr-xmake_release.sh31
-rw-r--r--meson.build133
-rw-r--r--meson_options.txt32
-rw-r--r--nautilus-desktop/meson.build30
-rw-r--r--nautilus-sendto-extension/meson.build11
-rw-r--r--po/meson.build1
-rw-r--r--src/meson.build314
l---------subprojects/libgd1
-rw-r--r--test/meson.build31
18 files changed, 808 insertions, 0 deletions
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 000000000..219cbdfb8
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,13 @@
+/scripts export-ignore
+/git.mk export-ignore
+/.gitattributes export-ignore
+/.gitmodules export-ignore
+/nautilus.doap export-ignore
+/.buildconfig export-ignore
+/OVERVIEW.md export-ignore
+/org.gnome.Nautilus.json export-ignore
+/test/file-torture.py export-ignore
+/src/gtk/gtk-code-generator.sh export-ignore
+/data/run-uncrustify.sh export-ignore
+/data/uncrustify.cfg export-ignore
+/eel/README.canvas export-ignore
diff --git a/config.h.meson b/config.h.meson
new file mode 100644
index 000000000..9bedac612
--- /dev/null
+++ b/config.h.meson
@@ -0,0 +1,11 @@
+#mesondefine VERSION
+#mesondefine PACKAGE_VERSION
+#mesondefine GETTEXT_PACKAGE
+#mesondefine HAVE_SELINUX
+#mesondefine ENABLE_EMPTY_VIEW
+#mesondefine ENABLE_DESKTOP
+#mesondefine ENABLE_PACKAGEKIT
+#mesondefine ENABLE_TRACKER
+#mesondefine LOCALEDIR
+#mesondefine NAUTILUS_DATADIR
+#mesondefine NAUTILUS_EXTENSIONDIR
diff --git a/data/icons/meson.build b/data/icons/meson.build
new file mode 100644
index 000000000..9a918f414
--- /dev/null
+++ b/data/icons/meson.build
@@ -0,0 +1,2 @@
+install_subdir ('hicolor',
+ install_dir: icondir)
diff --git a/data/meson.build b/data/meson.build
new file mode 100644
index 000000000..92dec2186
--- /dev/null
+++ b/data/meson.build
@@ -0,0 +1,67 @@
+subdir ('icons')
+
+po_dir = join_paths (meson.source_root (), 'po')
+
+line_up_parameters = executable ('lineup-parameters',
+ 'lineup-parameters.c',
+ dependencies: [gio, gio_unix])
+
+i18n.merge_file ('desktop',
+ input: 'org.gnome.Nautilus.desktop.in',
+ output: 'org.gnome.Nautilus.desktop',
+ install: true,
+ install_dir: desktopdir,
+ po_dir: po_dir,
+ type: 'desktop')
+
+i18n.merge_file ('desktop-autorun-software',
+ input: 'nautilus-autorun-software.desktop.in',
+ output: 'nautilus-autorun-software.desktop',
+ install: true,
+ install_dir: desktopdir,
+ po_dir: po_dir,
+ type: 'desktop')
+
+i18n.merge_file ('desktop-autostart',
+ input: 'nautilus-autostart.desktop.in',
+ output: 'nautilus-autostart.desktop',
+ install: true,
+ install_dir: join_paths (sysconfdir, 'xdg', 'autostart'),
+ po_dir: po_dir,
+ type: 'desktop')
+
+if get_option ('enable-desktop')
+ i18n.merge_file ('desktop',
+ input: 'nautilus-classic.desktop.in',
+ output: 'nautilus-classic.desktop',
+ install: true,
+ install_dir: desktopdir,
+ po_dir: po_dir,
+ type: 'desktop')
+endif
+
+i18n.merge_file ('desktop',
+ input: 'org.gnome.Nautilus.appdata.xml.in',
+ output: 'org.gnome.Nautilus.appdata.xml',
+ install: true,
+ install_dir: appdatadir,
+ po_dir: po_dir,)
+
+service_conf = configuration_data ()
+service_conf.set ('bindir', join_paths (prefix, bindir))
+
+configure_file (input: 'org.gnome.Nautilus.service.in',
+ output: 'org.gnome.Nautilus.service',
+ configuration: service_conf,
+ install_dir: servicedir)
+
+configure_file (input: 'org.freedesktop.FileManager1.service.in',
+ output: 'org.freedesktop.FileManager1.service',
+ configuration: service_conf,
+ install_dir: servicedir)
+
+install_data ('nautilus-search-provider.ini',
+ install_dir: searchproviderdir)
+
+install_data ('org.gnome.nautilus.gschema.xml',
+ install_dir: schemadir)
diff --git a/docs/meson.build b/docs/meson.build
new file mode 100644
index 000000000..036ecd4d8
--- /dev/null
+++ b/docs/meson.build
@@ -0,0 +1,3 @@
+install_man ('nautilus.1')
+
+subdir ('reference')
diff --git a/docs/reference/libnautilus-extension/meson.build b/docs/reference/libnautilus-extension/meson.build
new file mode 100644
index 000000000..3cb53d82b
--- /dev/null
+++ b/docs/reference/libnautilus-extension/meson.build
@@ -0,0 +1,13 @@
+docs_conf = configuration_data ()
+docs_conf.set ('NAUTILUS_EXTENSION_VERSION_INFO', nautilus_extension_version)
+
+docs_version = configure_file (input: 'version.xml.in',
+ output: 'version.xml',
+ configuration: docs_conf)
+
+gnome.gtkdoc ('libnautilus-extension',
+ main_xml: 'libnautilus-extension-docs.xml',
+ src_dir: join_paths (meson.source_root (), 'libnautilus-extension'),
+ dependencies: nautilus_extension,
+ install: true,
+ scan_args: ['--ignore-headers=nautilus-extension-private.h'])
diff --git a/docs/reference/meson.build b/docs/reference/meson.build
new file mode 100644
index 000000000..46b538208
--- /dev/null
+++ b/docs/reference/meson.build
@@ -0,0 +1 @@
+subdir ('libnautilus-extension')
diff --git a/eel/meson.build b/eel/meson.build
new file mode 100644
index 000000000..ac2edeabc
--- /dev/null
+++ b/eel/meson.build
@@ -0,0 +1,47 @@
+libeel_2_sources = [
+ 'eel-accessibility.h',
+ 'eel-accessibility.c',
+ 'eel-art-extensions.h',
+ 'eel-art-extensions.c',
+ 'eel-canvas.h',
+ 'eel-canvas.c',
+ 'eel-debug.h',
+ 'eel-debug.c',
+ 'eel-gdk-extensions.h',
+ 'eel-gdk-extensions.c',
+ 'eel-glib-extensions.h',
+ 'eel-glib-extensions.c',
+ 'eel-gnome-extensions.h',
+ 'eel-gnome-extensions.c',
+ 'eel-graphic-effects.h',
+ 'eel-graphic-effects.c',
+ 'eel-gtk-extensions.h',
+ 'eel-self-checks.h',
+ 'eel-self-checks.c',
+ 'eel-stock-dialogs.h',
+ 'eel-stock-dialogs.c',
+ 'eel-string.h',
+ 'eel-string.c',
+ 'eel-vfs-extensions.h',
+ 'eel-vfs-extensions.c',
+ 'eel.h',
+ 'eel-gtk-extensions.c',
+ 'eel-lib-self-check-functions.h',
+ 'eel-lib-self-check-functions.c',
+]
+
+libeel_2_deps = [glib, gtk, gail, libm, x11]
+
+libeel_2 = static_library ('eel-2', libeel_2_sources,
+ dependencies: libeel_2_deps,
+ include_directories: nautilus_include_dirs)
+
+eel_2 = declare_dependency (link_with: libeel_2,
+ include_directories: nautilus_include_dirs,
+ dependencies: libeel_2_deps)
+
+check_eel = executable ('check-eel',
+ 'check-program.c',
+ dependencies: [eel_2, xml])
+
+test ('check-eel', check_eel)
diff --git a/libnautilus-extension/meson.build b/libnautilus-extension/meson.build
new file mode 100644
index 000000000..6da5a102f
--- /dev/null
+++ b/libnautilus-extension/meson.build
@@ -0,0 +1,67 @@
+nautilus_extension_version = '1.4.0'
+
+libnautilus_extension_headers = [
+ 'nautilus-column-provider.h',
+ 'nautilus-column.h',
+ 'nautilus-extension-types.h',
+ 'nautilus-file-info.h',
+ 'nautilus-info-provider.h',
+ 'nautilus-location-widget-provider.h',
+ 'nautilus-menu-item.h',
+ 'nautilus-menu-provider.h',
+ 'nautilus-property-page-provider.h',
+ 'nautilus-property-page.h',
+ 'nautilus-menu.h'
+]
+
+install_headers (libnautilus_extension_headers,
+ subdir: join_paths ('nautilus', 'libnautilus-extension'))
+
+libnautilus_extension_sources = [
+ 'nautilus-column-provider.c',
+ 'nautilus-column.c',
+ 'nautilus-extension-types.c',
+ 'nautilus-extension-private.h',
+ 'nautilus-file-info.c',
+ 'nautilus-info-provider.c',
+ 'nautilus-location-widget-provider.c',
+ 'nautilus-menu-item.c',
+ 'nautilus-menu-provider.c',
+ 'nautilus-property-page-provider.c',
+ 'nautilus-property-page.c',
+ 'nautilus-menu.c'
+]
+
+libnautilus_extension_deps = [glib, gtk]
+
+libnautilus_extension = shared_library ('nautilus-extension',
+ libnautilus_extension_sources,
+ dependencies: libnautilus_extension_deps,
+ include_directories: nautilus_include_dirs,
+ version: nautilus_extension_version,
+ install: true)
+
+gnome.generate_gir (libnautilus_extension,
+ sources: libnautilus_extension_headers + libnautilus_extension_sources,
+ nsversion: '3.0',
+ namespace: 'Nautilus',
+ includes: ['Gtk-3.0', 'Gio-2.0', 'GLib-2.0'],
+ install: true)
+
+nautilus_extension = declare_dependency (link_with: libnautilus_extension,
+ dependencies: libnautilus_extension_deps,
+ include_directories: nautilus_include_dirs)
+
+pkgconfig_data = configuration_data ()
+
+pkgconfig_data.set ('prefix', prefix)
+pkgconfig_data.set ('exec_prefix', '${prefix}')
+pkgconfig_data.set ('libdir', join_paths ('${exec_prefix}', libdir))
+pkgconfig_data.set ('includedir', join_paths ('${prefix}', includedir))
+pkgconfig_data.set ('extensiondir', join_paths ('${exec_prefix}', extensiondir))
+pkgconfig_data.set ('VERSION', nautilus_extension_version)
+
+configure_file (input: 'libnautilus-extension.pc.in',
+ output: 'libnautilus-extension.pc',
+ configuration: pkgconfig_data,
+ install_dir: join_paths (libdir, 'pkgconfig'))
diff --git a/make_release.sh b/make_release.sh
new file mode 100755
index 000000000..f33e48996
--- /dev/null
+++ b/make_release.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+test -n "$srcdir" || srcdir=$(dirname "$0")
+test -n "$srcdir" || srcdir=.
+
+cd $srcdir
+
+VERSION=$(git describe --abbrev=0)
+NAME="nautilus-$VERSION"
+
+echo "Updating submodules…"
+git submodule update --init
+
+echo "Creating git tree archive…"
+git archive --prefix="${NAME}/" --format=tar HEAD > nautilus.tar
+
+cd libgd
+
+git archive --prefix="${NAME}/libgd/" --format=tar HEAD > libgd.tar
+
+cd ..
+
+rm -f "${NAME}.tar"
+
+tar -Af "${NAME}.tar" nautilus.tar
+tar -Af "${NAME}.tar" libgd/libgd.tar
+
+rm -f nautilus.tar
+rm -f libgd/libgd.tar
+
+echo "Compressing archive…"
+xz -f "${NAME}.tar"
diff --git a/meson.build b/meson.build
new file mode 100644
index 000000000..0f1c7f954
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,133 @@
+project ('nautilus', 'c',
+ version: '3.23.90',
+ meson_version: '>=0.37.0',
+ license: 'GPL2+')
+
+bindir = get_option ('bindir')
+datadir = get_option ('datadir')
+appdatadir = join_paths (datadir, 'appdata')
+desktopdir = join_paths (datadir, 'applications')
+icondir = join_paths (datadir, 'icons')
+includedir = get_option ('includedir')
+libdir = get_option ('libdir')
+extensiondir = join_paths (libdir, 'nautilus', 'extensions-3.0')
+localedir = get_option ('localedir')
+prefix = get_option ('prefix')
+schemadir = join_paths (datadir, 'glib-2.0', 'schemas')
+searchproviderdir = join_paths (datadir, 'gnome-shell', 'search-providers')
+servicedir = join_paths (datadir, 'dbus-1', 'services')
+sysconfdir = get_option ('sysconfdir')
+
+glib_ver = '>=2.51.2'
+gnome_desktop_ver = '>=3.0.0'
+pango_ver = '1.28.3'
+gtk_ver = '>=3.21.6'
+xml_ver = '>=2.7.8'
+exif_ver = '>=0.6.20'
+exempi_ver = '>=2.1.0'
+notify_ver = '0.7.0'
+schemas_ver = '>=3.8.0'
+autoar_ver = '>=0.1'
+selinux_ver = '>=2.0'
+
+cc = meson.get_compiler ('c')
+
+gnome = import ('gnome')
+i18n = import ('i18n')
+
+glib = dependency ('glib-2.0', version: glib_ver)
+gtk = dependency ('gtk+-3.0', version: gtk_ver)
+autoar = dependency ('gnome-autoar-0', version: autoar_ver)
+
+gail = dependency ('gail-3.0')
+gnome_desktop = dependency ('gnome-desktop-3.0', version: gnome_desktop_ver)
+xml = dependency ('libxml-2.0', version: xml_ver)
+x11 = dependency ('x11')
+
+gthread = dependency ('gthread-2.0', version: glib_ver)
+gmodule_no_export = dependency ('gmodule-no-export-2.0', version: glib_ver)
+gio = dependency ('gio-2.0', version: glib_ver)
+gio_unix = dependency ('gio-unix-2.0', version: glib_ver)
+gsettings_desktop_schemas = dependency ('gsettings-desktop-schemas',
+ version: schemas_ver)
+
+libm = cc.find_library ('libm')
+
+if get_option ('enable-update-mimedb')
+ update_mime_database = find_program ('update-mime-database', required: true)
+endif
+
+exif = dependency ('libexif',
+ version: exif_ver,
+ required: get_option ('enable-exif'))
+exempi = dependency ('exempi-2.0',
+ version: exempi_ver,
+ required: get_option ('enable-xmp'))
+selinux = dependency ('libselinux',
+ version: selinux_ver,
+ required: get_option ('enable-selinux'))
+
+if get_option ('enable-tracker')
+ tracker_sparql = dependency ('tracker-sparql-1.0')
+endif
+
+conf = configuration_data ()
+conf.set_quoted ('VERSION', meson.project_version ())
+conf.set_quoted ('PACKAGE_VERSION', meson.project_version ())
+conf.set_quoted ('GETTEXT_PACKAGE', 'nautilus')
+conf.set_quoted ('LOCALEDIR', join_paths (prefix, localedir))
+conf.set_quoted ('NAUTILUS_DATADIR', join_paths (datadir, 'nautilus'))
+conf.set_quoted ('NAUTILUS_EXTENSIONDIR', join_paths (prefix, extensiondir))
+
+if get_option ('enable-selinux')
+ conf.set10 ('HAVE_SELINUX', true)
+endif
+
+if get_option ('enable-empty-view')
+ conf.set10 ('ENABLE_EMPTY_VIEW', true)
+endif
+
+if get_option ('enable-desktop')
+ conf.set10 ('ENABLE_DESKTOP', true)
+endif
+
+if get_option ('enable-packagekit')
+ conf.set10 ('ENABLE_PACKAGEKIT', true)
+endif
+
+if get_option ('enable-tracker')
+ conf.set10 ('ENABLE_TRACKER', true)
+endif
+
+configure_file (input: 'config.h.meson',
+ output: 'config.h',
+ configuration: conf)
+
+nautilus_include_dirs = include_directories ('.')
+
+subdir ('eel')
+subdir ('libnautilus-extension')
+
+message ('Updating libgd submodule…')
+run_command ('git', '--git-dir="$MESON_SOURCE_ROOT/.git"', 'submodule', 'update', '--init', 'libgd')
+
+libgd_options = ['static=true',
+ 'with-gtk-hacks=true',
+ 'with-main-view=true',
+ 'with-tagged-entry=true']
+libgd = subproject('libgd', default_options: libgd_options)
+libgd_dep = libgd.get_variable ('libgd_dep')
+
+subdir ('src')
+subdir ('test')
+subdir ('data')
+subdir ('po')
+subdir ('docs')
+
+if get_option ('enable-desktop')
+ subdir ('nautilus-desktop')
+endif
+
+if get_option ('enable-nst-extension')
+ subdir ('nautilus-sendto-extension')
+endif
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 000000000..99d198907
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,32 @@
+option ('enable-profiling',
+ type: 'boolean',
+ value: false)
+option ('enable-nst-extension',
+ type: 'boolean',
+ value: true)
+option ('enable-exif',
+ type: 'boolean',
+ value: false,
+ description: 'enable EXIF support')
+option ('enable-xmp',
+ type: 'boolean',
+ value: false,
+ description: 'enable XMP support')
+option ('enable-selinux',
+ type: 'boolean',
+ value: true)
+option ('enable-empty-view',
+ type: 'boolean',
+ value: false)
+option ('enable-desktop',
+ type: 'boolean',
+ value: true)
+option ('enable-packagekit',
+ type: 'boolean',
+ value: true)
+option ('enable-tracker',
+ type: 'boolean',
+ value: true)
+option ('enable-update-mimedb',
+ type: 'boolean',
+ value: true)
diff --git a/nautilus-desktop/meson.build b/nautilus-desktop/meson.build
new file mode 100644
index 000000000..a5e207d1e
--- /dev/null
+++ b/nautilus-desktop/meson.build
@@ -0,0 +1,30 @@
+nautilus_desktop_sources = [
+ 'main-desktop.c',
+ 'nautilus-desktop-application.c',
+ 'nautilus-desktop-application.h',
+ 'nautilus-desktop-canvas-view.c',
+ 'nautilus-desktop-canvas-view.h',
+ 'nautilus-desktop-canvas-view-container.c',
+ 'nautilus-desktop-canvas-view-container.h',
+ 'nautilus-desktop-directory.c',
+ 'nautilus-desktop-directory.h',
+ 'nautilus-desktop-directory-file.c',
+ 'nautilus-desktop-directory-file.h',
+ 'nautilus-desktop-icon-file.c',
+ 'nautilus-desktop-icon-file.h',
+ 'nautilus-desktop-link.c',
+ 'nautilus-desktop-link.h',
+ 'nautilus-desktop-link-monitor.c',
+ 'nautilus-desktop-link-monitor.h',
+ 'nautilus-desktop-metadata.c',
+ 'nautilus-desktop-metadata.h',
+ 'nautilus-desktop-window.c',
+ 'nautilus-desktop-window.h',
+ 'nautilus-desktop-window-slot.c',
+ 'nautilus-desktop-window-slot.h'
+]
+
+nautilus_desktop = executable ('nautilus-desktop',
+ nautilus_desktop_sources,
+ dependencies: libnautilus_dep,
+ install: true)
diff --git a/nautilus-sendto-extension/meson.build b/nautilus-sendto-extension/meson.build
new file mode 100644
index 000000000..4464625c0
--- /dev/null
+++ b/nautilus-sendto-extension/meson.build
@@ -0,0 +1,11 @@
+libnautilus_sendto_sources = [
+ 'nautilus-nste.c',
+ 'nautilus-nste.h',
+ 'nautilus-sendto-module.c'
+]
+
+libnautilus_sendto = shared_library ('nautilus-sendto',
+ libnautilus_sendto_sources,
+ dependencies: nautilus_extension,
+ install: true,
+ install_dir: extensiondir)
diff --git a/po/meson.build b/po/meson.build
new file mode 100644
index 000000000..08c40c11d
--- /dev/null
+++ b/po/meson.build
@@ -0,0 +1 @@
+i18n.gettext ('nautilus')
diff --git a/src/meson.build b/src/meson.build
new file mode 100644
index 000000000..d66e9709d
--- /dev/null
+++ b/src/meson.build
@@ -0,0 +1,314 @@
+built_sources = []
+gdbus_sources = []
+enums = []
+
+gdbus_sources += gnome.gdbus_codegen ('nautilus-freedesktop-generated',
+ join_paths (meson.source_root (), 'data', 'freedesktop-dbus-interfaces.xml'),
+ interface_prefix: 'org.freedesktop',
+ namespace: 'NautilusFreedesktop')
+# The header is used in nautilus-desktop.
+built_sources += gdbus_sources
+
+gdbus_sources += gnome.gdbus_codegen ('nautilus-generated',
+ join_paths (meson.source_root (), 'data', 'dbus-interfaces.xml'),
+ interface_prefix: 'org.gnome.Nautilus',
+ namespace: 'NautilusDBus')
+
+gdbus_sources += gnome.gdbus_codegen ('nautilus-shell-search-provider-generated',
+ join_paths (meson.source_root (), 'data', 'shell-search-provider-dbus-interfaces.xml'),
+ interface_prefix: 'org.gnome',
+ namespace: 'Nautilus')
+
+enum_headers = [
+ 'nautilus-search-popover.h',
+ 'nautilus-special-location-bar.h',
+ 'nautilus-query.h',
+ 'nautilus-search-provider.h'
+]
+
+enums += gnome.mkenums ('nautilus-enum-types',
+ c_template: 'nautilus-enum-types.c.template',
+ h_template: 'nautilus-enum-types.h.template',
+ sources: enum_headers)
+
+resources = gnome.compile_resources ('nautilus-resources',
+ 'resources/nautilus.gresource.xml',
+ source_dir: 'resources',
+ c_name: 'nautilus',
+ extra_args: '--manual-register')
+built_sources += resources[1]
+
+libnautilus_sources = [
+ enums,
+ gdbus_sources,
+ resources[0],
+ 'animation/egg-animation.c',
+ 'animation/egg-animation.h',
+ 'animation/egg-frame-source.c',
+ 'animation/egg-frame-source.h',
+ 'animation/ide-box-theatric.c',
+ 'animation/ide-box-theatric.h',
+ 'animation/ide-cairo.c',
+ 'animation/ide-cairo.h',
+ 'gtk/nautilusgtkplacesview.c',
+ 'gtk/nautilusgtkplacesviewprivate.h',
+ 'gtk/nautilusgtkplacesviewrow.c',
+ 'gtk/nautilusgtkplacesviewrowprivate.h',
+ 'nautilus-application.c',
+ 'nautilus-application.h',
+ 'nautilus-bookmark-list.c',
+ 'nautilus-bookmark-list.h',
+ 'nautilus-canvas-view.c',
+ 'nautilus-canvas-view.h',
+ 'nautilus-canvas-view-container.c',
+ 'nautilus-canvas-view-container.h',
+ 'nautilus-container-max-width.c',
+ 'nautilus-container-max-width.h',
+ 'nautilus-dbus-manager.c',
+ 'nautilus-dbus-manager.h',
+ 'nautilus-desktop-item-properties.c',
+ 'nautilus-desktop-item-properties.h',
+ 'nautilus-error-reporting.c',
+ 'nautilus-error-reporting.h',
+ 'nautilus-preferences-window.c',
+ 'nautilus-preferences-window.h',
+ 'nautilus-files-view.c',
+ 'nautilus-files-view.h',
+ 'nautilus-files-view-dnd.c',
+ 'nautilus-files-view-dnd.h',
+ 'nautilus-floating-bar.c',
+ 'nautilus-floating-bar.h',
+ 'nautilus-freedesktop-dbus.c',
+ 'nautilus-freedesktop-dbus.h',
+ 'nautilus-image-properties-page.c',
+ 'nautilus-image-properties-page.h',
+ 'nautilus-list-model.c',
+ 'nautilus-list-model.h',
+ 'nautilus-list-view.c',
+ 'nautilus-list-view.h',
+ 'nautilus-list-view-private.h',
+ 'nautilus-list-view-dnd.c',
+ 'nautilus-list-view-dnd.h',
+ 'nautilus-location-entry.c',
+ 'nautilus-location-entry.h',
+ 'nautilus-mime-actions.c',
+ 'nautilus-mime-actions.h',
+ 'nautilus-notebook.c',
+ 'nautilus-notebook.h',
+ 'nautilus-other-locations-window-slot.c',
+ 'nautilus-other-locations-window-slot.h',
+ 'nautilus-pathbar.c',
+ 'nautilus-pathbar.h',
+ 'nautilus-places-view.c',
+ 'nautilus-places-view.h',
+ 'nautilus-previewer.c',
+ 'nautilus-previewer.h',
+ 'nautilus-progress-info-widget.c',
+ 'nautilus-progress-info-widget.h',
+ 'nautilus-progress-persistence-handler.c',
+ 'nautilus-progress-persistence-handler.h',
+ 'nautilus-properties-window.c',
+ 'nautilus-properties-window.h',
+ 'nautilus-query-editor.c',
+ 'nautilus-query-editor.h',
+ 'nautilus-search-popover.c',
+ 'nautilus-self-check-functions.c',
+ 'nautilus-self-check-functions.h',
+ 'nautilus-shell-search-provider.c',
+ 'nautilus-special-location-bar.c',
+ 'nautilus-toolbar.c',
+ 'nautilus-toolbar.h',
+ 'nautilus-toolbar-menu-sections.h',
+ 'nautilus-trash-bar.c',
+ 'nautilus-trash-bar.h',
+ 'nautilus-view.c',
+ 'nautilus-view.h',
+ 'nautilus-view-icon-controller.c',
+ 'nautilus-view-icon-controller.h',
+ 'nautilus-view-icon-item-ui.c',
+ 'nautilus-view-icon-item-ui.h',
+ 'nautilus-view-icon-ui.c',
+ 'nautilus-view-icon-ui.h',
+ 'nautilus-view-item-model.c',
+ 'nautilus-view-item-model.h',
+ 'nautilus-view-model.c',
+ 'nautilus-view-model.h',
+ 'nautilus-window-slot.c',
+ 'nautilus-window-slot.h',
+ 'nautilus-window-slot-dnd.c',
+ 'nautilus-window-slot-dnd.h',
+ 'nautilus-window.c',
+ 'nautilus-window.h',
+ 'nautilus-x-content-bar.c',
+ 'nautilus-x-content-bar.h',
+ 'nautilus-bookmark.c',
+ 'nautilus-bookmark.h',
+ 'nautilus-canvas-container.c',
+ 'nautilus-canvas-container.h',
+ 'nautilus-canvas-dnd.c',
+ 'nautilus-canvas-dnd.h',
+ 'nautilus-canvas-item.c',
+ 'nautilus-canvas-item.h',
+ 'nautilus-canvas-private.h',
+ 'nautilus-clipboard.c',
+ 'nautilus-clipboard.h',
+ 'nautilus-column-chooser.c',
+ 'nautilus-column-chooser.h',
+ 'nautilus-column-utilities.c',
+ 'nautilus-column-utilities.h',
+ 'nautilus-debug.c',
+ 'nautilus-debug.h',
+ 'nautilus-default-file-icon.c',
+ 'nautilus-default-file-icon.h',
+ 'nautilus-directory-async.c',
+ 'nautilus-directory-notify.h',
+ 'nautilus-directory-private.h',
+ 'nautilus-directory.c',
+ 'nautilus-directory.h',
+ 'nautilus-dnd.c',
+ 'nautilus-dnd.h',
+ 'nautilus-file-attributes.h',
+ 'nautilus-file-changes-queue.c',
+ 'nautilus-file-changes-queue.h',
+ 'nautilus-file-conflict-dialog.c',
+ 'nautilus-file-conflict-dialog.h',
+ 'nautilus-file-name-widget-controller.c',
+ 'nautilus-file-name-widget-controller.h',
+ 'nautilus-rename-file-popover-controller.c',
+ 'nautilus-rename-file-popover-controller.h',
+ 'nautilus-new-folder-dialog-controller.c',
+ 'nautilus-new-folder-dialog-controller.h',
+ 'nautilus-compress-dialog-controller.c',
+ 'nautilus-compress-dialog-controller.h',
+ 'nautilus-operations-ui-manager.c',
+ 'nautilus-operations-ui-manager.h',
+ 'nautilus-file-operations.c',
+ 'nautilus-file-operations.h',
+ 'nautilus-file-private.h',
+ 'nautilus-file-queue.c',
+ 'nautilus-file-queue.h',
+ 'nautilus-file-utilities.c',
+ 'nautilus-file-utilities.h',
+ 'nautilus-file.c',
+ 'nautilus-file.h',
+ 'nautilus-global-preferences.c',
+ 'nautilus-global-preferences.h',
+ 'nautilus-icon-info.c',
+ 'nautilus-icon-info.h',
+ 'nautilus-icon-names.h',
+ 'nautilus-keyfile-metadata.c',
+ 'nautilus-keyfile-metadata.h',
+ 'nautilus-lib-self-check-functions.c',
+ 'nautilus-lib-self-check-functions.h',
+ 'nautilus-link.c',
+ 'nautilus-link.h',
+ 'nautilus-metadata.h',
+ 'nautilus-metadata.c',
+ 'nautilus-mime-application-chooser.c',
+ 'nautilus-mime-application-chooser.h',
+ 'nautilus-module.c',
+ 'nautilus-module.h',
+ 'nautilus-monitor.c',
+ 'nautilus-monitor.h',
+ 'nautilus-profile.c',
+ 'nautilus-profile.h',
+ 'nautilus-progress-info.c',
+ 'nautilus-progress-info.h',
+ 'nautilus-progress-info-manager.c',
+ 'nautilus-progress-info-manager.h',
+ 'nautilus-program-choosing.c',
+ 'nautilus-program-choosing.h',
+ 'nautilus-recent.c',
+ 'nautilus-recent.h',
+ 'nautilus-search-directory.c',
+ 'nautilus-search-directory.h',
+ 'nautilus-search-directory-file.c',
+ 'nautilus-search-directory-file.h',
+ 'nautilus-search-provider.c',
+ 'nautilus-search-provider.h',
+ 'nautilus-search-engine.c',
+ 'nautilus-search-engine.h',
+ 'nautilus-search-engine-model.c',
+ 'nautilus-search-engine-model.h',
+ 'nautilus-search-engine-simple.c',
+ 'nautilus-search-engine-simple.h',
+ 'nautilus-search-hit.c',
+ 'nautilus-search-hit.h',
+ 'nautilus-selection-canvas-item.c',
+ 'nautilus-selection-canvas-item.h',
+ 'nautilus-signaller.h',
+ 'nautilus-signaller.c',
+ 'nautilus-query.c',
+ 'nautilus-thumbnails.c',
+ 'nautilus-thumbnails.h',
+ 'nautilus-trash-monitor.c',
+ 'nautilus-trash-monitor.h',
+ 'nautilus-tree-view-drag-dest.c',
+ 'nautilus-tree-view-drag-dest.h',
+ 'nautilus-ui-utilities.c',
+ 'nautilus-ui-utilities.h',
+ 'nautilus-video-mime-types.h',
+ 'nautilus-vfs-directory.c',
+ 'nautilus-vfs-directory.h',
+ 'nautilus-vfs-file.c',
+ 'nautilus-vfs-file.h',
+ 'nautilus-file-undo-operations.c',
+ 'nautilus-file-undo-operations.h',
+ 'nautilus-file-undo-manager.c',
+ 'nautilus-file-undo-manager.h'
+]
+
+if get_option ('enable-tracker')
+ libnautilus_sources += ['nautilus-batch-rename-dialog.c',
+ 'nautilus-batch-rename-dialog.h',
+ 'nautilus-batch-rename-utilities.c',
+ 'nautilus-batch-rename-utilities.h',
+ 'nautilus-search-engine-tracker.c',
+ 'nautilus-search-engine-tracker.h']
+endif
+
+nautilus_deps = [glib,
+ gtk,
+ autoar,
+ xml,
+ gsettings_desktop_schemas,
+ libgd_dep,
+ gail,
+ gnome_desktop,
+ eel_2,
+ nautilus_extension,
+ x11,
+ gmodule_no_export]
+
+if get_option ('enable-tracker')
+ nautilus_deps += tracker_sparql
+endif
+
+if get_option ('enable-selinux')
+ nautilus_deps += selinux
+endif
+
+libnautilus = static_library ('nautilus',
+ libnautilus_sources,
+ dependencies: nautilus_deps,
+ include_directories: nautilus_include_dirs)
+
+libnautilus_include_dirs = include_directories ('.')
+
+libnautilus_dep = declare_dependency (link_with: libnautilus,
+ include_directories: [nautilus_include_dirs,
+ libnautilus_include_dirs],
+ dependencies: nautilus_deps,
+ sources: built_sources)
+
+nautilus = executable ('nautilus',
+ 'nautilus-main.c',
+ dependencies: libnautilus_dep,
+ install: true)
+
+test ('nautilus', nautilus, args: ['--check', '--g-fatal-warnings'])
+
+nautilus_autorun_software = executable ('nautilus-autorun-software',
+ 'nautilus-autorun-software.c',
+ dependencies: libnautilus_dep,
+ install: true)
diff --git a/subprojects/libgd b/subprojects/libgd
new file mode 120000
index 000000000..82fb69128
--- /dev/null
+++ b/subprojects/libgd
@@ -0,0 +1 @@
+../libgd \ No newline at end of file
diff --git a/test/meson.build b/test/meson.build
new file mode 100644
index 000000000..0c7d830d5
--- /dev/null
+++ b/test/meson.build
@@ -0,0 +1,31 @@
+test_copy = executable ('test-copy',
+ ['test-copy.c',
+ 'test.c',
+ 'test.h'],
+ dependencies: libnautilus_dep)
+
+test_nautilus_search_engine = executable ('test-nautilus-search-engine',
+ 'test-nautilus-search-engine.c',
+ dependencies: libnautilus_dep)
+
+test_nautilus_directory_async = executable ('test-nautilus-directory-async',
+ 'test-nautilus-directory-async.c',
+ dependencies: libnautilus_dep)
+
+test_file_utilities_get_common_filename_prefix = executable ('test-file-utilities-get-common-filename-prefix',
+ 'test-file-utilities-get-common-filename-prefix.c',
+ dependencies: libnautilus_dep)
+
+test_eel_string_rtrim_punctuation = executable ('test-eel-string-rtrim-punctuation',
+ 'test-eel-string-rtrim-punctuation.c',
+ dependencies: libnautilus_dep)
+
+test_eel_string_get_common_prefix = executable ('test-eel-string-get-common-prefix',
+ 'test-eel-string-get-common-prefix.c',
+ dependencies: libnautilus_dep)
+
+test ('test-nautilus-search-engine', test_nautilus_search_engine)
+test ('test-nautilus-directory-async', test_nautilus_directory_async)
+test ('test-file-utilities-get-common-filename-prefix', test_file_utilities_get_common_filename_prefix)
+test ('test-eel-string-rtrim-punctuation', test_eel_string_rtrim_punctuation)
+test ('test-eel-string-get-common-prefix', test_eel_string_get_common_prefix)