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