meson.build 3.67 KB
Newer Older
1
project('girara', 'c',
Sebastian Ramacher's avatar
Sebastian Ramacher committed
2
  version: '0.3.2',
3
  meson_version: '>=0.48',
4
  default_options: 'c_std=c11',
5 6
)

7 8
version = meson.project_version()
version_array = version.split('.')
9

10 11 12 13 14 15 16
# Rules for so_major and so_minor:
# Before a release perform the following checks against the last release:
# * If a function has been removed or the paramaters of a function have changed
#   bump SOMAJOR and set SOMINOR to 0.
# * If any of the exported datastructures have changed in a incompatible way
#   bump SOMAJOR and set SOMINOR to 0.
# * If a function has been added bump SOMINOR.
17
so_major = '3'
Sebastian Ramacher's avatar
Sebastian Ramacher committed
18
so_minor = '1'
19 20 21
so_version = '@0@.@1@'.format(so_major, so_minor)

conf_data = configuration_data()
22 23 24
conf_data.set('GVMAJOR', version_array[0])
conf_data.set('GVMINOR', version_array[1])
conf_data.set('GVREV', version_array[2])
25 26
conf_data.set('version', version)

27
cc = meson.get_compiler('c')
28 29 30 31

prefix = get_option('prefix')
localedir = get_option('localedir')

32
# required dependencies
33
libm = cc.find_library('m', required: false)
34 35
glib = dependency('glib-2.0', version: '>=2.50')
gtk3 = dependency('gtk+-3.0', version: '>=3.20')
36
pango = dependency('pango', version: '>=1.14')
37

38
build_dependencies = [libm, glib, gtk3, pango]
39 40
pc_requires = ['glib-2.0', 'gtk+-3.0']

41
# defines
42 43
defines = [
  '-DGETTEXT_PACKAGE="libgirara-gtk3-@0@"'.format(so_major),
44 45
  '-DLOCALEDIR="@0@"'.format(join_paths(prefix, localedir)),
  '-D_DEFAULT_SOURCE',
46 47
]

48
# compile flags
49 50 51 52 53
flags = [
  '-Wall',
  '-Wextra',
  '-pedantic',
  '-Wmissing-declarations',
Sebastian Ramacher's avatar
Sebastian Ramacher committed
54
  '-Werror=implicit-function-declaration',
55
  '-Werror=vla'
56 57 58
]
flags = cc.get_supported_arguments(flags)

59
# optional dependencies
60
pc_requires_private = ['pango']
61 62
libnotify = dependency('libnotify', version: '>=0.7.0', required: get_option('notify'))
jsonc = dependency('json-c', required: get_option('json'))
Sebastian Ramacher's avatar
Sebastian Ramacher committed
63

64
if libnotify.found()
65 66 67
  build_dependencies += libnotify
  defines += '-DWITH_LIBNOTIFY'
  pc_requires_private += 'libnotify'
68 69
endif

70
if jsonc.found()
71
  build_dependencies += jsonc
72
  defines += '-DWITH_JSON'
73
  pc_requires_private += 'json-c'
74 75
endif

76
# generate version header file
77 78
version_header = configure_file(
  input: 'girara/version.h.in',
79
  output: 'girara-version.h',
80 81 82 83 84 85 86 87 88
  configuration: conf_data
)
include_directories = [
  include_directories('.')
]

subdir('data')
subdir('po')

89
# source files
90 91 92
sources = files(
  'girara/callbacks.c',
  'girara/commands.c',
Sebastian Ramacher's avatar
Sebastian Ramacher committed
93
  'girara/completion.c',
94 95
  'girara/config.c',
  'girara/datastructures.c',
Sebastian Ramacher's avatar
Sebastian Ramacher committed
96 97
  'girara/entry.c',
  'girara/input-history-io.c',
98 99
  'girara/input-history.c',
  'girara/log.c',
Sebastian Ramacher's avatar
Sebastian Ramacher committed
100
  'girara/session.c',
101
  'girara/settings.c',
Sebastian Ramacher's avatar
Sebastian Ramacher committed
102
  'girara/shortcuts.c',
103
  'girara/statusbar.c',
Sebastian Ramacher's avatar
Sebastian Ramacher committed
104
  'girara/template.c',
105 106 107 108
  'girara/utils.c'
)
sources += girara_css

Sebastian Ramacher's avatar
Sebastian Ramacher committed
109
# header files to install
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
headers = files(
  'girara/callbacks.h',
  'girara/commands.h',
  'girara/completion.h',
  'girara/config.h',
  'girara/datastructures.h',
  'girara/entry.h',
  'girara/girara.h',
  'girara/input-history.h',
  'girara/log.h',
  'girara/macros.h',
  'girara/session.h',
  'girara/settings.h',
  'girara/shortcuts.h',
  'girara/statusbar.h',
  'girara/template.h',
  'girara/types.h',
  'girara/utils.h'
)
headers += version_header

131
# girara library
132 133 134 135
girara = library(
  'girara-gtk3',
  sources,
  dependencies: build_dependencies,
Sebastian Ramacher's avatar
Sebastian Ramacher committed
136
  version: so_version,
137 138
  install: true,
  include_directories: include_directories,
139 140
  c_args: defines + flags,
  gnu_symbol_visibility: 'hidden'
141 142 143
)
install_headers(headers, subdir: 'girara')

144
# pkg-config file
145 146 147 148 149 150 151
pkg = import('pkgconfig')
pkg.generate(
  name: 'girara-gtk3',
  description: 'User interface library',
  url: 'https://pwmt.org/projects/girara',
  version: version,
  libraries: girara,
152 153
  requires: pc_requires,
  requires_private: pc_requires_private,
154 155
)

156
subdir('doc')
157
subdir('tests')