mirror of
https://gitlab.gnome.org/GNOME/nautilus
synced 2024-11-05 16:04:31 +00:00
252 lines
6.5 KiB
Meson
252 lines
6.5 KiB
Meson
project('nautilus', 'c',
|
||
default_options: ['c_std=c11'],
|
||
version: '3.32.0',
|
||
meson_version: '>= 0.47.0',
|
||
license: 'GPL3+'
|
||
)
|
||
|
||
###############
|
||
# 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')
|
||
extensiondir = join_paths(libdir, 'nautilus', 'extensions-3.0')
|
||
servicedir = join_paths(datadir, 'dbus-1', 'services')
|
||
|
||
###################
|
||
# End directories #
|
||
###################
|
||
|
||
#############
|
||
# Compilers #
|
||
#############
|
||
|
||
cc = meson.get_compiler('c')
|
||
|
||
#################
|
||
# End compilers #
|
||
#################
|
||
|
||
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'
|
||
)
|
||
|
||
######################
|
||
# Host system checks #
|
||
######################
|
||
|
||
host_system = host_machine.system()
|
||
host_cpu = host_machine.cpu()
|
||
unsupported_cpus = [
|
||
'alpha',
|
||
'ia64',
|
||
'm68k',
|
||
'parisc',
|
||
'parisc64',
|
||
'sh4',
|
||
'sparc',
|
||
'sparc64',
|
||
]
|
||
system_supports_seccomp = host_system == 'linux'
|
||
cpu_supports_seccomp = not unsupported_cpus.contains(host_cpu)
|
||
seccomp_required = system_supports_seccomp and cpu_supports_seccomp
|
||
|
||
##########################
|
||
# End host system checks #
|
||
##########################
|
||
|
||
##################
|
||
# Module imports #
|
||
##################
|
||
|
||
gnome = import('gnome')
|
||
i18n = import('i18n')
|
||
pkgconfig = import('pkgconfig')
|
||
|
||
######################
|
||
# End module imports #
|
||
######################
|
||
|
||
################
|
||
# Dependencies #
|
||
################
|
||
glib_ver = '>= 2.58.1'
|
||
|
||
libgd = subproject(
|
||
'libgd',
|
||
default_options: [
|
||
'static=true',
|
||
'with-gtk-hacks=true',
|
||
'with-main-view=true',
|
||
'with-tagged-entry=true'
|
||
]
|
||
)
|
||
libgd_dep = libgd.get_variable('libgd_dep')
|
||
|
||
libm = cc.find_library('m')
|
||
|
||
if get_option('extensions')
|
||
gexiv = dependency('gexiv2', version: '>= 0.10.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.2.1')
|
||
gsettings_desktop_schemas = dependency('gsettings-desktop-schemas')
|
||
gtk = dependency('gtk+-3.0', version: '>= 3.22.27')
|
||
if seccomp_required
|
||
message('seccomp required on this platform, make sure bubblewrap is available at runtime as well.')
|
||
seccomp = dependency('libseccomp')
|
||
else
|
||
warning('The host does not support seccomp, thumbnailer sandboxing will be disabled. Such setups are not recommended, use at your own risk!')
|
||
seccomp = dependency('', required: false)
|
||
endif
|
||
selinux = []
|
||
if get_option('selinux')
|
||
selinux = dependency('libselinux', version: '>= 2.0')
|
||
endif
|
||
tracker_sparql = dependency('tracker-sparql-2.0')
|
||
x11 = dependency('x11')
|
||
xml = dependency('libxml-2.0', version: '>= 2.7.8')
|
||
|
||
####################
|
||
# 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
|
||
|
||
conf.set_quoted('APPLICATION_ID', application_id)
|
||
conf.set_quoted('GETTEXT_PACKAGE', 'nautilus')
|
||
conf.set_quoted('INSTALL_PREFIX', prefix)
|
||
conf.set_quoted('LOCALEDIR', join_paths(prefix, localedir))
|
||
conf.set_quoted('NAME_SUFFIX', name_suffix)
|
||
conf.set_quoted('NAUTILUS_DATADIR', join_paths(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', '@0@-@VCS_TAG@'.format(meson.project_version()))
|
||
|
||
###################################################
|
||
# gnome-desktop macros for thumbnailer sandboxing #
|
||
###################################################
|
||
|
||
conf.set('ENABLE_SECCOMP', seccomp.found())
|
||
conf.set('HAVE_BWRAP', seccomp.found())
|
||
|
||
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' : 'stable',
|
||
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 get_option('docs')
|
||
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 #
|
||
#############
|
||
|
||
#########################################################
|
||
# Compile GSettings schemas when installing from source #
|
||
#########################################################
|
||
meson.add_install_script('build-aux/meson/postinstall.py')
|