project('obmc-console', 'c',
    default_options: [
      'buildtype=debugoptimized',
      'warning_level=3',
      'werror=true',
      'c_std=gnu17',
      'tests=' + (meson.is_subproject() ? 'false' : 'true'),
    ],
    version: '1.1.0',
    meson_version: '>=1.1.0',
)

add_project_arguments('-D_GNU_SOURCE', language: 'c')

systemdsystemunitdir = dependency('systemd').get_variable('systemdsystemunitdir')
install_data('conf/obmc-console@.service.in',
             'conf/obmc-console@.socket.in',
             rename: [
               'obmc-console@.service',
               'obmc-console@.socket',
             ],
             install_dir: systemdsystemunitdir,
           )
if get_option('ssh').allowed()
  install_data('conf/obmc-console-ssh@.service.in',
            rename: [
              'obmc-console-ssh@.service'
            ],
            install_dir: systemdsystemunitdir,
          )
endif

if get_option('concurrent-servers')
  install_data('conf/client.2200.conf.in',
               rename: [ 'client.2200.conf' ],
               install_dir: systemdsystemunitdir)
else
  if get_option('ssh').allowed()
    install_data('conf/obmc-console-ssh.socket.in',
                rename: [ 'obmc-console-ssh.socket' ],
                install_dir: systemdsystemunitdir)
    install_data('conf/obmc-console-ssh@.service.d/use-socket.conf.in',
                rename: [ 'use-socket.conf' ],
                install_dir: systemdsystemunitdir / 'obmc-console-ssh@.service.d')
  endif
endif

udev = dependency('udev', required: get_option('udev'))
if udev.found()
  install_data('conf/80-obmc-console-uart.rules.in',
               rename: [ '80-obmc-console-uart.rules' ],
               install_dir: udev.get_variable('udevdir') / 'rules.d')
endif

iniparser_dep = dependency('iniparser')

executable('obmc-console-server',
           'config.c',
           'console-dbus.c',
           'console-server.c',
           'console-socket.c',
           'log-handler.c',
           'ringbuffer.c',
           'socket-handler.c',
           'tty-handler.c',
           'util.c',
           c_args: [
             '-DLOCALSTATEDIR="@0@"'.format(get_option('localstatedir')),
             '-DSYSCONFDIR="@0@"'.format(get_option('sysconfdir'))
           ],
           dependencies: [
             dependency('libsystemd'),
             iniparser_dep,
             meson.get_compiler('c').find_library('rt')
           ],
           install_dir: get_option('sbindir'),
           install: true)

executable('obmc-console-client',
           'config.c',
           'console-client.c',
           'console-socket.c',
           'util.c',
           c_args: [
             '-DSYSCONFDIR="@0@"'.format(get_option('sysconfdir'))
           ],
           dependencies: [
             iniparser_dep,
           ],
           install: true)

if get_option('tests')
  subdir('test')
endif
