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
|
# ggaze — GNOME Gaze
#
# A small, fast, native image viewer for Fedora Linux, written in C with
# GTK4. Full design lives in docs/; this file is the build root. Phase 0
# establishes the build/test/CI/convention harness — no production sources
# yet (they arrive from M0; see docs/roadmap.md).
project('ggaze', 'c',
version : '0.1.0',
license : 'GPL-3.0-or-later',
meson_version : '>= 1.1',
default_options : [
'warning_level=2', # -Wall -Wextra
'c_std=c11',
'b_pie=true',
],
)
# --- Always-required dependencies (the core viewer needs all of these) ---
gtk4_dep = dependency('gtk4')
glib_dep = dependency('glib-2.0')
gio_dep = dependency('gio-2.0')
adwaita_dep = dependency('libadwaita-1')
gdkpixbuf_dep = dependency('gdk-pixbuf-2.0') # pixbuf loader backend
libexif_dep = dependency('libexif') # EXIF gather (info overlay, M4)
# --- Optional backends (feature: auto/disabled/enabled). See meson_options.txt.
gegl_dep = dependency('gegl-0.4', required : get_option('gegl'))
jxl_dep = dependency('libjxl', required : get_option('jxl'))
avif_dep = dependency('libavif', required : get_option('avif'))
heif_dep = dependency('libheif', required : get_option('heif'))
# --- Generated config header (app id, version, feature flags) ---
conf = configuration_data()
conf.set_quoted('GGAZE_VERSION', meson.project_version())
conf.set_quoted('GGAZE_APP_ID', 'org.buetow.ggaze')
conf.set('GGAZE_HAVE_GEGL', gegl_dep.found() ? 1 : 0)
conf.set('GGAZE_HAVE_JXL', jxl_dep.found() ? 1 : 0)
conf.set('GGAZE_HAVE_AVIF', avif_dep.found() ? 1 : 0)
conf.set('GGAZE_HAVE_HEIF', heif_dep.found() ? 1 : 0)
ggaze_conf_h = configure_file(
input : 'ggaze-config.h.in',
output : 'ggaze-config.h',
configuration : conf,
)
# Include paths: source root (generated header) + src/ (module headers).
inc = include_directories('.')
src_inc = include_directories('src')
# --- ggaze library: the app + window (shared between the executable and
# tests so the GApplication/GtkApplicationWindow code is exercised without
# duplicating sources). Plain-C modules will join this library as they
# land (navigator, trash, mover, ...).
ggaze_src = files(
'src/app.c',
'src/window.c',
'src/viewer.c',
'src/navigator.c',
'src/shortcuts.c',
'src/texturecache.c',
'src/thumbnail.c',
'src/trash.c',
'src/gridview.c',
'src/info.c',
'src/loader/loader.c',
'src/loader/detect.c',
'src/loader/backends/pixbuf.c',
)
ggaze_c_args = []
ggaze_extra_deps = []
if jxl_dep.found()
ggaze_src += files('src/loader/backends/jxl.c')
ggaze_c_args += '-DHAVE_JXL'
ggaze_extra_deps += jxl_dep
endif
if avif_dep.found()
ggaze_src += files('src/loader/backends/avif.c')
ggaze_c_args += '-DHAVE_AVIF'
ggaze_extra_deps += avif_dep
endif
if heif_dep.found()
ggaze_src += files('src/loader/backends/heif.c')
ggaze_c_args += '-DHAVE_HEIF'
ggaze_extra_deps += heif_dep
endif
ggaze_lib = static_library('ggaze',
ggaze_src,
include_directories : [inc, src_inc],
dependencies : [gtk4_dep, glib_dep, gio_dep, adwaita_dep, gdkpixbuf_dep,
libexif_dep] + ggaze_extra_deps,
c_args : ggaze_c_args,
install : false,
)
ggaze_deps = [gtk4_dep, glib_dep, gio_dep, adwaita_dep, gdkpixbuf_dep, libexif_dep]
subdir('src')
subdir('data')
subdir('tests')
|