fiv/meson.build

108 lines
3.5 KiB
Meson
Raw Normal View History

# vim: noet ts=4 sts=4 sw=4:
project('fiv', 'c',
2021-11-20 14:28:13 +01:00
default_options : ['c_std=gnu99', 'warning_level=2'],
version : '0.1.0')
add_project_arguments(
meson.get_compiler('c').get_supported_arguments('-Wno-cast-function-type'),
language : 'c',
2021-11-20 14:28:13 +01:00
)
2021-07-14 07:09:19 +02:00
2021-11-30 22:52:34 +01:00
if get_option('buildtype').startswith('debug')
flags = meson.get_compiler('c').get_supported_arguments(
'-fsanitize=address,undefined')
add_project_arguments(flags, language : ['c'])
add_project_link_arguments(flags, language : ['c'])
endif
lcms2 = dependency('lcms2', required : get_option('lcms2'))
# Note that only libraw_r is thread-safe, but we'll just run it out-of process.
2021-09-16 12:35:36 +02:00
libraw = dependency('libraw', required : get_option('libraw'))
librsvg = dependency('librsvg-2.0', required : get_option('librsvg'))
xcursor = dependency('xcursor', required : get_option('xcursor'))
libheif = dependency('libheif', required : get_option('libheif'))
libtiff = dependency('libtiff-4', required : get_option('libtiff'))
gdkpixbuf = dependency('gdk-pixbuf-2.0', required : get_option('gdk-pixbuf'))
2021-09-16 12:35:36 +02:00
dependencies = [
dependency('gtk+-3.0'),
dependency('pixman-1'),
2021-09-16 12:35:36 +02:00
dependency('libturbojpeg'),
dependency('libjpeg', required : get_option('jpeg-qs')),
dependency('libwebp'),
dependency('libwebpdemux'),
dependency('libwebpdecoder', required : false),
dependency('libwebpmux'),
# https://github.com/google/wuffs/issues/58
dependency('spng', version : '>=0.7.0',
default_options: 'default_library=static',
# fallback : ['spng', 'spng_dep'],
),
lcms2,
2021-09-16 12:35:36 +02:00
libraw,
librsvg,
xcursor,
libheif,
libtiff,
gdkpixbuf,
2021-09-17 20:40:11 +02:00
meson.get_compiler('c').find_library('m', required : false),
2021-09-16 12:35:36 +02:00
]
2021-07-14 07:09:19 +02:00
conf = configuration_data()
conf.set_quoted('PROJECT_NAME', meson.project_name())
conf.set_quoted('PROJECT_VERSION', meson.project_version())
# TODO(p): Wrap it in a Meson subproject, try to enable SIMD.
conf.set('HAVE_JPEG_QS', get_option('jpeg-qs').enabled())
conf.set('HAVE_LCMS2', lcms2.found())
2021-09-16 12:35:36 +02:00
conf.set('HAVE_LIBRAW', libraw.found())
conf.set('HAVE_LIBRSVG', librsvg.found())
conf.set('HAVE_XCURSOR', xcursor.found())
conf.set('HAVE_LIBHEIF', libheif.found())
conf.set('HAVE_LIBTIFF', libtiff.found())
conf.set('HAVE_GDKPIXBUF', gdkpixbuf.found())
2021-07-14 07:09:19 +02:00
configure_file(
output : 'config.h',
configuration : conf,
)
gnome = import('gnome')
resources = gnome.compile_resources('resources',
'resources/resources.gresource.xml',
source_dir : 'resources',
c_name : 'resources',
)
exe = executable('fiv', 'fiv.c', 'fiv-view.c', 'fiv-io.c',
'fiv-browser.c', 'fiv-sidebar.c', 'fiv-thumbnail.c', 'xdg.c', resources,
2021-07-14 07:09:19 +02:00
install : true,
dependencies : [dependencies])
2021-09-16 17:34:28 +02:00
if gdkpixbuf.found()
executable('io-benchmark', 'fiv-io-benchmark.c', 'fiv-io.c', 'xdg.c',
2021-09-20 01:43:25 +02:00
build_by_default : false,
dependencies : [dependencies, gdkpixbuf])
2021-09-20 01:43:25 +02:00
endif
# XXX: With gdk-pixbuf, this even depends on currently installed modules.
2022-01-06 11:28:56 +01:00
if meson.is_cross_build()
install_data('fiv.desktop',
install_dir : get_option('datadir') + '/applications')
else
# XXX: The exe path may not contain spaces--quoting is a bitch in Meson.
desktop = custom_target('desktop',
output : 'fiv.desktop',
input : 'fiv.desktop',
command : ['sh', '-c', '''awk '/^MimeType=/ { $0 = "MimeType=";
while (((exe " --list-supported-media-types") | getline type) > 0)
2022-01-06 11:28:56 +01:00
$0 = $0 type ";" } 1' "exe=$1" "$2"''', 'sh', exe, '@INPUT@'],
capture : true,
install : true,
install_dir : get_option('datadir') + '/applications',
)
endif
install_data('fiv-browse.desktop',
2021-11-22 20:36:41 +01:00
install_dir : get_option('datadir') + '/applications')
install_data('fiv.svg',
2021-09-16 17:34:28 +02:00
install_dir : get_option('datadir') + '/icons/hicolor/scalable/apps')