17f154004SPatrick Williamsproject( 27f154004SPatrick Williams 'phosphor-dbus-interfaces', 37f154004SPatrick Williams 'cpp', 445b095d5SPatrick Williams meson_version: '>=1.1.1', 50894943fSPatrick Williams default_options: [ 60894943fSPatrick Williams 'buildtype=debugoptimized', 745b095d5SPatrick Williams 'cpp_std=c++23', 80894943fSPatrick Williams 'warning_level=3', 90894943fSPatrick Williams 'werror=true', 1071892004SWilliam A. Kennington III 'generate_md=' + (meson.is_subproject() ? 'false' : 'true'), 110894943fSPatrick Williams ], 120894943fSPatrick Williams version: '1.0.0', 130894943fSPatrick Williams) 140894943fSPatrick Williams 1569292c29SPatrick Williamssdbusplus_dep = dependency('sdbusplus') 168548f037SWilliam A. Kennington IIIsdbusplusplus_prog = find_program('sdbus++', native: true) 178548f037SWilliam A. Kennington IIIsdbuspp_gen_meson_prog = find_program('sdbus++-gen-meson', native: true) 1811335246SPatrick Williamssdbusplusplus_depfiles = files() 1911335246SPatrick Williamsif sdbusplus_dep.type_name() == 'internal' 207f154004SPatrick Williams sdbusplusplus_depfiles = subproject('sdbusplus').get_variable( 217f154004SPatrick Williams 'sdbusplusplus_depfiles', 227f154004SPatrick Williams ) 2311335246SPatrick Williamsendif 240894943fSPatrick Williams 250894943fSPatrick Williams# Parse options to determine appropriate subdirectories to support. 267f154004SPatrick Williamsyaml_selected_subdirs = [] 27e9981160SPatrick Williamsif get_option('data_com_google') 287f154004SPatrick Williams yaml_selected_subdirs += 'com/google' 29e9981160SPatrick Williamsendif 300894943fSPatrick Williamsif get_option('data_com_ibm') 317f154004SPatrick Williams yaml_selected_subdirs += 'com/ibm' 320894943fSPatrick Williamsendif 3336ed8ad2SJason M. Billsif get_option('data_com_intel') 347f154004SPatrick Williams yaml_selected_subdirs += 'com/intel' 3536ed8ad2SJason M. Billsendif 36e9981160SPatrick Williamsif get_option('data_com_meta') 377f154004SPatrick Williams yaml_selected_subdirs += 'com/meta' 382b2784a5SJohn Edward Broadbentendif 3954ed0a11SShawn McCarneyif get_option('data_org_freedesktop') 407f154004SPatrick Williams yaml_selected_subdirs += 'org/freedesktop' 4154ed0a11SShawn McCarneyendif 420894943fSPatrick Williamsif get_option('data_org_open_power') 437f154004SPatrick Williams yaml_selected_subdirs += 'org/open_power' 440894943fSPatrick Williamsendif 450894943fSPatrick Williamsif get_option('data_xyz_openbmc_project') 467f154004SPatrick Williams yaml_selected_subdirs += 'xyz/openbmc_project' 470894943fSPatrick Williamsendif 480894943fSPatrick Williams 490894943fSPatrick Williams# Install the selected YAML files. 507f154004SPatrick Williamsinst_yaml_dir = get_option('datadir') / 'phosphor-dbus-yaml' 517f154004SPatrick Williamsforeach d : yaml_selected_subdirs 520894943fSPatrick Williams install_subdir( 53b1b4d261SWilliam A. Kennington III 'yaml' / d, 546f70d9ffSPatrick Williams install_dir: inst_yaml_dir / d, 550894943fSPatrick Williams strip_directory: true, 560894943fSPatrick Williams ) 570894943fSPatrick Williamsendforeach 580894943fSPatrick Williams 590894943fSPatrick Williams# If libphosphor_dbus was not enabled, exit out from here. We installed 600894943fSPatrick Williams# the YAML which is all we are asked to do. 610894943fSPatrick Williamsif not get_option('libphosphor_dbus') 620894943fSPatrick Williams subdir_done() 630894943fSPatrick Williamsendif 640894943fSPatrick Williams 657f154004SPatrick Williamsshould_generate_cpp = true 667f154004SPatrick Williamsshould_generate_markdown = get_option('generate_md') 677f154004SPatrick Williamsshould_generate_registry = true 6847f32d12SPatrick Williams 6947f32d12SPatrick Williams# Source the generated meson files. 7047f32d12SPatrick Williamssubdir('gen') 710894943fSPatrick Williams 727f154004SPatrick Williams# Source the extra target to copy registry files into a separate tree so they 737f154004SPatrick Williams# can be useful for dependees when we are built as a sub-project. 747f154004SPatrick Williamssubdir('registry') 750894943fSPatrick Williams 760894943fSPatrick Williams# Define and build libphosphor_dbus.so from the C++ files. 770894943fSPatrick Williamslibphosphor_dbus = library( 780894943fSPatrick Williams 'phosphor_dbus', 7947f32d12SPatrick Williams generated_sources, 80db24111aSWilliam A. Kennington III implicit_include_directories: false, 8147f32d12SPatrick Williams include_directories: include_directories('gen'), 820894943fSPatrick Williams dependencies: sdbusplus_dep, 830894943fSPatrick Williams version: meson.project_version(), 840894943fSPatrick Williams install: true, 850894943fSPatrick Williams) 860894943fSPatrick Williams 870894943fSPatrick Williamsimport('pkgconfig').generate( 88aff7017dSPatrick Williams libphosphor_dbus, 890894943fSPatrick Williams name: meson.project_name(), 900894943fSPatrick Williams version: meson.project_version(), 916f70d9ffSPatrick Williams description: 'Generated sdbusplus bindings for phosphor-dbus-interfaces', 927f154004SPatrick Williams variables: [ 937f154004SPatrick Williams 'yamldir=' + '${pc_sysrootdir}${prefix}' / inst_yaml_dir, 94d25367bdSPatrick Williams 'registry_dir=' + '${prefix}' / inst_registry_dir, 957f154004SPatrick Williams ], 960894943fSPatrick Williams) 9741a7b450SPatrick Williams 9841a7b450SPatrick Williamsphosphor_dbus_interfaces_dep = declare_dependency( 99*c35b7018SPatrick Williams sources: [generated_headers, registry_target], 10041a7b450SPatrick Williams include_directories: include_directories('gen'), 10141a7b450SPatrick Williams link_with: libphosphor_dbus, 1026f70d9ffSPatrick Williams dependencies: sdbusplus_dep, 1037f154004SPatrick Williams variables: [ 1047f154004SPatrick Williams 'yamldir=' + meson.project_source_root() / 'yaml', 1057f154004SPatrick Williams 'registry_dir=' + registry_copy_dir, 1067f154004SPatrick Williams ], 10741a7b450SPatrick Williams) 1083b861bb7SAndrew Jeffery 1097f154004SPatrick Williamsmeson.override_dependency( 1107f154004SPatrick Williams 'phosphor-dbus-interfaces', 1117f154004SPatrick Williams phosphor_dbus_interfaces_dep, 1127f154004SPatrick Williams) 113