project( 'phosphor-dbus-interfaces', 'cpp', meson_version: '>=1.1.1', default_options: [ 'buildtype=debugoptimized', 'cpp_std=c++23', 'warning_level=3', 'werror=true', 'generate_md=' + (meson.is_subproject() ? 'false' : 'true'), ], version: '1.0.0', ) sdbusplus_dep = dependency('sdbusplus') sdbusplusplus_prog = find_program('sdbus++', native: true) sdbuspp_gen_meson_prog = find_program('sdbus++-gen-meson', native: true) sdbusplusplus_depfiles = files() if sdbusplus_dep.type_name() == 'internal' sdbusplusplus_depfiles = subproject('sdbusplus').get_variable( 'sdbusplusplus_depfiles', ) endif # Parse options to determine appropriate subdirectories to support. yaml_selected_subdirs = [] if get_option('data_com_google') yaml_selected_subdirs += 'com/google' endif if get_option('data_com_ibm') yaml_selected_subdirs += 'com/ibm' endif if get_option('data_com_intel') yaml_selected_subdirs += 'com/intel' endif if get_option('data_com_meta') yaml_selected_subdirs += 'com/meta' endif if get_option('data_org_freedesktop') yaml_selected_subdirs += 'org/freedesktop' endif if get_option('data_org_open_power') yaml_selected_subdirs += 'org/open_power' endif if get_option('data_xyz_openbmc_project') yaml_selected_subdirs += 'xyz/openbmc_project' endif # Install the selected YAML files. inst_yaml_dir = get_option('datadir') / 'phosphor-dbus-yaml' foreach d : yaml_selected_subdirs install_subdir( 'yaml' / d, install_dir: inst_yaml_dir / d, strip_directory: true, ) endforeach # If libphosphor_dbus was not enabled, exit out from here. We installed # the YAML which is all we are asked to do. if not get_option('libphosphor_dbus') subdir_done() endif should_generate_cpp = true should_generate_markdown = get_option('generate_md') should_generate_registry = true # Source the generated meson files. subdir('gen') # Source the extra target to copy registry files into a separate tree so they # can be useful for dependees when we are built as a sub-project. subdir('registry') # Define and build libphosphor_dbus.so from the C++ files. libphosphor_dbus = library( 'phosphor_dbus', generated_sources, implicit_include_directories: false, include_directories: include_directories('gen'), dependencies: sdbusplus_dep, version: meson.project_version(), install: true, ) import('pkgconfig').generate( libphosphor_dbus, name: meson.project_name(), version: meson.project_version(), description: 'Generated sdbusplus bindings for phosphor-dbus-interfaces', variables: [ 'yamldir=' + '${pc_sysrootdir}${prefix}' / inst_yaml_dir, 'registry_dir=' + '${pc_sysrootdir}${prefix}' / inst_registry_dir, ], ) phosphor_dbus_interfaces_dep = declare_dependency( sources: generated_headers, include_directories: include_directories('gen'), link_with: libphosphor_dbus, dependencies: sdbusplus_dep, variables: [ 'yamldir=' + meson.project_source_root() / 'yaml', 'registry_dir=' + registry_copy_dir, ], ) meson.override_dependency( 'phosphor-dbus-interfaces', phosphor_dbus_interfaces_dep, )