xref: /openbmc/phosphor-dbus-interfaces/meson.build (revision c35b70189ddf99f23498acedf9601c312b02a42c)
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