summaryrefslogtreecommitdiff
path: root/gudev/meson.build
blob: fd06a11cae65374f5ca1ccc2d939a1d7acc0a6fb (plain)
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
33
34
35
36
37
38
39
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
libgudev_public_h = [
  'gudev.h',
  'gudevclient.h',
  'gudevdevice.h',
  'gudevenumerator.h',
  'gudevenums.h',
  'gudevtypes.h',
]

libgudev_private_h = [
  'gudevprivate.h',
]

libgudev_sources = [
  'gudevclient.c',
  'gudevdevice.c',
  'gudevenumerator.c',
]

libgudev_deps = [
  glib_dep,
  gobject_dep,
  libudev_dep,
]

libgudev_c_args = [
  '-DHAVE_CONFIG_H',
  '-D_POSIX_PTHREAD_SEMANTICS',
  '-D_REENTRANT',
  '-D_GUDEV_COMPILATION',
  '-D_GUDEV_WORK_AROUND_DEV_T_BUG',
  '-DG_LOG_DOMAIN="GUdev"',
]

libgudev_link_args = [
  '-export-dynamic',
  '-Wl,--version-script,@0@/libgudev-1.0.sym'.format(top_srcdir),
]

libgudev_enums = gnome.mkenums(
  'gudevenumtypes',
  sources: libgudev_public_h,
  h_template: 'gudevenumtypes.h.template',
  c_template: 'gudevenumtypes.c.template',
  install_header: true,
  install_dir: join_paths(
    pkgincludedir,
    'gudev',
  )
)

libgudev_enums_h = libgudev_enums.get(1)

libgudev_sources += [
  libgudev_enums,
]

install_headers(
  libgudev_public_h,
  install_dir: join_paths(
    pkgincludedir,
    'gudev',
  )
)

libgudev = library(
  package_string,
  libgudev_sources,
  version: lib_version,
  include_directories: rootdir,
  dependencies: libgudev_deps,
  c_args: libgudev_c_args,
  link_args: libgudev_link_args,
  install: true,
  install_dir: libdir,
)

libgudev_dep = declare_dependency(
  link_with: libgudev,
  include_directories: rootdir,
  dependencies: libgudev_deps,
  sources: [
    libgudev_enums_h,
  ]
)

pkg.generate(
  name: package_string,
  description: 'GObject bindings for libudev',
  requires: ['glib-2.0', 'gobject-2.0'],
  version: version,
  subdirs: package_string,
  libraries: libgudev,
  install_dir: pkgconfigdir,
  variables: [
    'exec_prefix=${prefix}',
  ]
)

if introspection_dep.found()
  libgudev_gir = gnome.generate_gir(
    libgudev,
    sources: libgudev_sources + libgudev_public_h,
    nsversion: api_version,
    namespace: 'GUdev',
    symbol_prefix: 'g_udev',
    identifier_prefix: 'GUdev',
    header: 'gudev/gudev.h',
    export_packages: [package_string],
    includes: ['GObject-2.0'],
    link_with: libgudev,
    install: true,
    install_dir_gir: girdir,
    install_dir_typelib: typelibdir,
    extra_args: [
      '-D_GUDEV_COMPILATION',
      '-D_GUDEV_WORK_AROUND_DEV_T_BUG',
    ]
  )

  if vapigen_dep.found()
    libgudev_vapi = gnome.generate_vapi(
      package_string,
      sources: libgudev_gir.get(0),
      install: true,
      install_dir: vapidir,
      packages: [
        'gobject-2.0',
      ]
    )
  endif
endif