diff options
Diffstat (limited to 'meson.build')
-rw-r--r-- | meson.build | 230 |
1 files changed, 230 insertions, 0 deletions
diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..66a6048 --- /dev/null +++ b/meson.build @@ -0,0 +1,230 @@ +project('nautilus', 'c', + default_options: ['c_std=c11'], + + # Do not forget when releasing: + # * Update version in data/org.gnome.Nautilus.appdata.xml.in.in + version: '43.2', + + meson_version: '>= 0.59.0', + license: 'GPL-3.0-or-later' +) + +nautilus_extension_version = '4' + +############### +# Directories # +############### + +prefix = get_option('prefix') + +bindir = get_option('bindir') +datadir = get_option('datadir') +desktopdir = join_paths(datadir, 'applications') +includedir = get_option('includedir') +libdir = get_option('libdir') +localedir = get_option('localedir') +docdir = datadir / 'doc' +extensiondir = join_paths(libdir, 'nautilus', 'extensions-' + nautilus_extension_version) +servicedir = join_paths(datadir, 'dbus-1', 'services') + +################### +# End directories # +################### + +############# +# Compilers # +############# + +cc = meson.get_compiler('c') + +################# +# End compilers # +################# + +add_global_arguments( + cc.get_supported_arguments([ + '-DGLIB_DISABLE_DEPRECATION_WARNINGS', + ]), + language: 'c', +) + +add_project_arguments( + cc.get_supported_arguments([ + '-Wall', + '-Wduplicated-branches', + '-Wduplicated-cond', + '-Wlogical-op', + '-Werror=declaration-after-statement', + '-Werror=empty-body', + '-Werror=format=2', + '-Werror=implicit-function-declaration', + '-Werror=incompatible-pointer-types', + '-Werror=init-self', + '-Werror=missing-include-dirs', + '-Werror=missing-prototypes', + '-Werror=pointer-arith', + '-Werror=sequence-point', + '-Werror=shadow', + '-Werror=strict-prototypes', + '-Werror=undef', + '-Werror=uninitialized', + # Context: https://gitlab.com/freedesktop-sdk/freedesktop-sdk/commit/ce54a2527555e51e4ebf4cce9cbb6259cafa89a4 + # -O2 and -fexceptions unmask some cases of -Wmaybe-uninitialized, which + # become errors for some reason (I’m guessing because of the + # -Werror=uninitialized above, but no idea why that implies this). + # This being an error is nice and all, but not when its appearance is + # dependent on optimization level and other flags. + '-Wno-error=maybe-uninitialized', + ]), + '-D_GNU_SOURCE', + language: 'c' +) + +################## +# Module imports # +################## + +gnome = import('gnome') +i18n = import('i18n') +pkgconfig = import('pkgconfig') + +###################### +# End module imports # +###################### + +################ +# Dependencies # +################ +glib_ver = '>= 2.72.0' + +libm = cc.find_library('m') + +if get_option('extensions') + gexiv = dependency('gexiv2', version: '>= 0.14.0') + gdkpixbuf = dependency('gdk-pixbuf-2.0', version: '>= 2.30.0') + gst_tag_dep = dependency('gstreamer-tag-1.0') + gst_pbutils_dep = dependency('gstreamer-pbutils-1.0') +endif +gio = dependency('gio-2.0', version: glib_ver) +gio_unix = dependency('gio-unix-2.0', version: glib_ver) +glib = dependency('glib-2.0', version: glib_ver) +gmodule = dependency('gmodule-no-export-2.0', version: glib_ver) +gnome_autoar = dependency('gnome-autoar-0', version: '>= 0.4.0') +gnome_desktop = dependency('gnome-desktop-4', version: '>= 43') +gtk = dependency('gtk4', version: '>= 4.7.2') +libadwaita = dependency('libadwaita-1', version: '>= 1.2.beta') +libportal = dependency('libportal', version: '>= 0.5') +libportal_gtk4 = dependency('libportal-gtk4', version: '>= 0.5') +selinux = [] +if get_option('selinux') + selinux = dependency('libselinux', version: '>= 2.0') +endif +tracker_sparql = dependency('tracker-sparql-3.0') +xml = dependency('libxml-2.0', version: '>= 2.7.8') +cloudproviders = dependency('cloudproviders', version: '>= 0.3.1') +gi_docgen = find_program('gi-docgen', required: get_option('docs')) + +#################### +# End dependencies # +#################### + +################# +# Configuration # +################# +conf = configuration_data() + +profile = get_option('profile') +name_suffix = '' + +if get_option('profile') == 'Devel' + name_suffix = ' (Development Snapshot)' +endif + +application_id = 'org.gnome.Nautilus' + profile + +if profile == '' + # Example: 40.0 + version_string = meson.project_version() +else + # Examples: 40.alpha-787a835f + version_string = '@0@-@VCS_TAG@'.format(meson.project_version()) +endif + +conf.set_quoted('APPLICATION_ID', application_id) +conf.set_quoted('GETTEXT_PACKAGE', 'nautilus') +conf.set_quoted('LOCALEDIR', join_paths(prefix, localedir)) +conf.set_quoted('NAME_SUFFIX', name_suffix) +conf.set_quoted('NAUTILUS_DATADIR', join_paths(prefix, datadir, 'nautilus')) +conf.set_quoted('NAUTILUS_EXTENSIONDIR', join_paths(prefix, extensiondir)) +conf.set_quoted('PACKAGE_VERSION', meson.project_version()) +conf.set_quoted('PROFILE', profile) +conf.set_quoted('VERSION', version_string) + +conf.set('ENABLE_PACKAGEKIT', get_option('packagekit')) +conf.set('ENABLE_PROFILING', get_option('profiling')) +conf.set('HAVE_SELINUX', get_option('selinux')) + +############################################################# +# config.h dependency, add to target dependencies if needed # +############################################################# + +config_h = declare_dependency( + sources: vcs_tag( + command: ['git', 'rev-parse', '--short', 'HEAD'], + fallback: profile != '' ? 'devel' : '', + input: configure_file( + output: 'config.h.in', + configuration: conf + ), + output: 'config.h' + ) +) + +##################### +# End configuration # +##################### + +nautilus_include_dirs = include_directories( + '.', + 'libnautilus-extension' +) + +######### +# Build # +######### + +subdirs = [ + 'data', + 'eel', + 'libnautilus-extension', + 'po', + 'src', +] + +######################## +# Conditional building # +######################## + +if gi_docgen.found() + subdirs += 'docs' +endif +if get_option('tests') != 'none' + subdirs += 'test' +endif +if get_option('extensions') + subdirs += 'extensions' +endif + +foreach dir : subdirs + subdir(dir) +endforeach + +############# +# End build # +############# + +gnome.post_install( + gtk_update_icon_cache: true, + glib_compile_schemas: true, + update_desktop_database: true, +) |