gnome-control-center/shell/meson.build
Ting-Wei Lan 299647f970 build: Include generated sources in declared dependencies
Sometimes ninja decides to compile tests/interactive-panels/main.c,
which requires shell/resources.h, before shell/resources.h is generated.

The fix is to use 'sources' argument of declare_dependency to properly
declare the dependency on generated headers.

A fix for tests/datetime and panels/datetime is also included in the
commit to fix a similar problem.

Closes https://gitlab.gnome.org/GNOME/gnome-control-center/merge_requests/472
2019-08-25 09:42:22 +00:00

176 lines
3.8 KiB
Meson

subdir('appdata')
subdir('completions')
service_conf = configuration_data()
service_conf.set('bindir', control_center_bindir)
service = 'org.gnome.ControlCenter.service'
configure_file(
input : service + '.in',
output : service,
install : true,
install_dir : join_paths(control_center_datadir, 'dbus-1', 'services'),
configuration : service_conf
)
desktop = 'gnome-control-center.desktop'
desktop_in = configure_file(
input : desktop + '.in.in',
output : desktop + '.in',
configuration : desktop_conf
)
i18n.merge_file(
desktop,
type : 'desktop',
input : desktop_in,
output : desktop,
po_dir : po_dir,
install : true,
install_dir : control_center_desktopdir
)
cflags = ['-DGNOMELOCALEDIR="@0@"'.format(control_center_localedir)]
# Common sources between gnome-control-center and
# libtestshell.
common_sources = files(
'cc-application.c',
'cc-log.c',
'cc-object-storage.c',
'cc-panel-loader.c',
'cc-panel.c',
'cc-shell.c',
'cc-panel-list.c',
'cc-window.c',
)
###################
# Generated files #
###################
generated_sources = files()
# Debug
debug_conf = configuration_data()
debug_conf.set('BUGREPORT_URL', 'https://gitlab.gnome.org/GNOME/' + meson.project_name() + '/issues/new')
debug_conf.set10('ENABLE_TRACING', enable_tracing)
generated_sources += configure_file(
input : 'cc-debug.h.in',
output : 'cc-debug.h',
configuration : debug_conf
)
#Resources
resource_data = files(
'cc-panel-list.ui',
'cc-window.ui',
'help-overlay.ui',
)
generated_sources += gnome.compile_resources(
'resources',
meson.project_name() + '.gresource.xml',
dependencies : resource_data,
export : true
)
common_sources += generated_sources
############
# libshell #
############
libshell = static_library(
'shell',
sources : 'cc-shell-model.c',
include_directories : [top_inc, common_inc],
dependencies : common_deps,
c_args : cflags
)
libshell_dep = declare_dependency(
sources : generated_sources,
include_directories : top_inc,
link_with : libshell
)
########################
# gnome-control-center #
########################
shell_sources = common_sources + files('main.c')
shell_deps = common_deps + [
libdevice_dep,
liblanguage_dep,
libwidgets_dep,
x11_dep,
libshell_dep,
]
if enable_cheese
shell_deps += cheese_deps
endif
if host_is_linux_not_s390
shell_deps += wacom_deps
endif
executable(
meson.project_name(),
shell_sources,
include_directories : top_inc,
dependencies : shell_deps,
c_args : cflags,
link_with : panels_libs,
install : true
)
##################
# lipanel_loader #
##################
# Because it is confusing and somewhat problematic to directly add and compile
# cc-panel-loader.o by another directory (i.e. the shell search provider), we
# have to create a library and link it there, just like libshell.la.
libpanel_loader = static_library(
'panel_loader',
sources : 'cc-panel-loader.c',
include_directories : top_inc,
dependencies : common_deps,
c_args : cflags + ['-DCC_PANEL_LOADER_NO_GTYPES']
)
################
# libtestshell #
################
libtestshell = static_library(
'testshell',
common_sources,
include_directories : top_inc,
dependencies : shell_deps,
c_args : cflags,
link_with : panels_libs,
)
libtestshell_dep = declare_dependency(
sources : generated_sources,
include_directories : top_inc,
link_with : libtestshell
)
libtestshell_deps = common_deps + [ libwidgets_dep, libtestshell_dep ]
install_data (
'org.gnome.ControlCenter.gschema.xml',
install_dir : control_center_schemadir
)