mirror of
https://github.com/FeralInteractive/gamemode.git
synced 2025-06-27 01:41:45 +02:00
Split meson up to be more modular
This also explicitly constructs reusable library components to make it easier to extend the project over time. Notably we make less assumptions about the host system and use pkgconfig where appropriate to give us system details, such as the systemd system unit directory for packaging. This can be overriden with the meson option. Signed-off-by: Ikey Doherty <ikey@solus-project.com>
This commit is contained in:

committed by
Marc Di Luzio

parent
2bbaab129b
commit
1328e07f86
87
meson.build
87
meson.build
@ -1,54 +1,49 @@
|
||||
project('gamemode', 'c',
|
||||
default_options : ['c_std=c11'],
|
||||
version : '0.2',
|
||||
license : 'BSD' )
|
||||
project(
|
||||
'gamemode',
|
||||
'c',
|
||||
default_options : ['c_std=c11'],
|
||||
version: '0.2',
|
||||
license: 'BSD',
|
||||
)
|
||||
|
||||
cc = meson.get_compiler('c')
|
||||
|
||||
libsystemd = cc.find_library('systemd')
|
||||
libdl = cc.find_library('dl')
|
||||
path_prefix = get_option('prefix')
|
||||
path_bindir = join_paths(path_prefix, get_option('bindir'))
|
||||
path_datadir = join_paths(path_prefix, get_option('datadir'))
|
||||
path_includedir = join_paths(path_prefix, get_option('includedir'))
|
||||
path_libdir = join_paths(path_prefix, get_option('libdir'))
|
||||
|
||||
executable( 'gamemoded',
|
||||
'daemon/main.c',
|
||||
'daemon/gamemode.c',
|
||||
'daemon/logging.c',
|
||||
'daemon/daemonize.c',
|
||||
'daemon/dbus_messaging.c',
|
||||
'daemon/governors.c',
|
||||
dependencies: libsystemd,
|
||||
install: true )
|
||||
# Find systemd via pkgconfig
|
||||
dep_systemd = dependency('libsystemd')
|
||||
|
||||
# Main client library to message the daemon
|
||||
shared_library( 'gamemode',
|
||||
'lib/client_impl.c',
|
||||
dependencies: libsystemd,
|
||||
install : true )
|
||||
# On non glibc systems this might be a stub, i.e. for musl
|
||||
libdl = cc.find_library('dl', required: false)
|
||||
|
||||
# install the service file
|
||||
install_data( 'data/gamemoded.service', install_dir: '/etc/systemd/user' )
|
||||
# If the path isn't explicitly set, ask systemd for the systemd user unit directory
|
||||
path_systemd_unit_dir = get_option('with-systemd-user-unit-dir')
|
||||
if path_systemd_unit_dir == ''
|
||||
message('Asking pkg-config for systemd\'s directories')
|
||||
pkgconfig_systemd = dependency('systemd')
|
||||
path_systemd_unit_dir = pkgconfig_systemd.get_pkgconfig_variable('systemduserunitdir')
|
||||
endif
|
||||
|
||||
# Small target util to get and set cpu governors
|
||||
executable( 'cpugovctl',
|
||||
'daemon/cpugovctl.c',
|
||||
'daemon/logging.c',
|
||||
install : true )
|
||||
subdir('lib')
|
||||
subdir('daemon')
|
||||
subdir('example')
|
||||
subdir('data')
|
||||
|
||||
# Give cpugovctl the permissions it needs
|
||||
meson.add_install_script( 'data/cpugovctl_perms.sh',
|
||||
dependencies : 'cpugovctl' )
|
||||
|
||||
# Small library to automatically use gamemode
|
||||
shared_library( 'gamemodeauto',
|
||||
'lib/client_loader.c',
|
||||
dependencies : libdl,
|
||||
install : true )
|
||||
|
||||
# Install the gamemode_client header
|
||||
install_headers( 'lib/gamemode_client.h' )
|
||||
|
||||
# An example game
|
||||
libdir = include_directories('lib')
|
||||
executable( 'example',
|
||||
'example/main.c',
|
||||
dependencies : libdl,
|
||||
include_directories : libdir )
|
||||
report = [
|
||||
' Build configuration:',
|
||||
' ====================',
|
||||
'',
|
||||
' prefix: @0@'.format(path_prefix),
|
||||
' bindir: @0@'.format(path_bindir),
|
||||
' datadir: @0@'.format(path_datadir),
|
||||
' libdir: @0@'.format(path_libdir),
|
||||
' includedir: @0@'.format(path_includedir),
|
||||
' systemd user unit directory: @0@'.format(path_systemd_unit_dir),
|
||||
]
|
||||
|
||||
# Output some stuff to validate the build config
|
||||
message('\n\n\n' + '\n'.join(report) + '\n\n')
|
||||
|
Reference in New Issue
Block a user