yambar/meson.build
Daniel Eklöf 6753ee3dad meson: set project version
Export project version with -DF00BAR_VERSION.

This is by default set to the meson project version.

However, if git is found, and we manage to run 'git describe' and 'git
branch' in the source directory, version is set to the output of that
instead.
2019-05-07 20:23:51 +02:00

127 lines
4.1 KiB
Meson

project('f00bar', 'c',
version: '1.0.0',
license: 'MIT',
meson_version: '>=0.48.0',
default_options: ['c_std=c11', 'warning_level=1', 'werror=true'])
plugs_as_libs = get_option('core-plugins-as-shared-libraries')
version = '"@0@"'.format(meson.project_version())
sh = find_program('sh', native: true)
git = find_program('git', required: false, native: true)
if git.found()
commit_hash = run_command(
[sh.path(), '-c',
'@0@ --git-dir=$MESON_SOURCE_ROOT/.git describe --always --tags'.format(
git.path())])
branch = run_command(
[sh.path(), '-c',
'@0@ --git-dir=$MESON_SOURCE_ROOT/.git rev-parse --abbrev-ref HEAD'.format(
git.path())])
if commit_hash.returncode() == 0 and branch.returncode() == 0
version = '"@0@ (" __DATE__ ", branch \'@1@\')"'.format(
commit_hash.stdout().strip(), branch.stdout().strip())
endif
endif
# Common dependencies
cc = meson.get_compiler('c')
dl = cc.find_library('dl', required : false)
threads = dependency('threads')
fontconfig = dependency('fontconfig')
cairo = dependency('cairo')
cairo_ft = dependency('cairo-ft')
yaml = dependency('yaml-0.1')
# X11/XCB dependencies
xcb_aux = dependency('xcb-aux', required: get_option('backend-x11'))
xcb_cursor = dependency('xcb-cursor', required: get_option('backend-x11'))
xcb_event = dependency('xcb-event', required: get_option('backend-x11'))
xcb_ewmh = dependency('xcb-ewmh', required: get_option('backend-x11'))
xcb_randr = dependency('xcb-randr', required: get_option('backend-x11'))
xcb_render = dependency('xcb-render', required: get_option('backend-x11'))
cairo_xcb = dependency('cairo-xcb', required: get_option('backend-x11'))
xcb_errors = dependency('xcb-errors', required: false)
backend_x11 = xcb_aux.found() and xcb_cursor.found() and xcb_event.found() and \
xcb_ewmh.found() and xcb_randr.found() and xcb_render.found() and \
cairo_xcb.found()
# Wayland dependencies
wayland_client = dependency('wayland-client', required: get_option('backend-wayland'))
wayland_cursor = dependency('wayland-cursor', required: get_option('backend-wayland'))
wlroots = dependency('wlroots', required: get_option('backend-wayland'))
backend_wayland = wayland_client.found() and wayland_cursor.found() and wlroots.found()
add_project_arguments(
['-D_GNU_SOURCE',
'-DF00BAR_VERSION=@0@'.format(version)] +
(backend_x11 ? ['-DENABLE_X11'] : []) +
(backend_wayland ? ['-DENABLE_WAYLAND'] : []) +
(plugs_as_libs ? ['-DCORE_PLUGINS_AS_SHARED_LIBRARIES'] : []),
language: 'c',
)
if backend_x11
xcb_stuff_lib = static_library(
'xcb-stuff', 'xcb.c', 'xcb.h',
dependencies: [xcb_aux, xcb_cursor, xcb_event, xcb_ewmh, xcb_randr,
xcb_render, cairo_xcb, xcb_errors],
c_args: xcb_errors.found() ? '-DHAVE_XCB_ERRORS' : [],
pic: plugs_as_libs)
xcb_stuff = declare_dependency(link_with: xcb_stuff_lib)
install_headers('xcb.h', subdir: 'f00bar')
endif
subdir('doc')
subdir('bar')
subdir('decorations')
subdir('particles')
subdir('modules')
executable(
'f00bar',
'color.h',
'config-verify.c', 'config-verify.h',
'config.c', 'config.h',
'decoration.h',
'font.c', 'font.h',
'log.c', 'log.h',
'main.c',
'module.c', 'module.h',
'particle.c', 'particle.h',
'plugin.c', 'plugin.h',
'tag.c', 'tag.h',
'tllist.h',
'yml.c', 'yml.h',
dependencies: [bar, cairo, cairo_ft, fontconfig, yaml, threads, dl] +
decorations + particles + modules,
build_rpath: '$ORIGIN/modules:$ORIGIN/decorations:$ORIGIN/particles',
export_dynamic: true,
install: true,
install_rpath: '$ORIGIN/../' + get_option('libdir') + '/f00bar')
install_headers(
'color.h',
'config.h',
'config-verify.h',
'decoration.h',
'font.h',
'log.h',
'module.h',
'particle.h',
'tag.h',
'tllist.h',
'yml.h',
subdir: 'f00bar')
message('')
message('Build type: @0@'.format(get_option('buildtype')))
message('XCB backend: @0@'.format(backend_x11))
message('Wayland backend: @0@'.format(backend_wayland))
message('Core modules as plugins: @0@'.format(plugs_as_libs))
message('')