xref: /openbmc/phosphor-logging/meson.build (revision f06056bc)
1project('phosphor-logging', 'cpp',
2    meson_version: '>= 0.57.0',
3    default_options: [
4      'buildtype=debugoptimized',
5      'cpp_std=c++20',
6      'warning_level=3',
7      'werror=true',
8    ],
9    version: '1.0.0',
10)
11
12python_prog = find_program('python3')
13
14# Get sdbusplus dependency.
15sdbusplus_dep = dependency('sdbusplus', required: false)
16if sdbusplus_dep.found()
17    sdbusplusplus_prog = find_program('sdbus++')
18    sdbuspp_gen_meson_prog = find_program('sdbus++-gen-meson')
19else
20    sdbusplus_proj = subproject('sdbusplus', required: true)
21    sdbusplus_dep = sdbusplus_proj.get_variable('sdbusplus_dep')
22    sdbusplusplus_prog = sdbusplus_proj.get_variable('sdbusplusplus_prog')
23    sdbuspp_gen_meson_prog = sdbusplus_proj.get_variable(
24        'sdbuspp_gen_meson_prog'
25    )
26endif
27
28# Get PDI and sdeventplus dependency.
29pdi_dep = dependency(
30    'phosphor-dbus-interfaces',
31    fallback: ['phosphor-dbus-interfaces', 'phosphor_dbus_interfaces_dep'],
32)
33sdeventplus_dep = dependency(
34    'sdeventplus',
35    fallback: ['sdeventplus', 'sdeventplus_dep' ],
36)
37
38# Find the installed YAML directory, either from a configure option or
39# by pulling it from the PDI dependency.
40yamldir = get_option('yamldir')
41if yamldir == ''
42    yamldir = pdi_dep.get_variable(pkgconfig: 'yamldir', internal: 'yamldir')
43endif
44
45# Create config.h with constants that use to come from autoconf.
46conf_data = configuration_data()
47configure_file(
48    input: 'config.h.meson',
49    output: 'config.h',
50    configuration: conf_data,
51)
52
53# Generate callouts-gen.hpp.
54callouts_gen = custom_target('callouts-gen.hpp'.underscorify(),
55    input: [
56        'callouts/callouts.py',
57        'callouts/callouts-gen.mako.hpp',
58        get_option('callout_yaml'),
59    ],
60    output: 'callouts-gen.hpp',
61    command: [ python_prog, '@INPUT0@', '-i', '@INPUT2@', '-o', '@OUTPUT0@' ],
62)
63
64subdir('phosphor-logging')
65
66# Build libphosphor-logging.
67libphosphor_logging = library(
68    'phosphor_logging',
69    files(
70        'elog.cpp',
71        'elog_meta.cpp',
72        'sdjournal.cpp',
73    ),
74    callouts_gen,
75    elog_errors_gen,
76    dependencies: [ sdbusplus_dep, pdi_dep, sdeventplus_dep ],
77    version: meson.project_version(),
78    install: true,
79)
80
81import('pkgconfig').generate(
82    libphosphor_logging,
83    name: meson.project_name(),
84    version: meson.project_version(),
85    requires: [
86        'libsystemd',
87        'phosphor-dbus-interfaces',
88        'sdbusplus',
89    ],
90    description: 'Phosphor logging utilities',
91)
92
93# Create dependency for use as subproject.
94phosphor_logging_dep = declare_dependency(
95    include_directories: include_directories('.'),
96    link_with: libphosphor_logging,
97    sources: [ callouts_gen, elog_errors_gen ],
98    dependencies: [ sdbusplus_dep, pdi_dep, sdeventplus_dep],
99)
100