From: Niels De Graef Date: Mon, 25 Jul 2022 10:55:59 +0000 (+0200) Subject: Port build system to Meson X-Git-Tag: 23.51.283~68^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=95d3e3bbf96344e0987bbd2c44de0bb16ba8ea3c;p=thirdparty%2Fplymouth.git Port build system to Meson --- diff --git a/docs/meson.build b/docs/meson.build new file mode 100644 index 00000000..ab746e84 --- /dev/null +++ b/docs/meson.build @@ -0,0 +1,29 @@ +xsltproc = find_program('xsltproc') + +man_pages = { + 'plymouth1.xml': 'plymouth.1', + 'plymouth.xml': 'plymouth.8', + 'plymouthd.xml': 'plymouthd.8', + 'plymouth-set-default-theme.xml': 'plymouth-set-default-theme.1', +} + +foreach man_xml_input, man_output : man_pages + custom_target(man_output, + input: man_xml_input, + output: man_output, + command: [ + xsltproc, + '--nonet', + '--stringparam', 'man.output.quietly', '1', + '--stringparam', 'funcsynopsis.style', 'ansi', + '--stringparam', 'man.th.extra1.suppress', '1', + '--stringparam', 'man.authors.section.enabled', '0', + '--stringparam', 'man.copyright.section.enabled', '0', + '-o', '@OUTPUT@', + 'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl', + '@INPUT@', + ], + install: true, + install_dir: get_option('mandir') / 'man' + man_output.substring(-1), + ) +endforeach diff --git a/images/meson.build b/images/meson.build new file mode 100644 index 00000000..150833c1 --- /dev/null +++ b/images/meson.build @@ -0,0 +1,5 @@ +if use_fallback_logo + install_data('bizcom.png', + install_dir: get_option('datadir') / 'plymouth', + ) +endif diff --git a/meson.build b/meson.build new file mode 100644 index 00000000..5932750f --- /dev/null +++ b/meson.build @@ -0,0 +1,105 @@ +project('plymouth', 'c', + meson_version: '>= 0.61', + version: run_command( + 'date', '+%y.%V.' + run_command( + 'git', 'rev-list', + run_command('git', 'describe', '--abbrev=0', check: true).stdout().strip() + '..HEAD', + '--count', + check: true, + ).stdout().strip(), + '-d', '@' + run_command('git', 'log', '-1', '--pretty=format:%ct', check: true).stdout().strip(), + check: true, + ).stdout().strip(), +) + +# Modules +i18n = import('i18n') +pkgconfig = import('pkgconfig') + +# General variables +plymouth_soversion = '5.0.0' + +plymouth_theme_path = get_option('prefix') / get_option('datadir') / 'plymouth' / 'themes' +plymouth_plugin_path = get_option('prefix') / get_option('libdir') / 'plymouth/' +plymouth_policy_dir = get_option('prefix') / get_option('datadir') / 'plymouth/' +plymouth_conf_dir = get_option('prefix') / get_option('sysconfdir') / 'plymouth/' +plymouth_time_dir = get_option('prefix') / get_option('localstatedir') / 'lib' / 'plymouth' + +plymouth_runtime_dir = get_option('runstatedir') / 'plymouth' +plymouth_runtime_theme_path = plymouth_runtime_dir / 'themes' + +# Dependencies +cc = meson.get_compiler('c') +lm_dep = cc.find_library('m') +lrt_dep = cc.find_library('rt') +ldl_dep = cc.find_library('dl') + +libpng_dep = dependency('libpng', version: '>= 1.2.16') + +libudev_dep = dependency('libudev', required: get_option('udev')) +libpango_dep = dependency('pango', required: get_option('pango')) +libfreetype_dep = dependency('freetype2', required: get_option('freetype')) +gtk3_dep = dependency('gtk+-3.0', version: '>= 3.14.0', required: get_option('gtk')) +libdrm_dep = dependency('libdrm', required: get_option('drm')) + +if get_option('systemd-integration') + systemd_dep = dependency('systemd') + systemd_unit_dir = systemd_dep.get_variable('systemdsystemunitdir', + pkgconfig_define: [ 'rootprefix', get_option('prefix') ], + ) + systemd_ask_password_agent = find_program('systemd-tty-ask-password-agent') +endif + +if get_option('upstart-monitoring') + dbus_dep = dependency('dbus-1') + curses_dep = dependency('curses') +endif + +# Logo +plymouth_logo_file = get_option('logo') +use_fallback_logo = plymouth_logo_file == '' +if use_fallback_logo + plymouth_logo_file = get_option('prefix') / get_option('datadir') / 'plymouth' / 'bizcom.png' +endif + +# Global C flags +add_project_arguments([ + '-D_GNU_SOURCE', + ], + language: 'c' +) + +# config.h +conf = configuration_data() +conf.set_quoted('BOOT_TTY', get_option('boot-tty')) +conf.set_quoted('SHUTDOWN_TTY', get_option('shutdown-tty')) +conf.set_quoted('RELEASE_FILE', get_option('release-file')) +conf.set('HAVE_UDEV', libudev_dep.found()) +conf.set('PLY_ENABLE_TRACING', get_option('tracing')) +conf.set_quoted('PLYMOUTH_RUNTIME_DIR', plymouth_runtime_dir) +conf.set_quoted('PLYMOUTH_THEME_PATH', plymouth_theme_path) +conf.set_quoted('PLYMOUTH_RUNTIME_THEME_PATH', plymouth_runtime_theme_path) +conf.set_quoted('PLYMOUTH_PLUGIN_PATH', plymouth_plugin_path) +conf.set_quoted('PLYMOUTH_POLICY_DIR', plymouth_policy_dir) +conf.set_quoted('PLYMOUTH_CONF_DIR', plymouth_conf_dir) +conf.set_quoted('PLYMOUTH_TIME_DIRECTORY', plymouth_time_dir) +conf.set('HAVE_NCURSESW_TERM_H', get_option('upstart-monitoring')? cc.has_header('ncursesw/term.h') : false) +conf.set('HAVE_NCURSES_TERM_H', get_option('upstart-monitoring')? cc.has_header('ncurses/term.h') : false) +config_file = configure_file( + output: 'config.h', + configuration: conf, +) +config_h_inc = include_directories('.') + +# Subdirectories +subdir('images') +subdir('po') +subdir('src') +subdir('themes') +subdir('scripts') +if get_option('systemd-integration') + subdir('systemd-units') +endif +if get_option('docs') + subdir('docs') +endif diff --git a/meson_options.txt b/meson_options.txt new file mode 100644 index 00000000..4f601bb0 --- /dev/null +++ b/meson_options.txt @@ -0,0 +1,85 @@ +option('logo', + type: 'string', + value: '', + description: 'Full path for logo used by boot splash plugin (if empty, uses a fallback logo)', +) +option('background-color', + type: 'string', + value: '0x5d5950', + description: 'Background color used by boot splash plugins', +) +option('background-start-color-stop', + type: 'string', + value: '0x807c71', + description: 'First color stop in background gradients used by boot splash plugins', +) +option('background-end-color-stop', + type: 'string', + value: '0x3a362f', + description: 'Last color end in background gradients used by boot splash plugins', +) +option('release-file', + type: 'string', + value: '/etc/system-release', + description: 'Release file to use to detect distribution', +) +option('runstatedir', + type: 'string', + value: '/run', + description: 'runstatedir', +) +option('boot-tty', + type: 'string', + value: '/dev/tty1', + description: 'TTY to use in boot mode', +) +option('shutdown-tty', + type: 'string', + value: '/dev/tty63', + description: 'TTY to use in shutdown mode', +) +option('tracing', + type: 'boolean', + value: true, + description: 'Build with verbose debug tracing spew', +) +option('upstart-monitoring', + type: 'boolean', + value: false, + description: 'Listen for messages on the Upstart D-Bus interface', +) +option('systemd-integration', + type: 'boolean', + value: true, + description: 'Coordinate boot up with systemd', +) +option('udev', + type: 'feature', + value: 'auto', + description: 'Build with udev support', +) +option('pango', + type: 'feature', + value: 'enabled', + description: 'Build with pango support (if enabled, used for encryption prompts)', +) +option('freetype', + type: 'feature', + value: 'enabled', + description: 'Build with freetype support (if enabled, used for encryption prompts)', +) +option('gtk', + type: 'feature', + value: 'enabled', + description: 'Build with GTK support (if disabled, there is no X11 support)', +) +option('drm', + type: 'boolean', + value: true, + description: 'Build with drm kms support', +) +option('docs', + type: 'boolean', + value: true, + description: 'Build documentation', +) diff --git a/po/meson.build b/po/meson.build new file mode 100644 index 00000000..fdbc881f --- /dev/null +++ b/po/meson.build @@ -0,0 +1,5 @@ +po_dir = meson.current_source_dir() + +i18n.gettext(meson.project_name(), + preset: 'glib', +) diff --git a/scripts/meson.build b/scripts/meson.build new file mode 100644 index 00000000..0fd635b3 --- /dev/null +++ b/scripts/meson.build @@ -0,0 +1,53 @@ +configure_file( + input: 'plymouth-generate-initrd.in', + output: '@BASENAME@', + configuration: { + 'PLYMOUTH_LIBEXECDIR': get_option('prefix') / get_option('libexecdir'), + 'PLYMOUTH_DATADIR': get_option('prefix') / get_option('datadir'), + }, + install_dir: get_option('libexecdir') / 'plymouth', + install_mode: 'rwxr-xr-x', +) + +configure_file( + input: 'plymouth-populate-initrd.in', + output: '@BASENAME@', + configuration: { + 'PLYMOUTH_LIBEXECDIR': get_option('prefix') / get_option('libexecdir'), + 'PLYMOUTH_DATADIR': get_option('prefix') / get_option('datadir'), + 'PLYMOUTH_LOGO_FILE': plymouth_logo_file, + 'PLYMOUTH_CONF_DIR': plymouth_conf_dir, + 'PLYMOUTH_POLICY_DIR': plymouth_policy_dir, + 'PLYMOUTH_CLIENT_DIR': get_option('prefix') / get_option('bindir'), + 'PLYMOUTH_DAEMON_DIR': get_option('prefix') / get_option('sbindir'), + 'SYSTEMD_UNIT_DIR': get_option('systemd-integration')? systemd_unit_dir : '', + 'RELEASE_FILE': get_option('release-file'), + }, + install_dir: get_option('libexecdir') / 'plymouth', + install_mode: 'rwxr-xr-x', +) + +install_data( + 'plymouth-update-initrd', + install_dir: get_option('libexecdir') / 'plymouth', + install_mode: 'rwxr-xr-x', +) + +configure_file( + input: 'plymouth-set-default-theme.in', + output: '@BASENAME@', + configuration: { + 'PLYMOUTH_LIBDIR': get_option('prefix') / get_option('libdir'), + 'PLYMOUTH_LIBEXECDIR': get_option('prefix') / get_option('libexecdir'), + 'PLYMOUTH_DATADIR': get_option('prefix') / get_option('datadir'), + 'PLYMOUTH_CONF_DIR': plymouth_conf_dir, + 'PLYMOUTH_POLICY_DIR': plymouth_policy_dir, + }, + install_dir: get_option('sbindir'), + install_mode: 'rwxr-xr-x', +) + +install_data( + 'bootlog', + install_dir: get_option('sysconfdir') / 'logrotate.d', +) diff --git a/src/client/meson.build b/src/client/meson.build new file mode 100644 index 00000000..0506c8b4 --- /dev/null +++ b/src/client/meson.build @@ -0,0 +1,61 @@ +plymouth_client_src = files( + 'ply-boot-client.c', + 'plymouth.c', +) + +plymouth_client = executable('plymouth', + plymouth_client_src, + dependencies: libply_dep, + include_directories: [ + config_h_inc, + include_directories('..'), + ], + install: true, +) + + +libply_boot_client_src = files( + 'ply-boot-client.c', +) + +libply_boot_client = library('ply-boot-client', + libply_boot_client_src, + dependencies: [ libply_dep ], + include_directories: [ + config_h_inc, + include_directories('..'), + ], + version: plymouth_soversion, + install: true, +) + +libply_boot_client_dep = declare_dependency( + link_with: libply_boot_client, + include_directories: [ + include_directories('.'), + include_directories('..'), + ], +) + +libply_boot_client_headers = files( + 'ply-boot-client.h', + '../ply-boot-protocol.h', +) + +install_headers(libply_boot_client_headers, + install_dir: get_option('includedir') / 'plymouth-1' / 'ply-boot-client', +) + +pkgconfig.generate(libply_boot_client, + filebase: 'ply-boot-client', + name: 'Plymouth', + description: 'Client Library for Boot Splash', + libraries: [ + libply, + ldl_dep, + ], + subdirs: [ + 'plymouth-1/ply', + 'plymouth-1/ply-boot-client', + ], +) diff --git a/src/libply-splash-core/meson.build b/src/libply-splash-core/meson.build new file mode 100644 index 00000000..8914e8ec --- /dev/null +++ b/src/libply-splash-core/meson.build @@ -0,0 +1,85 @@ +libply_splash_core_sources = files( + 'ply-boot-splash.c', + 'ply-device-manager.c', + 'ply-keyboard.c', + 'ply-pixel-buffer.c', + 'ply-pixel-display.c', + 'ply-renderer.c', + 'ply-terminal.c', + 'ply-text-display.c', + 'ply-text-progress-bar.c', + 'ply-text-step-bar.c', +) + +libply_splash_core_public_deps = [ + libply_dep, +] + +libply_splash_core_private_deps = [ + lm_dep, +] + +if libudev_dep.found() + libply_splash_core_private_deps += libudev_dep +endif + +libply_splash_core_cflags = [ + '-DPLYMOUTH_BACKGROUND_COLOR=@0@'.format(get_option('background-color')), + '-DPLYMOUTH_BACKGROUND_START_COLOR=@0@'.format(get_option('background-start-color-stop')), + '-DPLYMOUTH_BACKGROUND_END_COLOR=@0@'.format(get_option('background-end-color-stop')), + '-DPLYMOUTH_PLUGIN_PATH="@0@"'.format(plymouth_plugin_path), +] + +libply_splash_core = library('ply-splash-core', + libply_splash_core_sources, + dependencies: libply_splash_core_public_deps + libply_splash_core_private_deps, + c_args: libply_splash_core_cflags, + include_directories: config_h_inc, + version: plymouth_soversion, + install: true, +) + +libply_splash_core_dep = declare_dependency( + link_with: libply_splash_core, + dependencies: libply_dep, + include_directories: include_directories('.'), +) + +libply_splash_core_headers = files( + 'ply-boot-splash-plugin.h', + 'ply-boot-splash.h', + 'ply-device-manager.h', + 'ply-keyboard.h', + 'ply-pixel-buffer.h', + 'ply-pixel-display.h', + 'ply-renderer-plugin.h', + 'ply-renderer.h', + 'ply-terminal.h', + 'ply-text-display.h', + 'ply-text-progress-bar.h', + 'ply-text-step-bar.h', +) + +install_headers(libply_splash_core_headers, + install_dir: get_option('includedir') / 'plymouth-1' / 'ply-splash-core', +) + +pkgconfig.generate(libply_splash_core, + filebase: 'ply-splash-core', + name: 'Plymouth', + description: 'Utility Library for Boot Splash Plugins', + libraries: [ + libply, + ldl_dep, + ], + subdirs: [ + 'plymouth-1/ply', + 'plymouth-1/ply-splash-core', + ], + variables: { + 'pluginsdir': plymouth_plugin_path, + 'themesdir': plymouth_theme_path, + 'confdir': plymouth_conf_dir, + 'policydir': plymouth_policy_dir, + }, +) diff --git a/src/libply-splash-graphics/meson.build b/src/libply-splash-graphics/meson.build new file mode 100644 index 00000000..32fad963 --- /dev/null +++ b/src/libply-splash-graphics/meson.build @@ -0,0 +1,72 @@ +libply_splash_graphics_sources = files( + 'ply-animation.c', + 'ply-capslock-icon.c', + 'ply-entry.c', + 'ply-image.c', + 'ply-keymap-icon.c', + 'ply-label.c', + 'ply-progress-animation.c', + 'ply-progress-bar.c', + 'ply-throbber.c', +) + +libply_splash_graphics_deps = [ + libply_splash_core_dep, + lm_dep, + libpng_dep, +] + +libply_splash_graphics_cflags = [ + '-DPLYMOUTH_BACKGROUND_COLOR=@0@'.format(get_option('background-color')), + '-DPLYMOUTH_BACKGROUND_START_COLOR=@0@'.format(get_option('background-start-color-stop')), + '-DPLYMOUTH_BACKGROUND_END_COLOR=@0@'.format(get_option('background-end-color-stop')), + '-DPLYMOUTH_PLUGIN_PATH="@0@"'.format(plymouth_plugin_path), +] + +libply_splash_graphics = library('ply-splash-graphics', + libply_splash_graphics_sources, + dependencies: libply_splash_graphics_deps, + c_args: libply_splash_graphics_cflags, + include_directories: config_h_inc, + version: plymouth_soversion, + install: true, +) + +libply_splash_graphics_dep = declare_dependency( + link_with: libply_splash_graphics, + include_directories: include_directories('.'), +) + +libply_splash_graphics_headers = files( + 'ply-animation.h', + 'ply-capslock-icon.h', + 'ply-entry.h', + 'ply-image.h', + 'ply-keymap-icon.h', + 'ply-keymap-metadata.h', + 'ply-label-plugin.h', + 'ply-label.h', + 'ply-progress-animation.h', + 'ply-progress-bar.h', + 'ply-throbber.h', +) + +install_headers(libply_splash_graphics_headers, + install_dir: get_option('includedir') / 'plymouth-1' / 'ply-splash-graphics', +) + +pkgconfig.generate(libply_splash_graphics, + filebase: 'ply-splash-graphics', + name: 'Plymouth', + description: 'Graphics Utility Library for Boot Splash Plugins', + requires: [ + 'ply-splash-core', + ], + subdirs: [ + 'plymouth-1/ply-splash-graphics', + ], + variables: { + 'pluginsdir': plymouth_plugin_path, + 'themesdir': plymouth_theme_path, + }, +) diff --git a/src/libply/meson.build b/src/libply/meson.build new file mode 100644 index 00000000..d8bf35a0 --- /dev/null +++ b/src/libply/meson.build @@ -0,0 +1,52 @@ +libply_sources = files( + 'ply-array.c', + 'ply-bitarray.c', + 'ply-buffer.c', + 'ply-command-parser.c', + 'ply-event-loop.c', + 'ply-hashtable.c', + 'ply-key-file.c', + 'ply-list.c', + 'ply-logger.c', + 'ply-progress.c', + 'ply-rectangle.c', + 'ply-region.c', + 'ply-terminal-session.c', + 'ply-trigger.c', + 'ply-utils.c', +) + +libply = library('ply', + libply_sources, + include_directories: config_h_inc, + version: plymouth_soversion, + install: true, +) + +libply_dep = declare_dependency( + link_with: libply, + include_directories: include_directories('.'), +) + +libply_headers = files( + 'ply-array.h', + 'ply-bitarray.h', + 'ply-buffer.h', + 'ply-command-parser.h', + 'ply-event-loop.h', + 'ply-hashtable.h', + 'ply-i18n.h', + 'ply-key-file.h', + 'ply-list.h', + 'ply-logger.h', + 'ply-progress.h', + 'ply-rectangle.h', + 'ply-region.h', + 'ply-terminal-session.h', + 'ply-trigger.h', + 'ply-utils.h', +) + +install_headers(libply_headers, + install_dir: get_option('includedir') / 'plymouth-1' / 'ply', +) diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 00000000..3b22a3d4 --- /dev/null +++ b/src/meson.build @@ -0,0 +1,64 @@ +# The library subdirectories first +subdir('libply') +subdir('libply-splash-core') +subdir('libply-splash-graphics') + +# plymouthd +plymouthd_run_dir = plymouth_runtime_dir +plymouthd_spool_dir = '/var/spool/plymouth' +plymouthd_time_dir = plymouth_time_dir + +plymouthd_sources = files( + 'main.c', + 'plugins/splash/details/plugin.c', + 'ply-boot-protocol.h', + 'ply-boot-server.c', + 'ply-boot-server.h', +) + +plymouthd_deps = [ + libply_dep, + libply_splash_core_dep, +] + +plymouthd_cflags = [ + '-DPLYMOUTH_LOCALE_DIRECTORY="@0@"'.format(get_option('localedir')), + '-DPLYMOUTH_DRM_ESCROW_DIRECTORY="@0@"'.format(get_option('libexecdir') / 'plymouth'), + '-DPLYMOUTH_LOG_DIRECTORY="@0@"'.format('/var/log'), + '-DPLYMOUTH_SPOOL_DIRECTORY="@0@"'.format(plymouthd_spool_dir), +] + +plymouthd = executable('plymouthd', + plymouthd_sources, + dependencies: plymouthd_deps, + c_args: plymouthd_cflags, + include_directories: config_h_inc, + install: true, + install_dir: get_option('sbindir'), +) + +plymouthd_fd_escrow = executable('plymouthd-fd-escrow', + 'plymouthd-fd-escrow.c', + install: true, + install_dir: get_option('libexecdir') / 'plymouth', +) + +install_data('plymouthd.defaults', + install_dir: plymouth_policy_dir, +) + +install_data('plymouthd.conf', + install_dir: plymouth_conf_dir, +) + +install_emptydir(plymouthd_run_dir) +install_emptydir(plymouthd_spool_dir) +install_emptydir(plymouthd_time_dir) + + +# These subdirectories last +subdir('plugins') +subdir('client') +if get_option('upstart-monitoring') + subdir('upstart-bridge') +endif diff --git a/src/plugins/controls/label-freetype/meson.build b/src/plugins/controls/label-freetype/meson.build new file mode 100644 index 00000000..a9497392 --- /dev/null +++ b/src/plugins/controls/label-freetype/meson.build @@ -0,0 +1,13 @@ +label_plugin = shared_module('label-freetype', + 'plugin.c', + dependencies: [ + libfreetype_dep, + libply_dep, + libply_splash_core_dep, + libply_splash_graphics_dep, + ], + include_directories: config_h_inc, + name_prefix: '', + install: true, + install_dir: plymouth_plugin_path, +) diff --git a/src/plugins/controls/label-pango/meson.build b/src/plugins/controls/label-pango/meson.build new file mode 100644 index 00000000..526a855d --- /dev/null +++ b/src/plugins/controls/label-pango/meson.build @@ -0,0 +1,13 @@ +label_plugin = shared_module('label-pango', + 'plugin.c', + dependencies: [ + libpango_dep, + libply_dep, + libply_splash_core_dep, + libply_splash_graphics_dep, + ], + include_directories: config_h_inc, + name_prefix: '', + install: true, + install_dir: plymouth_plugin_path, +) diff --git a/src/plugins/controls/meson.build b/src/plugins/controls/meson.build new file mode 100644 index 00000000..521971bb --- /dev/null +++ b/src/plugins/controls/meson.build @@ -0,0 +1,7 @@ +if libpango_dep.found() + subdir('label-pango') +endif + +if libfreetype_dep.found() + subdir('label-freetype') +endif diff --git a/src/plugins/meson.build b/src/plugins/meson.build new file mode 100644 index 00000000..7ea472c2 --- /dev/null +++ b/src/plugins/meson.build @@ -0,0 +1,3 @@ +subdir('controls') +subdir('splash') +subdir('renderers') diff --git a/src/plugins/renderers/drm/meson.build b/src/plugins/renderers/drm/meson.build new file mode 100644 index 00000000..67649d1b --- /dev/null +++ b/src/plugins/renderers/drm/meson.build @@ -0,0 +1,12 @@ +drm_plugin = shared_module('drm', + 'plugin.c', + dependencies: [ + libply_dep, + libply_splash_core_dep, + libdrm_dep, + ], + include_directories: config_h_inc, + name_prefix: '', + install: true, + install_dir: plymouth_plugin_path / 'renderers', +) diff --git a/src/plugins/renderers/frame-buffer/meson.build b/src/plugins/renderers/frame-buffer/meson.build new file mode 100644 index 00000000..a87ce64f --- /dev/null +++ b/src/plugins/renderers/frame-buffer/meson.build @@ -0,0 +1,11 @@ +frame_buffer_plugin = shared_module('frame-buffer', + 'plugin.c', + dependencies: [ + libply_dep, + libply_splash_core_dep, + ], + include_directories: config_h_inc, + name_prefix: '', + install: true, + install_dir: plymouth_plugin_path / 'renderers', +) diff --git a/src/plugins/renderers/meson.build b/src/plugins/renderers/meson.build new file mode 100644 index 00000000..f5757215 --- /dev/null +++ b/src/plugins/renderers/meson.build @@ -0,0 +1,9 @@ +subdir('frame-buffer') + +if libdrm_dep.found() + subdir('drm') +endif + +if gtk3_dep.found() + subdir('x11') +endif diff --git a/src/plugins/renderers/x11/meson.build b/src/plugins/renderers/x11/meson.build new file mode 100644 index 00000000..fd33058c --- /dev/null +++ b/src/plugins/renderers/x11/meson.build @@ -0,0 +1,12 @@ +x11_plugin = shared_module('x11', + 'plugin.c', + dependencies: [ + libply_dep, + libply_splash_core_dep, + gtk3_dep, + ], + include_directories: config_h_inc, + name_prefix: '', + install: true, + install_dir: plymouth_plugin_path / 'renderers', +) diff --git a/src/plugins/splash/details/meson.build b/src/plugins/splash/details/meson.build new file mode 100644 index 00000000..ad7c39fb --- /dev/null +++ b/src/plugins/splash/details/meson.build @@ -0,0 +1,11 @@ +details_plugin = shared_module('details', + 'plugin.c', + dependencies: [ + libply_splash_core_dep, + libply_splash_graphics_dep, + ], + include_directories: config_h_inc, + name_prefix: '', + install: true, + install_dir: plymouth_plugin_path, +) diff --git a/src/plugins/splash/fade-throbber/meson.build b/src/plugins/splash/fade-throbber/meson.build new file mode 100644 index 00000000..45203cfa --- /dev/null +++ b/src/plugins/splash/fade-throbber/meson.build @@ -0,0 +1,17 @@ +fade_throbber_plugin = shared_module('fade-throbber', + 'plugin.c', + dependencies: [ + libply_splash_core_dep, + libply_splash_graphics_dep, + ], + c_args: [ + '-DPLYMOUTH_LOGO_FILE="@0@"'.format(plymouth_logo_file), + '-DPLYMOUTH_BACKGROUND_COLOR=@0@'.format(get_option('background-color')), + '-DPLYMOUTH_BACKGROUND_START_COLOR=@0@'.format(get_option('background-start-color-stop')), + '-DPLYMOUTH_BACKGROUND_END_COLOR=@0@'.format(get_option('background-end-color-stop')), + ], + include_directories: config_h_inc, + name_prefix: '', + install: true, + install_dir: plymouth_plugin_path, +) diff --git a/src/plugins/splash/meson.build b/src/plugins/splash/meson.build new file mode 100644 index 00000000..65c7e215 --- /dev/null +++ b/src/plugins/splash/meson.build @@ -0,0 +1,7 @@ +subdir('fade-throbber') +subdir('text') +subdir('details') +subdir('space-flares') +subdir('two-step') +subdir('script') +subdir('tribar') diff --git a/src/plugins/splash/script/generate_script_string_header.py b/src/plugins/splash/script/generate_script_string_header.py new file mode 100644 index 00000000..66e21ee2 --- /dev/null +++ b/src/plugins/splash/script/generate_script_string_header.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python3 + +import os +import pathlib +import sys + +if len(sys.argv) != 2: + print('Expected 1 argument, but got {}'.format(len(sys.argv) - 1)) + sys.exit(1) + +input_path = pathlib.Path(sys.argv[1]) + +variable_name = input_path.stem.replace('-', '_') +print('static const char *{} ='.format(variable_name)) + +for line in input_path.read_text().splitlines(): + # escape backlashes + line = line.replace('\\', '\\\\') + # escape internal quotes + line = line.replace('"', '\\"') + # print with quotes (so it becomes a C literal string) + print(' "' + line + '\\n"') + +print(';') diff --git a/src/plugins/splash/script/meson.build b/src/plugins/splash/script/meson.build new file mode 100644 index 00000000..c4e84fc8 --- /dev/null +++ b/src/plugins/splash/script/meson.build @@ -0,0 +1,56 @@ +script_inputs = [ + 'image', + 'math', + 'plymouth', + 'sprite', + 'string', +] + +generate_script_string_header_py = find_program('generate_script_string_header.py') + +script_headers = [] +foreach s : script_inputs + s_input_file = 'script-lib-@0@.script'.format(s) + + s_header = custom_target( + input: s_input_file, + output: s_input_file + '.h', + command: [ + generate_script_string_header_py, + '@INPUT@', + ], + capture: true, + ) + + script_headers += s_header +endforeach + +script_plugin_src = files( + 'plugin.c', + 'script-debug.c', + 'script-execute.c', + 'script-lib-image.c', + 'script-lib-math.c', + 'script-lib-plymouth.c', + 'script-lib-sprite.c', + 'script-lib-string.c', + 'script-object.c', + 'script-parse.c', + 'script-scan.c', + 'script.c', +) + +script_plugin = shared_module('script', + [ 'plugin.c', script_headers ], + dependencies: [ + libply_splash_core_dep, + libply_splash_graphics_dep, + ], + c_args: [ + '-DPLYMOUTH_LOGO_FILE="@0@"'.format(plymouth_logo_file), + ], + include_directories: config_h_inc, + name_prefix: '', + install: true, + install_dir: plymouth_plugin_path, +) diff --git a/src/plugins/splash/space-flares/meson.build b/src/plugins/splash/space-flares/meson.build new file mode 100644 index 00000000..7db129e2 --- /dev/null +++ b/src/plugins/splash/space-flares/meson.build @@ -0,0 +1,14 @@ +space_flares_plugin = shared_module('space-flares', + 'plugin.c', + dependencies: [ + libply_splash_core_dep, + libply_splash_graphics_dep, + ], + c_args: [ + '-DPLYMOUTH_LOGO_FILE="@0@"'.format(plymouth_logo_file), + ], + include_directories: config_h_inc, + name_prefix: '', + install: true, + install_dir: plymouth_plugin_path, +) diff --git a/src/plugins/splash/text/meson.build b/src/plugins/splash/text/meson.build new file mode 100644 index 00000000..8c651d17 --- /dev/null +++ b/src/plugins/splash/text/meson.build @@ -0,0 +1,11 @@ +text_plugin = shared_module('text', + 'plugin.c', + dependencies: [ + libply_splash_core_dep, + libply_splash_graphics_dep, + ], + include_directories: config_h_inc, + name_prefix: '', + install: true, + install_dir: plymouth_plugin_path, +) diff --git a/src/plugins/splash/tribar/meson.build b/src/plugins/splash/tribar/meson.build new file mode 100644 index 00000000..dcfa137b --- /dev/null +++ b/src/plugins/splash/tribar/meson.build @@ -0,0 +1,10 @@ +tribar_plugin = shared_module('tribar', + 'plugin.c', + dependencies: [ + libply_splash_core_dep, + ], + include_directories: config_h_inc, + name_prefix: '', + install: true, + install_dir: plymouth_plugin_path, +) diff --git a/src/plugins/splash/two-step/meson.build b/src/plugins/splash/two-step/meson.build new file mode 100644 index 00000000..5b0b6fcc --- /dev/null +++ b/src/plugins/splash/two-step/meson.build @@ -0,0 +1,15 @@ +two_step_plugin = shared_module('two-step', + 'plugin.c', + dependencies: [ + libply_splash_core_dep, + libply_splash_graphics_dep, + ], + c_args: [ + '-DPLYMOUTH_BACKGROUND_START_COLOR=@0@'.format(get_option('background-start-color-stop')), + '-DPLYMOUTH_BACKGROUND_END_COLOR=@0@'.format(get_option('background-end-color-stop')), + ], + include_directories: config_h_inc, + name_prefix: '', + install: true, + install_dir: plymouth_plugin_path, +) diff --git a/src/upstart-bridge/meson.build b/src/upstart-bridge/meson.build new file mode 100644 index 00000000..639da734 --- /dev/null +++ b/src/upstart-bridge/meson.build @@ -0,0 +1,18 @@ +plymouth_upstart_bridge_src = files( + 'ply-upstart-monitor.c', + 'plymouth-upstart-bridge.c', +) + +plymouth_upstart_bridge_deps = [ + libply_dep, + libply_boot_client_dep, + dbus_dep, + curses_dep, +] + +plymouth_upstart_bridge = executable('plymouth-upstart-bridge', + plymouth_upstart_bridge_src, + dependencies: plymouth_upstart_bridge_deps, + include_directories: config_h_inc, + install: true, +) diff --git a/systemd-units/meson.build b/systemd-units/meson.build new file mode 100644 index 00000000..06379312 --- /dev/null +++ b/systemd-units/meson.build @@ -0,0 +1,70 @@ +systemd_unit_templates = [ + 'plymouth-switch-root.service.in', + 'plymouth-switch-root-initramfs.service.in', + 'plymouth-start.service.in', + 'plymouth-read-write.service.in', + 'plymouth-quit.service.in', + 'plymouth-quit-wait.service.in', + 'plymouth-reboot.service.in', + 'plymouth-kexec.service.in', + 'plymouth-poweroff.service.in', + 'plymouth-halt.service.in', + 'systemd-ask-password-plymouth.path.in', + 'systemd-ask-password-plymouth.service.in', +] + +foreach unit_templ : systemd_unit_templates + configure_file( + input: unit_templ, + output: '@BASENAME@', + configuration: { + 'PLYMOUTH_CLIENT_DIR': get_option('prefix') / get_option('bindir'), + 'PLYMOUTH_DAEMON_DIR': get_option('prefix') / get_option('sbindir'), + 'plymouthruntimedir': plymouth_runtime_dir, + 'SYSTEMD_ASK_PASSWORD_AGENT': systemd_ask_password_agent.full_path(), + }, + install: true, + install_dir: systemd_unit_dir, + ) +endforeach + +systemd_target_links = [ + { + 'target': 'initrd-switch-root.target.wants', + 'services': [ 'plymouth-start', 'plymouth-switch-root' ], + }, + { + 'target': 'sysinit.target.wants', + 'services': [ 'plymouth-start', 'plymouth-read-write' ], + }, + { + 'target': 'multi-user.target.wants', + 'services': [ 'plymouth-quit', 'plymouth-quit-wait' ], + }, + { + 'target': 'reboot.target.wants', + 'services': [ 'plymouth-reboot', 'plymouth-switch-root-initramfs' ], + }, + { + 'target': 'kexec.target.wants', + 'services': [ 'plymouth-kexec', 'plymouth-switch-root-initramfs' ], + }, + { + 'target': 'poweroff.target.wants', + 'services': [ 'plymouth-poweroff', 'plymouth-switch-root-initramfs' ], + }, + { + 'target': 'halt.target.wants', + 'services': [ 'plymouth-halt', 'plymouth-switch-root-initramfs' ], + }, +] + +foreach entry : systemd_target_links + foreach service : entry['services'] + install_symlink( + service + '.service', + install_dir: systemd_unit_dir / entry['target'], + pointing_to: '..' / service + '.service', + ) + endforeach +endforeach diff --git a/themes/bgrt/meson.build b/themes/bgrt/meson.build new file mode 100644 index 00000000..2209af0b --- /dev/null +++ b/themes/bgrt/meson.build @@ -0,0 +1,14 @@ +bgrt_plymouth = i18n.merge_file( + input: configure_file( + input: 'bgrt.plymouth.desktop', + output: 'bgrt.plymouth.desktop', + configuration: { + 'PLYMOUTH_THEME_PATH': plymouth_theme_path, + }, + ), + output: 'bgrt.plymouth', + type: 'desktop', + po_dir: po_dir, + install: true, + install_dir: plymouth_theme_path / 'bgrt', +) diff --git a/themes/details/meson.build b/themes/details/meson.build new file mode 100644 index 00000000..1afb62de --- /dev/null +++ b/themes/details/meson.build @@ -0,0 +1,4 @@ +install_data( + 'details.plymouth', + install_dir: plymouth_theme_path / 'details', +) diff --git a/themes/fade-in/meson.build b/themes/fade-in/meson.build new file mode 100644 index 00000000..265fd020 --- /dev/null +++ b/themes/fade-in/meson.build @@ -0,0 +1,17 @@ +fade_in_plymouth = configure_file( + input: 'fade-in.plymouth.in', + output: '@BASENAME@', + configuration: { + 'PLYMOUTH_THEME_PATH': plymouth_theme_path, + }, + install: true, + install_dir: plymouth_theme_path / 'fade-in', +) + +install_data( + 'star.png', + 'bullet.png', + 'entry.png', + 'lock.png', + install_dir: plymouth_theme_path / 'fade-in', +) diff --git a/themes/glow/meson.build b/themes/glow/meson.build new file mode 100644 index 00000000..6edf364d --- /dev/null +++ b/themes/glow/meson.build @@ -0,0 +1,70 @@ +glow_plymouth = configure_file( + input: 'glow.plymouth.in', + output: '@BASENAME@', + configuration: { + 'PLYMOUTH_THEME_PATH': plymouth_theme_path, + }, + install: true, + install_dir: plymouth_theme_path / 'glow', +) + +install_data( + 'box.png', + 'bullet.png', + 'entry.png', + 'lock.png', + 'progress-00.png', + 'progress-01.png', + 'progress-02.png', + 'progress-03.png', + 'progress-04.png', + 'progress-05.png', + 'progress-06.png', + 'progress-07.png', + 'progress-08.png', + 'progress-09.png', + 'progress-10.png', + 'progress-11.png', + 'progress-12.png', + 'progress-13.png', + 'progress-14.png', + 'progress-15.png', + 'progress-16.png', + 'progress-17.png', + 'progress-18.png', + 'progress-19.png', + 'progress-20.png', + 'progress-21.png', + 'progress-22.png', + 'progress-23.png', + 'progress-24.png', + 'progress-25.png', + 'progress-26.png', + 'progress-27.png', + 'progress-28.png', + 'progress-29.png', + 'progress-30.png', + 'progress-31.png', + 'progress-32.png', + 'throbber-00.png', + 'throbber-01.png', + 'throbber-02.png', + 'throbber-03.png', + 'throbber-04.png', + 'throbber-05.png', + 'throbber-06.png', + 'throbber-07.png', + 'throbber-08.png', + 'throbber-09.png', + 'throbber-10.png', + 'throbber-11.png', + 'throbber-12.png', + 'throbber-13.png', + 'throbber-14.png', + 'throbber-15.png', + 'throbber-16.png', + 'throbber-17.png', + 'throbber-18.png', + 'throbber-19.png', + install_dir: plymouth_theme_path / 'glow', +) diff --git a/themes/meson.build b/themes/meson.build new file mode 100644 index 00000000..dc2ca6e2 --- /dev/null +++ b/themes/meson.build @@ -0,0 +1,10 @@ +subdir('spinfinity') +subdir('fade-in') +subdir('text') +subdir('details') +subdir('solar') +subdir('glow') +subdir('script') +subdir('spinner') +subdir('tribar') +subdir('bgrt') diff --git a/themes/script/meson.build b/themes/script/meson.build new file mode 100644 index 00000000..ca609fd1 --- /dev/null +++ b/themes/script/meson.build @@ -0,0 +1,20 @@ +script_plymouth = configure_file( + input: 'script.plymouth.in', + output: '@BASENAME@', + configuration: { + 'PLYMOUTH_THEME_PATH': plymouth_theme_path, + }, + install: true, + install_dir: plymouth_theme_path / 'script', +) + +install_data( + 'script.script', + 'box.png', + 'bullet.png', + 'entry.png', + 'lock.png', + 'progress_box.png', + 'progress_bar.png', + install_dir: plymouth_theme_path / 'script', +) diff --git a/themes/solar/meson.build b/themes/solar/meson.build new file mode 100644 index 00000000..e66d5a49 --- /dev/null +++ b/themes/solar/meson.build @@ -0,0 +1,19 @@ +solar_plymouth = configure_file( + input: 'solar.plymouth.in', + output: '@BASENAME@', + configuration: { + 'PLYMOUTH_THEME_PATH': plymouth_theme_path, + }, + install: true, + install_dir: plymouth_theme_path / 'solar', +) + +install_data( + 'box.png', + 'bullet.png', + 'entry.png', + 'lock.png', + 'progress_bar.png', + 'star.png', + install_dir: plymouth_theme_path / 'solar', +) diff --git a/themes/spinfinity/meson.build b/themes/spinfinity/meson.build new file mode 100644 index 00000000..f48e8e55 --- /dev/null +++ b/themes/spinfinity/meson.build @@ -0,0 +1,60 @@ +spinfinity_plymouth = configure_file( + input: 'spinfinity.plymouth.in', + output: '@BASENAME@', + configuration: { + 'PLYMOUTH_THEME_PATH': plymouth_theme_path, + }, + install: true, + install_dir: plymouth_theme_path / 'spinfinity', +) + +install_data( + 'box.png', + 'bullet.png', + 'entry.png', + 'lock.png', + 'capslock.png', + 'keyboard.png', + 'keymap-render.png', + 'animation-0001.png', + 'throbber-00.png', + 'throbber-01.png', + 'throbber-02.png', + 'throbber-03.png', + 'throbber-04.png', + 'throbber-05.png', + 'throbber-06.png', + 'throbber-07.png', + 'throbber-08.png', + 'throbber-09.png', + 'throbber-10.png', + 'throbber-11.png', + 'throbber-12.png', + 'throbber-13.png', + 'throbber-14.png', + 'throbber-15.png', + 'throbber-16.png', + 'throbber-17.png', + 'throbber-18.png', + 'throbber-19.png', + 'throbber-20.png', + 'throbber-21.png', + 'throbber-22.png', + 'throbber-23.png', + 'throbber-24.png', + 'throbber-25.png', + 'throbber-26.png', + 'throbber-27.png', + 'throbber-28.png', + 'throbber-29.png', + 'throbber-30.png', + 'throbber-31.png', + 'throbber-32.png', + 'throbber-33.png', + install_dir: plymouth_theme_path / 'spinfinity', +) + +install_symlink('header-image.png', + install_dir: plymouth_theme_path / 'spinfinity', + pointing_to: plymouth_logo_file, +) diff --git a/themes/spinner/meson.build b/themes/spinner/meson.build new file mode 100644 index 00000000..8c3064a3 --- /dev/null +++ b/themes/spinner/meson.build @@ -0,0 +1,90 @@ +spinner_plymouth = i18n.merge_file( + input: configure_file( + input: 'spinner.plymouth.desktop', + output: 'spinner.plymouth.desktop', + configuration: { + 'PLYMOUTH_THEME_PATH': plymouth_theme_path, + }, + ), + output: 'spinner.plymouth', + type: 'desktop', + po_dir: po_dir, + install: true, + install_dir: plymouth_theme_path / 'spinner', +) + +install_data( + 'bullet.png', + 'entry.png', + 'lock.png', + 'capslock.png', + 'keyboard.png', + 'keymap-render.png', + 'animation-0001.png', + 'animation-0002.png', + 'animation-0003.png', + 'animation-0004.png', + 'animation-0005.png', + 'animation-0006.png', + 'animation-0007.png', + 'animation-0008.png', + 'animation-0009.png', + 'animation-0010.png', + 'animation-0011.png', + 'animation-0012.png', + 'animation-0013.png', + 'animation-0014.png', + 'animation-0015.png', + 'animation-0016.png', + 'animation-0017.png', + 'animation-0018.png', + 'animation-0019.png', + 'animation-0020.png', + 'animation-0021.png', + 'animation-0022.png', + 'animation-0023.png', + 'animation-0024.png', + 'animation-0025.png', + 'animation-0026.png', + 'animation-0027.png', + 'animation-0028.png', + 'animation-0029.png', + 'animation-0030.png', + 'animation-0031.png', + 'animation-0032.png', + 'animation-0033.png', + 'animation-0034.png', + 'animation-0035.png', + 'animation-0036.png', + 'throbber-0001.png', + 'throbber-0002.png', + 'throbber-0003.png', + 'throbber-0004.png', + 'throbber-0005.png', + 'throbber-0006.png', + 'throbber-0007.png', + 'throbber-0008.png', + 'throbber-0009.png', + 'throbber-0010.png', + 'throbber-0011.png', + 'throbber-0012.png', + 'throbber-0013.png', + 'throbber-0014.png', + 'throbber-0015.png', + 'throbber-0016.png', + 'throbber-0017.png', + 'throbber-0018.png', + 'throbber-0019.png', + 'throbber-0020.png', + 'throbber-0021.png', + 'throbber-0022.png', + 'throbber-0023.png', + 'throbber-0024.png', + 'throbber-0025.png', + 'throbber-0026.png', + 'throbber-0027.png', + 'throbber-0028.png', + 'throbber-0029.png', + 'throbber-0030.png', + install_dir: plymouth_theme_path / 'spinner', +) diff --git a/themes/text/meson.build b/themes/text/meson.build new file mode 100644 index 00000000..5e4ef11e --- /dev/null +++ b/themes/text/meson.build @@ -0,0 +1,4 @@ +install_data( + 'text.plymouth', + install_dir: plymouth_theme_path / 'text', +) diff --git a/themes/tribar/meson.build b/themes/tribar/meson.build new file mode 100644 index 00000000..300caf99 --- /dev/null +++ b/themes/tribar/meson.build @@ -0,0 +1,4 @@ +install_data( + 'tribar.plymouth', + install_dir: plymouth_theme_path / 'tribar', +)