project(
     'openpower-vpd-parser',
     'c',
     'cpp',
     default_options: [
       'warning_level=3',
       'werror=true',
       'cpp_std=c++20',
       'buildtype=debugoptimized'
     ],
     version: '1.0',
     meson_version: '>=0.57.0',
)

add_global_arguments('-Wno-psabi', language : ['c', 'cpp'])

# Disable FORTIFY_SOURCE when compiling with no optimization
if(get_option('optimization') == '0')
  add_project_arguments('-U_FORTIFY_SOURCE',language:['cpp','c'])
  message('Disabling FORTIFY_SOURCE as optimization is set to 0')
endif

# Setup googletest before we import any projects that also depend on it to make
# sure we have control over its configuration
build_tests = get_option('tests')
if not build_tests.disabled()
    gtest_dep = dependency('gtest', main: true, disabler: true, required: false)
    gmock_dep = dependency('gmock', disabler: true, required: false)
    if not gtest_dep.found() or not gmock_dep.found()
        cmake = import('cmake')
        gtest_opts = cmake.subproject_options()
        gtest_opts.set_override_option('warning_level', '1')
        gtest_opts.set_override_option('werror', 'false')
        gtest_proj = cmake.subproject('googletest',
                                      options: gtest_opts,
                                      required: false)
        if gtest_proj.found()
            gtest_dep = declare_dependency(
                dependencies: [
                    dependency('threads'),
                    gtest_proj.dependency('gtest'),
                    gtest_proj.dependency('gtest_main'),
                ]
            )
            gmock_dep = gtest_proj.dependency('gmock')
        else
            assert(not get_option('tests').enabled(),
                   'Googletest is required if tests are enabled')
        endif
    endif
endif

phosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces',
    default_options: [ 'data_com_ibm=true', 'data_org_open_power=true' ],
    fallback: ['phosphor-dbus-interfaces', 'phosphor_dbus_interfaces_dep'])

phosphor_logging = dependency('phosphor-logging',
    default_options: [ 'openpower-pel-extension=enabled' ],
    fallback: ['phosphor-logging', 'phosphor_logging_dep'])

sdbusplus = dependency('sdbusplus', fallback: [ 'sdbusplus', 'sdbusplus_dep' ])

libvpdecc_src = files(
    'vpdecc/vpdecc.c',
    'vpdecc/vpdecc_support.c'
)

libvpdecc = shared_library(
    'vpdecc',
    libvpdecc_src,
    version: meson.project_version(),
    install: true,
)

if not build_tests.disabled()
    subdir('test')
endif

compiler = meson.get_compiler('cpp')
python = find_program('python3', required:true)

compiler.has_header('CLI/CLI.hpp')
compiler.has_header('nlohmann/json.hpp')

configure_file(output: 'config.h',
                       configuration :{
                       'INVENTORY_JSON_DEFAULT': '"'+get_option('INVENTORY_JSON_DEFAULT')+'"',
                       'VPD_FILES_PATH': '"'+get_option('VPD_FILES_PATH')+'"',
                       'INVENTORY_PATH': '"'+get_option('INVENTORY_PATH')+'"',
                       'IPZ_INTERFACE': '"'+get_option('IPZ_INTERFACE')+'"',
                       'INVENTORY_MANAGER_SERVICE': '"'+get_option('INVENTORY_MANAGER_SERVICE')+'"',
                       'BUSNAME' : '"' + get_option('BUSNAME') + '"',
                       'OBJPATH' : '"' + get_option('OBJPATH') + '"',
                       'IFACE' : '"' + get_option('IFACE') + '"',
                       'OBJECT_MAPPER_SERVICE' : '"'+get_option('OBJECT_MAPPER_SERVICE')+'"',
                       'OBJECT_MAPPER_OBJECT' : '"'+get_option('OBJECT_MAPPER_OBJECT')+'"',
                       'POWER_SUPPLY_TYPE_INTERFACE' : '"'+get_option('POWER_SUPPLY_TYPE_INTERFACE')+'"',
                       'INVENTORY_MANAGER_CACHE' : '"'+get_option('INVENTORY_MANAGER_CACHE')+'"',
                       'INVENTORY_JSON_SYM_LINK': '"'+get_option('INVENTORY_JSON_SYM_LINK')+'"',
                       'INVENTORY_JSON_2U': '"'+get_option('INVENTORY_JSON_2U')+'"',
                       'INVENTORY_JSON_4U': '"'+get_option('INVENTORY_JSON_4U')+'"',
                       'INVENTORY_JSON_EVEREST': '"'+get_option('INVENTORY_JSON_EVEREST')+'"',
                       'DBUS_PROP_JSON': '"'+get_option('DBUS_PROP_JSON')+'"',
                       'SYSTEM_JSON' : '"'+get_option('SYSTEM_JSON')+'"',
                       'BAD_VPD_DIR': '"'+get_option('BAD_VPD_DIR')+'"',
                       'FAN_INTERFACE': '"'+get_option('FAN_INTERFACE')+'"'
                       }
  )

