Přemysl Eric Janouch
ac70c7724b
The gdk-pixbuf plugin does not work here, for whatever reason. Moreover, close integration exposes higher bit depths, metadata, and auxiliary images. The library is awful and copylefted, but it's the only reasonable thing that works.
87 lines
2.8 KiB
Meson
87 lines
2.8 KiB
Meson
project('fastiv', 'c',
|
|
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',
|
|
)
|
|
|
|
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
|
|
|
|
# TODO(p): Use libraw_r later, when we start parallelizing/preloading.
|
|
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'))
|
|
dependencies = [
|
|
dependency('gtk+-3.0'),
|
|
dependency('libturbojpeg'),
|
|
dependency('spng', version : '>=0.7.0',
|
|
default_options: 'default_library=static'),
|
|
dependency('pixman-1'),
|
|
libraw,
|
|
librsvg,
|
|
xcursor,
|
|
libheif,
|
|
libtiff,
|
|
gdkpixbuf,
|
|
meson.get_compiler('c').find_library('m', required : false),
|
|
]
|
|
|
|
conf = configuration_data()
|
|
conf.set_quoted('PROJECT_NAME', meson.project_name())
|
|
conf.set_quoted('PROJECT_VERSION', meson.project_version())
|
|
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())
|
|
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('fastiv', 'fastiv.c', 'fastiv-view.c', 'fastiv-io.c',
|
|
'fastiv-browser.c', 'fastiv-sidebar.c', 'xdg.c', resources,
|
|
install : true,
|
|
dependencies : [dependencies])
|
|
|
|
if gdkpixbuf.found()
|
|
executable('io-benchmark', 'fastiv-io-benchmark.c', 'fastiv-io.c', 'xdg.c',
|
|
build_by_default : false,
|
|
dependencies : [dependencies, gdkpixbuf])
|
|
endif
|
|
|
|
install_data('fastiv.desktop',
|
|
install_dir : get_option('datadir') + '/applications')
|
|
install_data('fastiv-browse.desktop',
|
|
install_dir : get_option('datadir') + '/applications')
|
|
install_data('fastiv.svg',
|
|
install_dir : get_option('datadir') + '/icons/hicolor/scalable/apps')
|
|
|
|
# TODO(p): Replace this with custom_target().
|
|
if not meson.is_cross_build()
|
|
meson.add_install_script(
|
|
'sh', '-c', '''sed -i "/^MimeType=/{c \\
|
|
MimeType=$($1 --list-supported-media-types | tr "\\012" ";")
|
|
}" "$MESON_INSTALL_DESTDIR_PREFIX/$2"''',
|
|
'sh',
|
|
exe.full_path(),
|
|
get_option('datadir') + '/applications/fastiv.desktop')
|
|
endif
|