zathura/meson.build

197 lines
5.4 KiB
Meson
Raw Normal View History

2018-02-10 13:13:06 +01:00
project('zathura', 'c',
2024-03-03 18:10:20 +01:00
version: '0.5.5',
2023-09-07 19:18:01 +02:00
meson_version: '>=0.61',
default_options: ['c_std=c17', 'warning_level=3'],
2018-02-10 13:13:06 +01:00
)
version = meson.project_version()
version_array = version.split('.')
# Rules for plugin API and ABI (non-exhaustive):
# * zathura_plugin_function_t: If functions are addedd or removed or their
# signature changes, bump both ABI and API.
# * zathura_plugin_definition_t: If the struct changes in an ABI-incompatible
# way, bump the ABI.
plugin_api_version = '5'
plugin_abi_version = '6'
2018-02-10 13:13:06 +01:00
conf_data = configuration_data()
conf_data.set('ZVMAJOR', version_array[0])
conf_data.set('ZVMINOR', version_array[1])
conf_data.set('ZVREV', version_array[2])
conf_data.set('ZVAPI', plugin_api_version)
conf_data.set('ZVABI', plugin_abi_version)
conf_data.set('version', version)
2018-08-21 18:11:29 +02:00
cc = meson.get_compiler('c')
2018-02-10 13:13:06 +01:00
prefix = get_option('prefix')
localedir = get_option('localedir')
datadir = get_option('datadir')
metainfodir = join_paths(datadir, 'metainfo')
desktopdir = join_paths(datadir, 'applications')
dbusinterfacesdir = join_paths(datadir, 'dbus-1', 'interfaces')
plugindir = join_paths(get_option('libdir'), 'zathura')
# required dependencies
libm = cc.find_library('m', required: false)
2024-03-02 17:27:21 +01:00
girara = dependency('girara-gtk3', version: '>=0.4.3', fallback: ['girara', 'girara_dependency'])
glib = dependency('glib-2.0', version: '>=2.74')
gio = dependency('gio-unix-2.0', required: host_machine.system() != 'windows')
gthread = dependency('gthread-2.0', version: '>=2.74')
gmodule = dependency('gmodule-no-export-2.0', version: '>=2.74')
gtk3 = dependency('gtk+-3.0', version: '>=3.24')
json_glib = dependency('json-glib-1.0')
2018-03-04 20:17:17 +01:00
cairo = dependency('cairo')
2022-05-08 15:43:16 +02:00
magic = cc.find_library('magic', required: true)
2024-03-03 13:19:31 +01:00
sqlite = dependency('sqlite3', version: '>=3.6.23', required: true)
2018-02-10 13:13:06 +01:00
2024-03-03 13:19:31 +01:00
build_dependencies = [libm, girara, glib, gio, gthread, gmodule, gtk3, cairo, magic, json_glib, sqlite]
2018-02-10 13:13:06 +01:00
2021-01-05 09:31:48 +01:00
if host_machine.system() == 'darwin'
2023-12-21 23:15:30 +01:00
gtk_mac_integration = dependency('gtk-mac-integration-gtk3')
build_dependencies += gtk_mac_integration
2021-01-05 09:31:48 +01:00
endif
2018-02-10 13:13:06 +01:00
# defines
defines = [
'-DGETTEXT_PACKAGE="zathura"',
'-DLOCALEDIR="@0@"'.format(join_paths(prefix, localedir)),
'-DZATHURA_PLUGINDIR="@0@"'.format(join_paths(prefix, plugindir)),
'-D_DEFAULT_SOURCE',
]
2021-01-05 09:46:31 +01:00
if host_machine.system() == 'darwin'
defines += '-DGTKOSXAPPLICATION'
endif
2018-02-10 13:13:06 +01:00
# compile flags
flags = [
2018-03-04 11:14:01 +01:00
'-Werror=implicit-function-declaration',
'-Werror=vla',
2024-01-30 10:21:33 +01:00
'-fvisibility=hidden',
'-Werror=int-conversion'
2018-02-10 13:13:06 +01:00
]
flags = cc.get_supported_arguments(flags)
# optional dependencies
additional_sources = []
synctex = dependency('synctex', version: '>=1.19', required: get_option('synctex'))
2018-11-27 20:55:16 +01:00
seccomp = dependency('libseccomp', required: get_option('seccomp'))
2018-02-10 13:13:06 +01:00
2018-11-27 20:55:16 +01:00
if synctex.found()
2018-02-10 13:13:06 +01:00
build_dependencies += synctex
defines += '-DWITH_SYNCTEX'
if synctex.version() < '2.0.0' and synctex.version() >= '1.19.0'
warning('You are using a synctex version pre-SONAME bump, but post-ABI-break. Please make sure to always run zathura using the correct synctex version.')
2018-04-21 13:11:10 +02:00
endif
2018-02-10 13:13:06 +01:00
endif
2018-11-27 20:55:16 +01:00
if seccomp.found()
build_dependencies += seccomp
defines += '-DWITH_SECCOMP'
2018-03-11 15:59:47 +01:00
additional_sources += files('zathura/seccomp-filters.c')
endif
2018-02-10 13:13:06 +01:00
# generate version header file
version_header = configure_file(
input: 'zathura/version.h.in',
output: 'zathura-version.h',
2018-02-10 13:13:06 +01:00
configuration: conf_data
)
2021-01-05 09:31:48 +01:00
2018-02-10 13:13:06 +01:00
include_directories = [
include_directories('.')
]
subdir('data')
subdir('po')
# source files
sources = files(
'zathura/adjustment.c',
'zathura/bookmarks.c',
'zathura/callbacks.c',
'zathura/checked-integer-arithmetic.c',
'zathura/commands.c',
'zathura/completion.c',
'zathura/config.c',
'zathura/content-type.c',
'zathura/database.c',
2024-03-03 13:19:31 +01:00
'zathura/database-sqlite.c',
2018-02-10 13:13:06 +01:00
'zathura/dbus-interface.c',
'zathura/document.c',
'zathura/file-monitor.c',
'zathura/file-monitor-glib.c',
2018-09-17 22:57:25 +02:00
'zathura/file-monitor-noop.c',
2018-02-10 13:13:06 +01:00
'zathura/file-monitor-signal.c',
'zathura/jumplist.c',
'zathura/links.c',
'zathura/marks.c',
'zathura/page.c',
'zathura/page-widget.c',
'zathura/plugin.c',
'zathura/print.c',
'zathura/render.c',
'zathura/shortcuts.c',
'zathura/synctex.c',
'zathura/types.c',
'zathura/utils.c',
'zathura/zathura.c',
)
sources += zathura_resources
sources += additional_sources
2021-01-05 09:46:31 +01:00
# header files to install
2018-02-10 13:13:06 +01:00
headers = files(
'zathura/document.h',
'zathura/links.h',
'zathura/macros.h',
'zathura/page.h',
'zathura/plugin-api.h',
'zathura/types.h',
)
headers += version_header
# zathura helper library
libzathura = static_library('zathura',
sources,
dependencies: build_dependencies,
include_directories: include_directories,
c_args: defines + flags
)
# zathura executable
zathura = executable(
'zathura',
files('zathura/main.c'),
dependencies: build_dependencies + [declare_dependency(link_with: libzathura)],
install: true,
include_directories: include_directories,
c_args: defines + flags,
export_dynamic: true,
2021-09-12 16:11:35 +02:00
win_subsystem: 'windows'
2018-02-10 13:13:06 +01:00
)
install_headers(headers, subdir: 'zathura')
# pkg-config file
pkg = import('pkgconfig')
pkg.generate(
name: 'zathura',
description: 'document viewer - plugin API',
url: 'https://pwmt.org/projects/zathura',
version: version,
requires: ['girara-gtk3', 'cairo'],
2018-02-10 13:13:06 +01:00
variables: [
'apiversion=@0@'.format(plugin_api_version),
'abiversion=@0@'.format(plugin_abi_version),
'plugindir=${libdir}/zathura'
]
)
2020-01-05 17:26:33 +01:00
zathura_dependency = declare_dependency(link_with: zathura, include_directories: include_directories)
2018-02-10 13:13:06 +01:00
subdir('doc')
subdir('tests')