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