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')

server = executable('obmc-console-server',
           'config.c',
           'console-dbus.c',
           'console-server.c',
           'console-socket.c',
           'console-mux.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,
             dependency('libgpiod'),
             meson.get_compiler('c').find_library('rt')
           ],
           install_dir: get_option('sbindir'),
           install: true)

client = 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
