meson.build 1.72 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
zeroconf_option = get_option('zeroconf')

libavahi_client_dep = dependency('', required: false)

if zeroconf_option == 'auto'
  if is_darwin
    # Bonjour disabled for now because its build is broken
    #zeroconf_option = 'bonjour'
    zeroconf_option = 'disabled'
  elif is_android or is_windows
    zeroconf_option = 'disabled'
  elif dbus_dep.found()
    libavahi_client_dep = dependency('avahi-client', required: false)
    if libavahi_client_dep.found()
      zeroconf_option = 'avahi'
    else
      zeroconf_option = 'disabled'
    endif
  else
    zeroconf_option = 'disabled'
  endif
endif

if zeroconf_option == 'disabled'
  zeroconf_dep = dependency('', required: false)
  subdir_done()
endif

if zeroconf_option == 'bonjour'
  if not compiler.has_header('dns_sd.h')
    error('dns_sd.h not found')
  endif
33 34 35 36 37 38

  if is_darwin
    bonjour_dep = declare_dependency(link_args: ['-framework', 'dnssd'])
  else
    bonjour_dep = declare_dependency(link_args: ['-ldns_sd'])
  endif
39
  conf.set('HAVE_BONJOUR', true)
40

41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
  zeroconf = static_library(
    'zeroconf_bonjour',
    'ZeroconfGlue.cxx',
    'ZeroconfBonjour.cxx',
    include_directories: inc,
  )

  zeroconf_dep = declare_dependency(
    link_with: zeroconf,
    dependencies: [
      bonjour_dep,
    ],
  )
else
  if not libavahi_client_dep.found()
    libavahi_client_dep = dependency('avahi-client')
  endif

  conf.set('HAVE_AVAHI', true)
  
  zeroconf = static_library(
    'zeroconf_bonjour',
    'ZeroconfGlue.cxx',
    'ZeroconfAvahi.cxx',
    'AvahiPoll.cxx',
    include_directories: inc,
    dependencies: [
      libavahi_client_dep,
      dbus_dep,
70
      time_dep,
71 72 73 74 75 76 77 78 79
    ],
  )

  zeroconf_dep = declare_dependency(
    link_with: zeroconf,
  )
endif

conf.set('HAVE_ZEROCONF', true)