1project(
2        'wf-utils',
3        'cpp',
4        version: '0.4.0',
5        license: 'MIT',
6        meson_version: '>=0.50.0',
7        default_options: [
8        'cpp_std=c++17',
9                'warning_level=2',
10                'werror=false',
11        ],
12)
13
14add_project_arguments(['-Wno-deprecated-declarations'], language: ['cpp'])
15
16sources = [
17'wayfire/action/action.cpp',
18'wayfire/condition/condition.cpp',
19'wayfire/condition/logic_condition.cpp',
20'wayfire/condition/test_condition.cpp',
21'wayfire/lexer/lexer.cpp',
22'wayfire/lexer/literal.cpp',
23'wayfire/lexer/symbol.cpp',
24'wayfire/parser/action_parser.cpp',
25'wayfire/parser/condition_parser.cpp',
26'wayfire/parser/lambda_rule_parser.cpp',
27'wayfire/parser/rule_parser.cpp',
28'wayfire/rule/lambda_rule.cpp',
29'wayfire/rule/rule.cpp',
30'wayfire/variant.cpp',
31]
32
33wfutils_inc = include_directories('.')
34
35lib_wfutils = library('wf-utils',
36    sources,
37    dependencies: [],
38    include_directories: wfutils_inc,
39    install: not meson.is_subproject(),
40    version: meson.project_version())
41
42if not meson.is_subproject()
43pkgconfig = import('pkgconfig')
44pkgconfig.generate(
45    libraries:    lib_wfutils,
46    version:      meson.project_version(),
47    filebase:     meson.project_name(),
48    name:         meson.project_name(),
49    description: 'Utilities library for Wayfire')
50endif
51
52install_headers([], subdir: 'wayfire/utils')
53
54wfutils = declare_dependency(link_with: lib_wfutils,
55    include_directories: wfutils_inc)
56
57# -------------------------------------------------------------------------------------------------
58# Install headers
59headers_action = [
60'wayfire/action/action.hpp',
61'wayfire/action/action_interface.hpp',
62]
63
64headers_condition = [
65'wayfire/condition/access_interface.hpp',
66'wayfire/condition/condition.hpp',
67'wayfire/condition/logic_condition.hpp',
68'wayfire/condition/test_condition.hpp',
69]
70
71headers_lexer = [
72'wayfire/lexer/lexer.hpp',
73'wayfire/lexer/literal.hpp',
74'wayfire/lexer/symbol.hpp',
75]
76
77headers_parser = [
78'wayfire/parser/action_parser.hpp',
79'wayfire/parser/condition_parser.hpp',
80'wayfire/parser/rule_parser.hpp',
81]
82
83headers_rule = [
84'wayfire/rule/lambda_rule.hpp',
85'wayfire/rule/rule.hpp',
86]
87
88headers_root = [
89'wayfire/utils.hpp',
90'wayfire/variant.hpp',
91]
92
93if not meson.is_subproject()
94install_headers(headers_action, subdir: 'wayfire/action')
95install_headers(headers_condition, subdir: 'wayfire/condition')
96install_headers(headers_lexer, subdir: 'wayfire/lexer')
97install_headers(headers_parser, subdir: 'wayfire/parser')
98install_headers(headers_rule, subdir: 'wayfire/rule')
99install_headers(headers_root, subdir: 'wayfire')
100endif
101
102# -------------------------------------------------------------------------------------------------
103# Unit tests
104#subdir('test')
105
106# -------------------------------------------------------------------------------------------------
107# Documentation
108# TODO: Figure out how to install the doc package with meson.
109
110doxygen = find_program('doxygen', required: false)
111
112if doxygen.found()
113  cdata = configuration_data()
114  cdata.set('TOP_SRCDIR', meson.source_root())
115  cdata.set('TOP_BUILDDIR', meson.build_root())
116  cdata.set('OUTPUT_DIR', join_paths(meson.build_root(),'docs'))
117  cdata.set('README_PATH', join_paths(meson.source_root(),'README.md'))
118  cdata.set('VERSION', meson.project_version())
119  cdata.set('PROJECT_NAME', meson.project_name())
120
121  doxyfile = configure_file(input: 'Doxyfile.in',
122                            output: 'Doxyfile',
123                            configuration: cdata,
124                            install: false)
125
126  doc_target = run_target('doc',command: [doxygen, doxyfile])
127endif
128