xref: /openbmc/google-misc/subprojects/metrics-ipmi-blobs/meson.build (revision 24c61c7ee8583830fd0916b7b2c7bf0561569e0f)
11285115cSWilliam A. Kennington III# Copyright 2021 Google LLC
21285115cSWilliam A. Kennington III#
31285115cSWilliam A. Kennington III# Licensed under the Apache License, Version 2.0 (the "License");
41285115cSWilliam A. Kennington III# you may not use this file except in compliance with the License.
51285115cSWilliam A. Kennington III# You may obtain a copy of the License at
61285115cSWilliam A. Kennington III#
71285115cSWilliam A. Kennington III#      http://www.apache.org/licenses/LICENSE-2.0
81285115cSWilliam A. Kennington III#
91285115cSWilliam A. Kennington III# Unless required by applicable law or agreed to in writing, software
101285115cSWilliam A. Kennington III# distributed under the License is distributed on an "AS IS" BASIS,
111285115cSWilliam A. Kennington III# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
121285115cSWilliam A. Kennington III# See the License for the specific language governing permissions and
131285115cSWilliam A. Kennington III# limitations under the License.
141285115cSWilliam A. Kennington III
151285115cSWilliam A. Kennington IIIproject(
161285115cSWilliam A. Kennington III    'metrics-ipmi-blobs',
177f49370dSWilliam A. Kennington III    ['cpp', 'c'],
181285115cSWilliam A. Kennington III    version: '0.1',
191285115cSWilliam A. Kennington III    default_options: [
201285115cSWilliam A. Kennington III        'warning_level=3',
211285115cSWilliam A. Kennington III        'werror=true',
221dfe24eaSPatrick Williams        'cpp_std=c++23',
237f49370dSWilliam A. Kennington III        'c_std=c18',
241285115cSWilliam A. Kennington III        'tests=' + (meson.is_subproject() ? 'disabled' : 'auto'),
251285115cSWilliam A. Kennington III    ],
261285115cSWilliam A. Kennington III)
271285115cSWilliam A. Kennington III
287f49370dSWilliam A. Kennington IIInanopb = find_program('nanopb_generator.py', native: true, required: false)
297f49370dSWilliam A. Kennington IIIif not nanopb.found()
307f49370dSWilliam A. Kennington III    nanopb_opts = import('cmake').subproject_options()
317f49370dSWilliam A. Kennington III    nanopb_opts.add_cmake_defines({'BUILD_SHARED_LIBS': 'ON'})
327f49370dSWilliam A. Kennington III    nanopb_proj = import('cmake').subproject('nanopb', options: nanopb_opts)
33*24c61c7eSPatrick Williams    nanopb = find_program(
34*24c61c7eSPatrick Williams        meson.global_source_root() + '/subprojects/nanopb/generator/nanopb_generator.py',
35*24c61c7eSPatrick Williams        native: true,
36*24c61c7eSPatrick Williams    )
377f49370dSWilliam A. Kennington III    nanopb_dep = nanopb_proj.dependency('protobuf_nanopb')
387f49370dSWilliam A. Kennington IIIelse
397f49370dSWilliam A. Kennington III    nanopb_dep = meson.get_compiler('cpp').find_library('protobuf-nanopb')
407f49370dSWilliam A. Kennington IIIendif
411285115cSWilliam A. Kennington III
427f49370dSWilliam A. Kennington IIInanopb_kwargs = {
43*24c61c7eSPatrick Williams    'output': ['@BASENAME@.pb.n.h', '@BASENAME@.pb.n.c'],
447f49370dSWilliam A. Kennington III    'command': [
457f49370dSWilliam A. Kennington III        nanopb,
467f49370dSWilliam A. Kennington III        '-q',
47*24c61c7eSPatrick Williams        '-s',
48*24c61c7eSPatrick Williams        'packed_struct:0',
497f49370dSWilliam A. Kennington III        '-H.n.h',
507f49370dSWilliam A. Kennington III        '-S.n.c',
51*24c61c7eSPatrick Williams        '-I' + import('fs').relative_to(
52*24c61c7eSPatrick Williams            meson.current_source_dir(),
53*24c61c7eSPatrick Williams            meson.global_build_root(),
54*24c61c7eSPatrick Williams        ),
55*24c61c7eSPatrick Williams        '-D' + import('fs').relative_to(
56*24c61c7eSPatrick Williams            meson.current_build_dir(),
57*24c61c7eSPatrick Williams            meson.global_build_root(),
58*24c61c7eSPatrick Williams        ),
597f49370dSWilliam A. Kennington III        '@INPUT@',
607f49370dSWilliam A. Kennington III    ],
617f49370dSWilliam A. Kennington III}
627f49370dSWilliam A. Kennington III
637f49370dSWilliam A. Kennington IIItgt = custom_target(
647f49370dSWilliam A. Kennington III    'metricblob.pb.n.hc',
657f49370dSWilliam A. Kennington III    input: 'metricblob.proto',
66*24c61c7eSPatrick Williams    kwargs: nanopb_kwargs,
67*24c61c7eSPatrick Williams)
687f49370dSWilliam A. Kennington IIImetrics_nanopb_hdr = tgt[0]
697f49370dSWilliam A. Kennington IIImetrics_nanopb_src = tgt[1]
707f49370dSWilliam A. Kennington III
717f49370dSWilliam A. Kennington IIImetrics_nanopb_pre = declare_dependency(
727f49370dSWilliam A. Kennington III    include_directories: include_directories('.'),
737f49370dSWilliam A. Kennington III    sources: metrics_nanopb_hdr,
74*24c61c7eSPatrick Williams    dependencies: [nanopb_dep],
75*24c61c7eSPatrick Williams)
767f49370dSWilliam A. Kennington III
777f49370dSWilliam A. Kennington IIImetrics_nanopb_lib = static_library(
787f49370dSWilliam A. Kennington III    'metrics_nanopb',
797f49370dSWilliam A. Kennington III    metrics_nanopb_src,
807f49370dSWilliam A. Kennington III    implicit_include_directories: false,
81*24c61c7eSPatrick Williams    dependencies: metrics_nanopb_pre,
82*24c61c7eSPatrick Williams)
837f49370dSWilliam A. Kennington III
847f49370dSWilliam A. Kennington IIImetrics_nanopb_dep = declare_dependency(
857f49370dSWilliam A. Kennington III    dependencies: metrics_nanopb_pre,
86*24c61c7eSPatrick Williams    link_with: metrics_nanopb_lib,
87*24c61c7eSPatrick Williams)
887f49370dSWilliam A. Kennington III
897f49370dSWilliam A. Kennington IIIpre = declare_dependency(
907f49370dSWilliam A. Kennington III    include_directories: include_directories('.'),
917f49370dSWilliam A. Kennington III    dependencies: [
927f49370dSWilliam A. Kennington III        metrics_nanopb_dep,
931285115cSWilliam A. Kennington III        dependency('phosphor-logging'),
941285115cSWilliam A. Kennington III        dependency('phosphor-ipmi-blobs'),
95b63d6314SMichael Shen        dependency('sdbusplus'),
96*24c61c7eSPatrick Williams    ],
97*24c61c7eSPatrick Williams)
98b056df69SWilliam A. Kennington III
99b056df69SWilliam A. Kennington IIIlib = static_library(
100b056df69SWilliam A. Kennington III    'metricsblob',
101b056df69SWilliam A. Kennington III    'util.cpp',
102b056df69SWilliam A. Kennington III    'handler.cpp',
103b056df69SWilliam A. Kennington III    'metric.cpp',
1041285115cSWilliam A. Kennington III    implicit_include_directories: false,
1057f49370dSWilliam A. Kennington III    dependencies: pre,
106*24c61c7eSPatrick Williams)
107*24c61c7eSPatrick Williams
108*24c61c7eSPatrick Williamsdep = declare_dependency(dependencies: pre, link_with: lib)
1091285115cSWilliam A. Kennington III
1101285115cSWilliam A. Kennington IIIshared_module(
1111285115cSWilliam A. Kennington III    'metricsblob',
1121285115cSWilliam A. Kennington III    'main.cpp',
1131285115cSWilliam A. Kennington III    dependencies: dep,
1141285115cSWilliam A. Kennington III    implicit_include_directories: false,
1151285115cSWilliam A. Kennington III    install: true,
116*24c61c7eSPatrick Williams    install_dir: get_option('libdir') / 'blob-ipmid',
117*24c61c7eSPatrick Williams)
1181285115cSWilliam A. Kennington III
119a2d0c9e8SPatrick Williamsif get_option('tests').allowed()
1201285115cSWilliam A. Kennington III    subdir('test')
1211285115cSWilliam A. Kennington IIIendif
122