common_SOURCES =['common_utility.cpp',
'vpd-parser/parser_factory.cpp',
                 'vpd-parser/memory_vpd_parser.cpp',
                 'vpd-parser/keyword_vpd_parser.cpp',
                 'vpd-parser/ipz_parser.cpp', 'impl.cpp', 'ibm_vpd_utils.cpp',
]

if get_option('ibm-parser').enabled()
        libgpiodcxx = dependency('libgpiodcxx')
        ibm_read_vpd_SOURCES = ['ibm_vpd_app.cpp'
                               ]+common_SOURCES

        ibm_vpd_exe = executable(
                                'ibm-read-vpd',
                                ibm_read_vpd_SOURCES,
                                dependencies: [
                                        sdbusplus,
                                        phosphor_logging,
                                        libgpiodcxx,
                                ],
                                link_with : libvpdecc,
                                include_directories : 'vpd-parser/',
                                install: true,
                                cpp_args : '-DIPZ_PARSER'
                            )

        vpd_tool_SOURCES = ['vpd_tool.cpp',
                            'vpd_tool_impl.cpp',
                            'vpd-manager/editor_impl.cpp',
                           ]+common_SOURCES

        vpd_tool_INCLUDE = include_directories('vpd-parser/', 'vpd-manager')

        vpd_tool_exe = executable(
                                 'vpd-tool',
                                 vpd_tool_SOURCES,
                                 dependencies: [
                                   sdbusplus,
                                   phosphor_logging,
                                   libgpiodcxx
                                   ],
                                 link_with : libvpdecc,
                                 install: true,
                                 include_directories : vpd_tool_INCLUDE,
                                 cpp_args : '-DIPZ_PARSER'
                                 )
if get_option('vpd-manager').enabled()
    subdir('vpd-manager')
endif

systemd_system_unit_dir = dependency('systemd').get_variable(
        pkgconfig: 'systemdsystemunitdir')

udev_dir = dependency('udev').get_variable(
        pkgconfig: 'udev_dir')

install_data(
    'ibm_vpd/system-vpd.service',
    install_dir: systemd_system_unit_dir)

install_data(
    'ibm_vpd/ibm-vpd-parser@.service',
    install_dir: systemd_system_unit_dir)

install_data(
    'ibm_vpd/com.ibm.VPD.Manager.service',
    install_dir: systemd_system_unit_dir)

install_data(
    'ibm_vpd/wait-vpd-parsers.service',
    install_dir: systemd_system_unit_dir)

install_data(
    'ibm_vpd/wait-vpd-parsers.sh',
    install_mode: 'rwxr-xr-x',
    install_dir: get_option('bindir'))

install_data(
    ['ibm_vpd/70-ibm-vpd-parser.rules'],
    install_dir: udev_dir / 'rules.d')

package_datadir = join_paths('share', 'vpd')
install_subdir('ibm_vpd/fru/', install_dir: package_datadir, strip_directory: true)

else
        FRUGEN = '$srcdir/extra-properties.py -e' + get_option('FRU_YAML')
        PROPGEN = '$srcdir/extra-properties.py -e' + get_option('PROP_YAML')

        src_dir = meson.source_root()
        FRU_GEN_SCRIPT = src_dir + '/writefru.py'
        FRU_GEN_SCRIPT_FILES = src_dir + '/writefru.yaml'

        PROP_GEN_SCRIPT = src_dir + '/extra-properties.py'
        PROP_GEN_SCRIPT_FILES = src_dir + '/extra-properties-example.yaml'

        writefru_hpp = custom_target('writefru.hpp',
                                     command:[python,
                                              FRU_GEN_SCRIPT,
                                              '-i',
                                              get_option('FRU_YAML')
                                     ],
                                     depend_files :['writefru.mako.hpp',
                                                    'writefru.py',
                                                    get_option('FRU_YAML')
                                     ],
                                     output:'writefru.hpp'
        )

        extra_properties_gen_hpp = custom_target(
                                        'extra-properties-gen.hpp',
                                        command:[
                                                python,
                                                PROP_GEN_SCRIPT,
                                                '-e',
                                                get_option('PROP_YAML')
                                        ],
                                        depend_files : ['extra-properties.mako.hpp',
                                                        'extra-properties.py',
                                                        get_option('PROP_YAML')
                                        ],
                                        output:'extra-properties-gen.hpp'
        )

        openpower_read_vpd_SOURCES = ['app.cpp',
                                      'args.cpp',
                                      'impl.cpp',
                                      'vpd-parser/ipz_parser.cpp',
                                      'write.cpp',
                                      'common_utility.cpp',
                                      writefru_hpp,
                                      extra_properties_gen_hpp
        ]

        openpower_read_vpd_exe= executable(
                'openpower-read-vpd',
                openpower_read_vpd_SOURCES,
                dependencies: [
                        sdbusplus,
                        phosphor_logging,
                ],
                include_directories : 'vpd-parser/',
                install: true,
        )
endif
