comparison mupdf-source/thirdparty/leptonica/sw.cpp @ 2:b50eed0cc0ef upstream

ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4. The directory name has changed: no version number in the expanded directory now.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:43:07 +0200
parents
children
comparison
equal deleted inserted replaced
1:1d09e1dec1d9 2:b50eed0cc0ef
1 void build(Solution &s)
2 {
3 auto add_deps = [](auto &t)
4 {
5 t += "HAVE_LIBGIF"_d;
6 t += "HAVE_LIBJP2K"_d;
7 t += "HAVE_LIBJPEG"_d;
8 t += "HAVE_LIBPNG"_d;
9 t += "HAVE_LIBTIFF"_d;
10 t += "HAVE_LIBWEBP"_d;
11 t += "HAVE_LIBWEBP_ANIM"_d;
12 t += "HAVE_LIBZ"_d;
13
14 t += "org.sw.demo.gif"_dep;
15 t += "org.sw.demo.jpeg"_dep;
16 t += "org.sw.demo.uclouvain.openjpeg.openjp2"_dep;
17 t += "org.sw.demo.glennrp.png"_dep;
18 t += "org.sw.demo.tiff"_dep;
19 t += "org.sw.demo.webmproject.webp"_dep;
20 };
21
22 auto &leptonica = s.addTarget<LibraryTarget>("danbloomberg.leptonica", "1.85.0");
23 leptonica += Git("https://github.com/DanBloomberg/leptonica");
24
25 {
26 leptonica.setChecks("leptonica");
27 leptonica.ApiName = "LEPT_DLL";
28
29 leptonica +=
30 "src/.*\\.c"_rr,
31 "src/.*\\.h"_rr,
32 "src/endianness.h.in";
33
34 leptonica.Public +=
35 "src"_id;
36
37 add_deps(leptonica);
38
39 leptonica += "LIBJP2K_HEADER=\"openjpeg.h\""_d;
40 leptonica.Public += "HAVE_CONFIG_H"_d;
41
42 if (leptonica.Variables["WORDS_BIGENDIAN"] == 1)
43 leptonica.Variables["ENDIANNESS"] = "L_BIG_ENDIAN";
44 else
45 leptonica.Variables["ENDIANNESS"] = "L_LITTLE_ENDIAN";
46
47 leptonica.Variables["APPLE_UNIVERSAL_BUILD"] = "defined (__APPLE_CC__)";
48
49 leptonica.configureFile("src/endianness.h.in", "endianness.h");
50 leptonica.writeFileOnce("config_auto.h");
51
52 if (leptonica.getBuildSettings().TargetOS.Type == OSType::Windows ||
53 leptonica.getBuildSettings().TargetOS.Type == OSType::Mingw)
54 leptonica += "User32.lib"_slib, "Gdi32.lib"_slib;
55 }
56
57 auto &progs = leptonica.addDirectory("progs");
58 {
59 auto add_prog = [&s, &progs, &leptonica, &add_deps](const String &name, const Files &files) -> decltype(auto)
60 {
61 auto &t = progs.addExecutable(name);
62 t.Scope = TargetScope::Test;
63 t.setRootDirectory("prog");
64 t += files;
65 t += leptonica;
66 add_deps(t);
67 return t;
68 };
69
70 StringMap<Files> m_progs{
71 {"adaptmap_reg", {"adaptmap_reg.c"}},
72 {"adaptnorm_reg", {"adaptnorm_reg.c"}},
73 {"affine_reg", {"affine_reg.c"}},
74 {"alltests_reg", {"alltests_reg.c"}},
75 {"alphaops_reg", {"alphaops_reg.c"}},
76 {"alphaxform_reg", {"alphaxform_reg.c"}},
77 {"baseline_reg", {"baseline_reg.c"}},
78 {"bilateral1_reg", {"bilateral1_reg.c"}},
79 {"bilateral2_reg", {"bilateral2_reg.c"}},
80 {"bilinear_reg", {"bilinear_reg.c"}},
81 {"binarize_reg", {"binarize_reg.c"}},
82 {"binmorph1_reg", {"binmorph1_reg.c"}},
83 {"binmorph2_reg", {"binmorph2_reg.c"}},
84 {"binmorph3_reg", {"binmorph3_reg.c"}},
85 {"binmorph4_reg", {"binmorph4_reg.c"}},
86 {"binmorph5_reg", {"binmorph5_reg.c"}},
87 {"binmorph6_reg", {"binmorph6_reg.c"}},
88 {"blackwhite_reg", {"blackwhite_reg.c"}},
89 {"blend1_reg", {"blend1_reg.c"}},
90 {"blend2_reg", {"blend2_reg.c"}},
91 {"blend3_reg", {"blend3_reg.c"}},
92 {"blend4_reg", {"blend4_reg.c"}},
93 {"blend5_reg", {"blend5_reg.c"}},
94 {"boxa1_reg", {"boxa1_reg.c"}},
95 {"boxa2_reg", {"boxa2_reg.c"}},
96 {"boxa3_reg", {"boxa3_reg.c"}},
97 {"boxa4_reg", {"boxa4_reg.c"}},
98 {"bytea_reg", {"bytea_reg.c"}},
99 {"ccbord_reg", {"ccbord_reg.c"}},
100 {"ccthin1_reg", {"ccthin1_reg.c"}},
101 {"ccthin2_reg", {"ccthin2_reg.c"}},
102 {"checkerboard_reg", {"checkerboard_reg.c"}},
103 {"circle_reg", {"circle_reg.c"}},
104 {"cmapquant_reg", {"cmapquant_reg.c"}},
105 {"colorcontent_reg", {"colorcontent_reg.c"}},
106 {"colorfill_reg", {"colorfill_reg.c"}},
107 {"coloring_reg", {"coloring_reg.c"}},
108 {"colorize_reg", {"colorize_reg.c"}},
109 {"colormask_reg", {"colormask_reg.c"}},
110 {"colormorph_reg", {"colormorph_reg.c"}},
111 {"colorquant_reg", {"colorquant_reg.c"}},
112 {"colorseg_reg", {"colorseg_reg.c"}},
113 {"colorspace_reg", {"colorspace_reg.c"}},
114 {"compare_reg", {"compare_reg.c"}},
115 {"compfilter_reg", {"compfilter_reg.c"}},
116 {"conncomp_reg", {"conncomp_reg.c"}},
117 {"conversion_reg", {"conversion_reg.c"}},
118 {"convolve_reg", {"convolve_reg.c"}},
119 {"crop_reg", {"crop_reg.c"}},
120 {"dewarp_reg", {"dewarp_reg.c"}},
121 {"distance_reg", {"distance_reg.c"}},
122 {"dither_reg", {"dither_reg.c"}},
123 {"dna_reg", {"dna_reg.c"}},
124 {"dwamorph1_reg", {"dwamorph1_reg.c", "dwalinear.3.c", "dwalinearlow.3.c"}},
125 {"dwamorph2_reg", {"dwamorph2_reg.c", "dwalinear.3.c", "dwalinearlow.3.c"}},
126 {"edge_reg", {"edge_reg.c"}},
127 {"encoding_reg", {"encoding_reg.c"}},
128 {"enhance_reg", {"enhance_reg.c"}},
129 {"equal_reg", {"equal_reg.c"}},
130 {"expand_reg", {"expand_reg.c"}},
131 {"extrema_reg", {"extrema_reg.c"}},
132 {"falsecolor_reg", {"falsecolor_reg.c"}},
133 {"fhmtauto_reg", {"fhmtauto_reg.c"}},
134 {"files_reg", {"files_reg.c"}},
135 {"findcorners_reg", {"findcorners_reg.c"}},
136 {"findpattern1_reg", {"findpattern1_reg.c"}},
137 {"findpattern2_reg", {"findpattern2_reg.c"}},
138 {"flipdetect_reg", {"flipdetect_reg.c"}},
139 {"fmorphauto_reg", {"fmorphauto_reg.c"}},
140 {"fpix1_reg", {"fpix1_reg.c"}},
141 {"fpix2_reg", {"fpix2_reg.c"}},
142 {"genfonts_reg", {"genfonts_reg.c"}},
143 {"gifio_reg", {"gifio_reg.c"}},
144 {"grayfill_reg", {"grayfill_reg.c"}},
145 {"graymorph1_reg", {"graymorph1_reg.c"}},
146 {"graymorph2_reg", {"graymorph2_reg.c"}},
147 {"grayquant_reg", {"grayquant_reg.c"}},
148 {"hardlight_reg", {"hardlight_reg.c"}},
149 {"hash_reg", {"hash_reg.c"}},
150 {"heap_reg", {"heap_reg.c"}},
151 {"insert_reg", {"insert_reg.c"}},
152 {"ioformats_reg", {"ioformats_reg.c"}},
153 {"iomisc_reg", {"iomisc_reg.c"}},
154 {"italic_reg", {"italic_reg.c"}},
155 {"jbclass_reg", {"jbclass_reg.c"}},
156 {"jp2kio_reg", {"jp2kio_reg.c"}},
157 {"jpegio_reg", {"jpegio_reg.c"}},
158 {"kernel_reg", {"kernel_reg.c"}},
159 {"label_reg", {"label_reg.c"}},
160 {"lineremoval_reg", {"lineremoval_reg.c"}},
161 {"locminmax_reg", {"locminmax_reg.c"}},
162 {"logicops_reg", {"logicops_reg.c"}},
163 {"lowaccess_reg", {"lowaccess_reg.c"}},
164 {"lowsat_reg", {"lowsat_reg.c"}},
165 {"maze_reg", {"maze_reg.c"}},
166 {"mtiff_reg", {"mtiff_reg.c"}},
167 {"multitype_reg", {"multitype_reg.c"}},
168 {"nearline_reg", {"nearline_reg.c"}},
169 {"newspaper_reg", {"newspaper_reg.c"}},
170 {"numa1_reg", {"numa1_reg.c"}},
171 {"numa2_reg", {"numa2_reg.c"}},
172 {"numa3_reg", {"numa3_reg.c"}},
173 {"overlap_reg", {"overlap_reg.c"}},
174 {"pageseg_reg", {"pageseg_reg.c"}},
175 {"paintmask_reg", {"paintmask_reg.c"}},
176 {"paint_reg", {"paint_reg.c"}},
177 {"partition_reg", {"partition_reg.c"}},
178 {"pdfio1_reg", {"pdfio1_reg.c"}},
179 {"pdfio2_reg", {"pdfio2_reg.c"}},
180 {"pdfseg_reg", {"pdfseg_reg.c"}},
181 {"pixa1_reg", {"pixa1_reg.c"}},
182 {"pixa2_reg", {"pixa2_reg.c"}},
183 {"pixadisp_reg", {"pixadisp_reg.c"}},
184 {"pixalloc_reg", {"pixalloc_reg.c"}},
185 {"pixcomp_reg", {"pixcomp_reg.c"}},
186 {"pixmem_reg", {"pixmem_reg.c"}},
187 {"pixserial_reg", {"pixserial_reg.c"}},
188 {"pixtile_reg", {"pixtile_reg.c"}},
189 {"pngio_reg", {"pngio_reg.c"}},
190 {"pnmio_reg", {"pnmio_reg.c"}},
191 {"projection_reg", {"projection_reg.c"}},
192 {"projective_reg", {"projective_reg.c"}},
193 {"psioseg_reg", {"psioseg_reg.c"}},
194 {"psio_reg", {"psio_reg.c"}},
195 {"pta_reg", {"pta_reg.c"}},
196 {"ptra1_reg", {"ptra1_reg.c"}},
197 {"ptra2_reg", {"ptra2_reg.c"}},
198 {"quadtree_reg", {"quadtree_reg.c"}},
199 {"rankbin_reg", {"rankbin_reg.c"}},
200 {"rankhisto_reg", {"rankhisto_reg.c"}},
201 {"rank_reg", {"rank_reg.c"}},
202 {"rasteropip_reg", {"rasteropip_reg.c"}},
203 {"rasterop_reg", {"rasterop_reg.c"}},
204 {"rectangle_reg", {"rectangle_reg.c"}},
205 {"rotate1_reg", {"rotate1_reg.c"}},
206 {"rotate2_reg", {"rotate2_reg.c"}},
207 {"scale_reg", {"scale_reg.c"}},
208 {"selio_reg", {"selio_reg.c"}},
209 {"shear1_reg", {"shear1_reg.c"}},
210 {"shear2_reg", {"shear2_reg.c"}},
211 {"skew_reg", {"skew_reg.c"}},
212 {"smallpix_reg", {"smallpix_reg.c"}},
213 {"smoothedge_reg", {"smoothedge_reg.c"}},
214 {"speckle_reg", {"speckle_reg.c"}},
215 {"splitcomp_reg", {"splitcomp_reg.c"}},
216 {"string_reg", {"string_reg.c"}},
217 {"subpixel_reg", {"subpixel_reg.c"}},
218 {"texturefill_reg", {"texturefill_reg.c"}},
219 {"threshnorm_reg", {"threshnorm_reg.c"}},
220 {"translate_reg", {"translate_reg.c"}},
221 {"warper_reg", {"warper_reg.c"}},
222 {"watershed_reg", {"watershed_reg.c"}},
223 {"webpio_reg", {"webpio_reg.c"}},
224 {"webpanimio_reg", {"webpanimio_reg.c"}},
225 {"wordboxes_reg", {"wordboxes_reg.c"}},
226 {"writetext_reg", {"writetext_reg.c"}},
227 {"xformbox_reg", {"xformbox_reg.c"}},
228 {"adaptmap_dark", {"adaptmap_dark.c"}},
229 {"arabic_lines", {"arabic_lines.c"}},
230 {"arithtest", {"arithtest.c"}},
231 {"autogentest1", {"autogentest1.c"}},
232 {"autogentest2", {"autogentest2.c", "autogen.137.c"}},
233 {"barcodetest", {"barcodetest.c"}},
234 {"binarize_set", {"binarize_set.c"}},
235 {"binarizefiles", {"binarizefiles.c"}},
236 {"bincompare", {"bincompare.c"}},
237 {"blendcmaptest", {"blendcmaptest.c"}},
238 {"buffertest", {"buffertest.c"}},
239 {"ccbordtest", {"ccbordtest.c"}},
240 {"cctest1", {"cctest1.c"}},
241 {"cleanpdf", {"cleanpdf.c"}},
242 {"colorsegtest", {"colorsegtest.c"}},
243 {"comparepages", {"comparepages.c"}},
244 {"comparepixa", {"comparepixa.c"}},
245 {"comparetest", {"comparetest.c"}},
246 {"compresspdf", {"compresspdf.c"}},
247 {"contrasttest", {"contrasttest.c"}},
248 {"convertfilestopdf", {"convertfilestopdf.c"}},
249 {"convertfilestops", {"convertfilestops.c"}},
250 {"convertformat", {"convertformat.c"}},
251 {"convertsegfilestopdf", {"convertsegfilestopdf.c"}},
252 {"convertsegfilestops", {"convertsegfilestops.c"}},
253 {"converttogray", {"converttogray.c"}},
254 {"converttopdf", {"converttopdf.c"}},
255 {"converttops", {"converttops.c"}},
256 {"cornertest", {"cornertest.c"}},
257 {"corrupttest", {"corrupttest.c"}},
258 {"croppdf", {"croppdf.c"}},
259 {"croptext", {"croptext.c"}},
260 {"deskew_it", {"deskew_it.c"}},
261 {"dewarprules", {"dewarprules.c"}},
262 {"dewarptest1", {"dewarptest1.c"}},
263 {"dewarptest2", {"dewarptest2.c"}},
264 {"dewarptest3", {"dewarptest3.c"}},
265 {"dewarptest4", {"dewarptest4.c"}},
266 {"dewarptest5", {"dewarptest5.c"}},
267 {"digitprep1", {"digitprep1.c"}},
268 {"displayboxa", {"displayboxa.c"}},
269 {"displayboxes_on_pixa", {"displayboxes_on_pixa.c"}},
270 {"displaypix", {"displaypix.c"}},
271 {"displaypixa", {"displaypixa.c"}},
272 {"dwalineargen", {"dwalineargen.c"}},
273 {"fcombautogen", {"fcombautogen.c"}},
274 {"fhmtautogen", {"fhmtautogen.c"}},
275 {"fileinfo", {"fileinfo.c"}},
276 {"findbinding", {"findbinding.c"}},
277 {"find_colorregions", {"find_colorregions.c"}},
278 {"findpattern1", {"findpattern1.c"}},
279 {"findpattern2", {"findpattern2.c"}},
280 {"findpattern3", {"findpattern3.c"}},
281 {"fmorphautogen", {"fmorphautogen.c"}},
282 {"fpixcontours", {"fpixcontours.c"}},
283 {"gammatest", {"gammatest.c"}},
284 {"graphicstest", {"graphicstest.c"}},
285 {"graymorphtest", {"graymorphtest.c"}},
286 {"hashtest", {"hashtest.c"}},
287 {"histoduptest", {"histoduptest.c"}},
288 {"histotest", {"histotest.c"}},
289 {"htmlviewer", {"htmlviewer.c"}},
290 {"imagetops", {"imagetops.c"}},
291 {"jbcorrelation", {"jbcorrelation.c"}},
292 {"jbrankhaus", {"jbrankhaus.c"}},
293 {"jbwords", {"jbwords.c"}},
294 {"lightcolortest", {"lightcolortest.c"}},
295 {"listtest", {"listtest.c"}},
296 {"livre_adapt", {"livre_adapt.c"}},
297 {"livre_hmt", {"livre_hmt.c"}},
298 {"livre_makefigs", {"livre_makefigs.c"}},
299 {"livre_orient", {"livre_orient.c"}},
300 {"livre_pageseg", {"livre_pageseg.c"}},
301 {"livre_seedgen", {"livre_seedgen.c"}},
302 {"livre_tophat", {"livre_tophat.c"}},
303 {"maketile", {"maketile.c"}},
304 {"maptest", {"maptest.c"}},
305 {"messagetest", {"messagetest.c"}},
306 {"misctest1", {"misctest1.c"}},
307 {"misctest2", {"misctest2.c"}},
308 {"modifyhuesat", {"modifyhuesat.c"}},
309 {"morphseq_reg", {"morphseq_reg.c"}},
310 {"morphtest1", {"morphtest1.c"}},
311 {"numaranktest", {"numaranktest.c"}},
312 {"otsutest1", {"otsutest1.c"}},
313 {"otsutest2", {"otsutest2.c"}},
314 {"pagesegtest1", {"pagesegtest1.c"}},
315 {"pagesegtest2", {"pagesegtest2.c"}},
316 {"partifytest", {"partifytest.c"}},
317 {"partitiontest", {"partitiontest.c"}},
318 {"percolatetest", {"percolatetest.c"}},
319 {"pixaatest", {"pixaatest.c"}},
320 {"pixafileinfo", {"pixafileinfo.c"}},
321 {"plottest", {"plottest.c"}},
322 {"printimage", {"printimage.c"}},
323 {"printsplitimage", {"printsplitimage.c"}},
324 {"printtiff", {"printtiff.c"}},
325 {"rasteroptest", {"rasteroptest.c"}},
326 {"rbtreetest", {"rbtreetest.c"}},
327 {"recog_bootnum1", {"recog_bootnum1.c"}},
328 {"recog_bootnum2", {"recog_bootnum2.c"}},
329 {"recog_bootnum3", {"recog_bootnum3.c"}},
330 {"recogsort", {"recogsort.c"}},
331 {"recogtest1", {"recogtest1.c"}},
332 {"recogtest2", {"recogtest2.c"}},
333 {"recogtest3", {"recogtest3.c"}},
334 {"recogtest4", {"recogtest4.c"}},
335 {"recogtest5", {"recogtest5.c"}},
336 {"recogtest6", {"recogtest6.c"}},
337 {"recogtest7", {"recogtest7.c"}},
338 {"reducetest", {"reducetest.c"}},
339 {"removecmap", {"removecmap.c"}},
340 {"renderfonts", {"renderfonts.c"}},
341 {"replacebytes", {"replacebytes.c"}},
342 {"rotatefastalt", {"rotatefastalt.c"}},
343 {"rotate_it", {"rotate_it.c"}},
344 {"rotateorthtest1", {"rotateorthtest1.c"}},
345 {"rotateorth_reg", {"rotateorth_reg.c"}},
346 {"rotatetest1", {"rotatetest1.c"}},
347 {"runlengthtest", {"runlengthtest.c"}},
348 {"scaleandtile", {"scaleandtile.c"}},
349 {"scaleimages", {"scaleimages.c"}},
350 {"scale_it", {"scale_it.c"}},
351 {"scaletest1", {"scaletest1.c"}},
352 {"scaletest2", {"scaletest2.c"}},
353 {"seedfilltest", {"seedfilltest.c"}},
354 {"seedspread_reg", {"seedspread_reg.c"}},
355 {"settest", {"settest.c"}},
356 {"sharptest", {"sharptest.c"}},
357 {"sheartest", {"sheartest.c"}},
358 {"showedges", {"showedges.c"}},
359 {"skewtest", {"skewtest.c"}},
360 {"sorttest", {"sorttest.c"}},
361 {"splitimage2pdf", {"splitimage2pdf.c"}},
362 {"splitpdf", {"splitpdf.c"}},
363 {"sudokutest", {"sudokutest.c"}},
364 {"textorient", {"textorient.c"}},
365 {"tiffpdftest", {"tiffpdftest.c"}},
366 {"trctest", {"trctest.c"}},
367 {"underlinetest", {"underlinetest.c"}},
368 {"warpertest", {"warpertest.c"}},
369 {"wordsinorder", {"wordsinorder.c"}},
370 {"writemtiff", {"writemtiff.c"}},
371 {"xtractprotos", {"xtractprotos.c"}},
372 {"yuvtest", {"yuvtest.c"}},
373 };
374
375 for (auto &[p, files] : m_progs)
376 add_prog(p, files);
377 }
378 }
379 #pragma optimize("", on)
380
381 void check(Checker &c)
382 {
383 auto &s = c.addSet("leptonica");
384 s.checkFunctionExists("fmemopen");
385 s.checkFunctionExists("fstatat");
386 s.checkFunctionExists("dirfd");
387 s.checkIncludeExists("dlfcn.h");
388 s.checkIncludeExists("inttypes.h");
389 s.checkIncludeExists("memory.h");
390 s.checkIncludeExists("stdint.h");
391 s.checkIncludeExists("stdlib.h");
392 s.checkIncludeExists("strings.h");
393 s.checkIncludeExists("string.h");
394 s.checkIncludeExists("sys/stat.h");
395 s.checkIncludeExists("sys/types.h");
396 s.checkIncludeExists("unistd.h");
397 s.checkTypeSize("size_t");
398 s.checkTypeSize("void *");
399 }