Skip to content

Commit 72930b8

Browse files
committed
Add wrap for poppler.
1 parent c6e0146 commit 72930b8

26 files changed

Lines changed: 2010 additions & 1 deletion

File tree

ci_config.json

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1311,6 +1311,50 @@
13111311
"pkgconf:tests=disabled"
13121312
]
13131313
},
1314+
"poppler": {
1315+
"_comment": [
1316+
"- fontconfig warns on v1 wraps; fixed in next release",
1317+
"- alpine stable doesn't know gpgmepp-dev, yet",
1318+
"- skip old dependency for Qt5 wrapper"
1319+
],
1320+
"build_options": [
1321+
"cairo:fontconfig=enabled"
1322+
],
1323+
"alpine_packages": [
1324+
"cairo-dev",
1325+
"glib-dev",
1326+
"nss-dev",
1327+
"qt6-qtbase-dev"
1328+
],
1329+
"debian_packages": [
1330+
"libcairo2-dev",
1331+
"libglib2.0-dev",
1332+
"libgpgmepp-dev",
1333+
"libnss3-dev",
1334+
"qt6-base-dev"
1335+
],
1336+
"brew_packages": [
1337+
"boost",
1338+
"gpgmepp",
1339+
"nss",
1340+
"qt@6"
1341+
],
1342+
"msys_packages": [
1343+
"boost",
1344+
"nss",
1345+
"qt6-base"
1346+
],
1347+
"build_options": [
1348+
"poppler:gobject_introspection=disabled"
1349+
],
1350+
"skip_dependency_check": [
1351+
"poppler-cpp",
1352+
"poppler-glib",
1353+
"poppler-qt5",
1354+
"poppler-qt6"
1355+
],
1356+
"fatal_warnings": false
1357+
},
13141358
"protobuf": {
13151359
"_comment": "Getting patched version elsewhere until abseil-cpp/issues/1510 is fixed, because cannot patch wrapdb version",
13161360
"msys_packages": [

releases.json

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3696,6 +3696,33 @@
36963696
"1.9.0-1"
36973697
]
36983698
},
3699+
"poppler": {
3700+
"dependency_names": [
3701+
"poppler",
3702+
"poppler-cpp",
3703+
"poppler-glib",
3704+
"poppler-qt5",
3705+
"poppler-qt6"
3706+
],
3707+
"program_names": [
3708+
"pdfattach",
3709+
"pdfdetach",
3710+
"pdffonts",
3711+
"pdfimages",
3712+
"pdfinfo",
3713+
"pdfseparate",
3714+
"pdfsig",
3715+
"pdftocairo",
3716+
"pdftohtml",
3717+
"pdftoppm",
3718+
"pdftops",
3719+
"pdftotext",
3720+
"pdfunite"
3721+
],
3722+
"versions": [
3723+
"26.03.0-1"
3724+
]
3725+
},
36993726
"protobuf": {
37003727
"dependency_names": [
37013728
"protobuf-lite",

subprojects/glib.wrap

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
[wrap-file]
22
directory = glib-2.86.4
3-
43
source_url = https://download.gnome.org/sources/glib/2.86/glib-2.86.4.tar.xz
54
source_fallback_url = https://ftp.acc.umu.se/pub/gnome/sources/glib/2.86/glib-2.86.4.tar.xz
65
source_filename = glib-2.86.4.tar.xz
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
if iconv_dep.found()
2+
poppler_cpp_library_version = '3.0.0'
3+
poppler_cpp_library_so_version = '3'
4+
5+
poppler_cpp_library_cpp_arguments = []
6+
if get_option('default_library') == 'static'
7+
poppler_cpp_library_cpp_arguments += '-DPOPPLER_CPP_STATIC_DEFINE'
8+
else
9+
poppler_cpp_library_cpp_arguments += '-DPOPPLER_CPP_EXPORTS'
10+
endif
11+
12+
poppler_cpp_library_dependencies = [
13+
iconv_dep,
14+
poppler_library_dep,
15+
]
16+
17+
poppler_cpp_library_include_directories = include_directories('.')
18+
19+
poppler_cpp_library_sources = [
20+
'poppler-destination.cpp',
21+
'poppler-document.cpp',
22+
'poppler-embedded-file.cpp',
23+
'poppler-font.cpp',
24+
'poppler-global.cpp',
25+
'poppler-image.cpp',
26+
'poppler-page.cpp',
27+
'poppler-page-renderer.cpp',
28+
'poppler-page-transition.cpp',
29+
'poppler-private.cpp',
30+
'poppler-rectangle.cpp',
31+
'poppler-toc.cpp',
32+
'poppler-version.cpp',
33+
]
34+
poppler_cpp_library_sources += configure_file(
35+
configuration: poppler_configuration,
36+
input: 'poppler-version.h.in',
37+
output: 'poppler-version.h',
38+
install: true,
39+
install_dir: get_option('includedir') / meson.project_name() / 'cpp',
40+
)
41+
poppler_cpp_library_sources += configure_file(
42+
input: poppler_exports_h_in,
43+
output: 'poppler_cpp_export.h',
44+
configuration: {
45+
'NAME': 'CPP',
46+
'PUBLIC_DEFINE': 'POPPLER_CPP_EXPORT',
47+
},
48+
install: true,
49+
install_dir: get_option('includedir') / meson.project_name() / 'cpp',
50+
)
51+
52+
poppler_cpp_library = library(
53+
'poppler-cpp',
54+
cpp_args: poppler_cpp_library_cpp_arguments,
55+
dependencies: poppler_cpp_library_dependencies,
56+
include_directories: poppler_cpp_library_include_directories,
57+
install: true,
58+
sources: poppler_cpp_library_sources,
59+
soversion: poppler_cpp_library_so_version,
60+
version: poppler_cpp_library_version,
61+
)
62+
63+
pkgconfig_module.generate(
64+
poppler_cpp_library,
65+
description: 'C++ wrapper for Poppler PDF rendering library.',
66+
)
67+
68+
poppler_cpp_library_dep = declare_dependency(
69+
link_with: poppler_cpp_library,
70+
dependencies: poppler_cpp_library_dependencies,
71+
include_directories: poppler_cpp_library_include_directories,
72+
)
73+
74+
meson.override_dependency('poppler-cpp', poppler_cpp_library_dep)
75+
76+
install_headers(
77+
'poppler-destination.h',
78+
'poppler-document.h',
79+
'poppler-embedded-file.h',
80+
'poppler-font.h',
81+
'poppler-font-private.h',
82+
'poppler-global.h',
83+
'poppler-image.h',
84+
'poppler-page.h',
85+
'poppler-page-renderer.h',
86+
'poppler-page-transition.h',
87+
'poppler-rectangle.h',
88+
'poppler-toc.h',
89+
subdir: meson.project_name() / 'cpp',
90+
)
91+
92+
subdir('tests')
93+
endif
94+
95+
summary('C++ wrapper', iconv_dep.found())
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
poppler_dump_executable = executable(
2+
'poppler-dump',
3+
dependencies: [poppler_cpp_library_dep],
4+
include_directories: utils_include_directory,
5+
sources: ['poppler-dump.cpp', utils_parseargs_cc],
6+
)
7+
8+
poppler_render_executable = executable(
9+
'poppler-render',
10+
dependencies: [poppler_cpp_library_dep],
11+
include_directories: utils_include_directory,
12+
sources: ['poppler-render.cpp', utils_parseargs_cc],
13+
)
14+
15+
# @todo fuzz tests
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
if gtk3_dep.found()
2+
poppler_glib_demo_sources = files(
3+
'annots.c',
4+
'attachments.c',
5+
'find.c',
6+
'fonts.c',
7+
'forms.c',
8+
'images.c',
9+
'info.cc',
10+
'layers.c',
11+
'links.c',
12+
'main.c',
13+
'outline.c',
14+
'page.c',
15+
'print.c',
16+
'render.c',
17+
'selections.c',
18+
'signature.c',
19+
'taggedstruct.c',
20+
'text.c',
21+
'transitions.c',
22+
'utils.c',
23+
)
24+
25+
poppler_glib_demo_executable = executable(
26+
'poppler-glib-demo',
27+
sources: poppler_glib_demo_sources,
28+
dependencies: [poppler_glib_library_dep, gtk3_dep],
29+
)
30+
endif
31+
32+
summary(' GLib demo', gtk3_dep.found())
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
if building_glib_wrapper
2+
poppler_glib_library_version = '8.31.0'
3+
poppler_glib_library_so_version = '8'
4+
5+
poppler_glib_library_include_directories = include_directories('.')
6+
7+
poppler_glib_library_sources = [
8+
poppler_cairo_sources,
9+
'poppler-action.cc',
10+
'poppler-date.cc',
11+
'poppler-document.cc',
12+
'poppler-page.cc',
13+
'poppler-attachment.cc',
14+
'poppler-form-field.cc',
15+
'poppler-annot.cc',
16+
'poppler-layer.cc',
17+
'poppler-movie.cc',
18+
'poppler-media.cc',
19+
'poppler.cc',
20+
'poppler-cached-file-loader.cc',
21+
'poppler-input-stream.cc',
22+
'poppler-structure-element.cc',
23+
]
24+
poppler_glib_library_features_h = configure_file(
25+
configuration: poppler_configuration,
26+
input: 'poppler-features.h.cmake',
27+
output: 'poppler-features.h',
28+
format: 'cmake',
29+
install: true,
30+
install_dir: get_option('includedir') / meson.project_name() / 'glib',
31+
)
32+
poppler_glib_library_sources += poppler_glib_library_features_h
33+
poppler_glib_library_macros_h = configure_file(
34+
input: poppler_exports_h_in,
35+
output: 'poppler-macros.h',
36+
configuration: {
37+
'NAME': 'GLIB',
38+
'PUBLIC_DEFINE': 'POPPLER_PUBLIC',
39+
},
40+
install: true,
41+
install_dir: get_option('includedir') / meson.project_name() / 'blib',
42+
)
43+
poppler_glib_library_sources += poppler_glib_library_macros_h
44+
45+
poppler_glib_library_headers = files(
46+
'poppler-action.h',
47+
'poppler-annot.h',
48+
'poppler-attachment.h',
49+
'poppler-date.h',
50+
'poppler-document.h',
51+
'poppler-form-field.h',
52+
'poppler-layer.h',
53+
'poppler-media.h',
54+
'poppler-movie.h',
55+
'poppler-page.h',
56+
'poppler-structure-element.h',
57+
'poppler.h',
58+
)
59+
60+
gnome_module = import('gnome')
61+
poppler_glib_library_enums = gnome_module.mkenums(
62+
'bogus',
63+
c_template: 'poppler-enums.c.template',
64+
h_template: 'poppler-enums.h.template',
65+
install_header: true,
66+
install_dir: get_option('includedir') / meson.project_name() / 'glib',
67+
sources: poppler_glib_library_headers,
68+
)
69+
poppler_glib_library_sources += poppler_glib_library_enums
70+
71+
poppler_glib_library_cpp_arguments = []
72+
if get_option('default_library') == 'static'
73+
poppler_glib_library_cpp_arguments += '-DPOPPLER_GLIB_STATIC_DEFINE'
74+
else
75+
poppler_glib_library_cpp_arguments += '-DPOPPLER_GLIB_EXPORTS'
76+
endif
77+
78+
poppler_glib_library_dependencies = [
79+
cairo_dep,
80+
gio_dep,
81+
glib_dep,
82+
gobject_dep,
83+
poppler_library_dep,
84+
]
85+
86+
poppler_glib_library = library(
87+
'poppler-glib',
88+
cpp_args: poppler_glib_library_cpp_arguments,
89+
dependencies: poppler_glib_library_dependencies,
90+
include_directories: poppler_glib_library_include_directories,
91+
install: true,
92+
sources: poppler_glib_library_sources,
93+
soversion: poppler_glib_library_so_version,
94+
version: poppler_glib_library_version,
95+
)
96+
97+
pkgconfig_module.generate(
98+
poppler_glib_library,
99+
description: 'GLib wrapper for Poppler PDF rendering library.',
100+
)
101+
102+
poppler_glib_library_dep = declare_dependency(
103+
link_with: poppler_glib_library,
104+
dependencies: poppler_glib_library_dependencies,
105+
include_directories: poppler_glib_library_include_directories,
106+
sources: [
107+
poppler_glib_library_enums,
108+
poppler_glib_library_features_h,
109+
poppler_glib_library_macros_h,
110+
],
111+
)
112+
113+
meson.override_dependency('poppler-glib', poppler_glib_library_dep)
114+
115+
install_headers(
116+
poppler_glib_library_headers,
117+
subdir: meson.project_name() / 'glib',
118+
)
119+
120+
if get_option('gobject_introspection').allowed() and get_option(
121+
'default_library',
122+
) == 'shared' or get_option(
123+
'default_library',
124+
) == 'both'
125+
summary(' GObject introspection', true)
126+
gnome_module.generate_gir(
127+
poppler_glib_library,
128+
namespace: 'Poppler',
129+
nsversion: '0.18',
130+
includes: ['GObject-2.0', 'Gio-2.0', 'cairo-1.0'],
131+
sources: poppler_glib_library_sources + poppler_glib_library_headers,
132+
header: 'poppler.h',
133+
install: true,
134+
)
135+
else
136+
summary(' GObject introspection', false)
137+
endif
138+
139+
# @todo Gtk docs
140+
141+
subdir('tests')
142+
subdir('demo')
143+
endif
144+
145+
summary('GLib wrapper', building_glib_wrapper)

0 commit comments

Comments
 (0)