comparison mupdf-source/thirdparty/tesseract/Makefile.am @ 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 ## run autogen.sh to create Makefile.in from this file
2 ACLOCAL_AMFLAGS = -I m4
3
4 .PHONY: doc html install-langs ScrollView.jar install-jars pdf training
5
6 CLEANFILES =
7
8 SUBDIRS = . tessdata
9 if MINGW
10 SUBDIRS += nsis
11 endif
12
13 EXTRA_DIST = README.md LICENSE
14 EXTRA_DIST += aclocal.m4 config configure.ac autogen.sh
15 EXTRA_DIST += tesseract.pc.in doc
16 if !GRAPHICS_DISABLED
17 EXTRA_DIST += java
18 endif
19 EXTRA_DIST += CMakeLists.txt tesseract.pc.cmake cmake VERSION
20
21 DIST_SUBDIRS = $(SUBDIRS)
22
23 EXTRA_PROGRAMS =
24
25 uninstall-hook:
26 rm -rf $(DESTDIR)$(pkgincludedir)
27
28 dist-hook:
29 # added using EXTRA_DIST. $(distdir)/tessdata would in
30 # theory suffice.
31 rm -rf `find $(distdir) -name .deps -type d`
32 -rm -f $(distdir)/*/Makefile $(distdir)/*/*/Makefile
33 rm -f `find $(distdir) -name '*~'`
34 rm -rf $(distdir)/doc/html/* $(distdir)/doc/*.log
35
36 if !GRAPHICS_DISABLED
37 ScrollView.jar:
38 @cd "$(top_builddir)/java" && $(MAKE) $@
39
40 install-jars:
41 @cd "$(top_builddir)/java" && $(MAKE) $@
42 endif
43
44 doc:
45 -srcdir="$(top_srcdir)" builddir="$(top_builddir)" \
46 version="@PACKAGE_VERSION@" name="@PACKAGE_NAME@" \
47 doxygen $(top_srcdir)/doc/Doxyfile
48
49 doc-pack: doc
50 -chmod a+r $(top_builddir)/doc/html/*
51 @tar --create --directory=$(top_builddir)/doc/html --verbose --file=- . | gzip -c -9 > $(top_builddir)/@PACKAGE_NAME@-@PACKAGE_VERSION@-doc-html.tar.gz;
52
53 doc-clean:
54 rm -rf $(top_builddir)/doc/html/*
55
56 if MINGW
57 winsetup: training ScrollView.jar
58 @cd "$(top_builddir)/nsis" && $(MAKE) winsetup
59 endif
60
61 pkgconfigdir = $(libdir)/pkgconfig
62 pkgconfig_DATA = tesseract.pc
63
64 pkginclude_HEADERS = $(top_builddir)/include/tesseract/version.h
65 pkginclude_HEADERS += include/tesseract/baseapi.h
66 pkginclude_HEADERS += include/tesseract/capi.h
67 pkginclude_HEADERS += include/tesseract/export.h
68 pkginclude_HEADERS += include/tesseract/ltrresultiterator.h
69 pkginclude_HEADERS += include/tesseract/ocrclass.h
70 pkginclude_HEADERS += include/tesseract/osdetect.h
71 pkginclude_HEADERS += include/tesseract/pageiterator.h
72 pkginclude_HEADERS += include/tesseract/publictypes.h
73 pkginclude_HEADERS += include/tesseract/renderer.h
74 pkginclude_HEADERS += include/tesseract/resultiterator.h
75 pkginclude_HEADERS += include/tesseract/unichar.h
76
77 # Rules for all subdirectories.
78
79 noinst_HEADERS =
80 noinst_LTLIBRARIES =
81
82 AM_CPPFLAGS += -I$(top_srcdir)/include
83 AM_CPPFLAGS += -I$(top_builddir)/include
84 if VISIBILITY
85 AM_CPPFLAGS += -DTESS_EXPORTS
86 AM_CPPFLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -fPIC
87 endif
88
89 AM_CXXFLAGS = $(OPENMP_CXXFLAGS)
90
91 # Rules for src/api.
92
93 libtesseract_la_CPPFLAGS = $(AM_CPPFLAGS)
94 libtesseract_la_CPPFLAGS += -DTESS_COMMON_TRAINING_API=
95 libtesseract_la_CPPFLAGS += -I$(top_srcdir)/src/arch
96 libtesseract_la_CPPFLAGS += -I$(top_srcdir)/src/ccmain
97 libtesseract_la_CPPFLAGS += -I$(top_srcdir)/src/ccstruct
98 libtesseract_la_CPPFLAGS += -I$(top_srcdir)/src/ccutil
99 libtesseract_la_CPPFLAGS += -I$(top_srcdir)/src/classify
100 libtesseract_la_CPPFLAGS += -I$(top_srcdir)/src/cutil
101 libtesseract_la_CPPFLAGS += -I$(top_srcdir)/src/dict
102 libtesseract_la_CPPFLAGS += -I$(top_srcdir)/src/lstm
103 libtesseract_la_CPPFLAGS += -I$(top_srcdir)/src/textord
104 libtesseract_la_CPPFLAGS += -I$(top_srcdir)/src/training/common
105 libtesseract_la_CPPFLAGS += -I$(top_srcdir)/src/viewer
106 libtesseract_la_CPPFLAGS += -I$(top_srcdir)/src/wordrec
107 libtesseract_la_CPPFLAGS += $(libcurl_CFLAGS)
108
109 lib_LTLIBRARIES = libtesseract.la
110 libtesseract_la_LDFLAGS = $(LEPTONICA_LIBS)
111 libtesseract_la_LDFLAGS += $(libarchive_LIBS)
112 libtesseract_la_LDFLAGS += $(libcurl_LIBS)
113 if T_WIN
114 libtesseract_la_LDFLAGS += -no-undefined -lws2_32
115 else
116 libtesseract_la_LDFLAGS += $(NOUNDEFINED)
117 endif
118 libtesseract_la_LDFLAGS += -version-info $(GENERIC_LIBRARY_VERSION)
119
120 libtesseract_la_SOURCES = src/api/baseapi.cpp
121 libtesseract_la_SOURCES += src/api/altorenderer.cpp
122 libtesseract_la_SOURCES += src/api/pagerenderer.cpp
123 libtesseract_la_SOURCES += src/api/capi.cpp
124 libtesseract_la_SOURCES += src/api/hocrrenderer.cpp
125 libtesseract_la_SOURCES += src/api/lstmboxrenderer.cpp
126 libtesseract_la_SOURCES += src/api/pdfrenderer.cpp
127 libtesseract_la_SOURCES += src/api/renderer.cpp
128 libtesseract_la_SOURCES += src/api/wordstrboxrenderer.cpp
129
130 libtesseract_la_LIBADD = libtesseract_ccutil.la
131 libtesseract_la_LIBADD += libtesseract_lstm.la
132 libtesseract_la_LIBADD += libtesseract_native.la
133
134 # Rules for src/arch.
135
136 noinst_HEADERS += src/arch/dotproduct.h
137 noinst_HEADERS += src/arch/intsimdmatrix.h
138 noinst_HEADERS += src/arch/simddetect.h
139
140 noinst_LTLIBRARIES += libtesseract_native.la
141
142 libtesseract_native_la_CXXFLAGS = -O3 -ffast-math
143 if OPENMP_SIMD
144 libtesseract_native_la_CXXFLAGS += -fopenmp-simd -DOPENMP_SIMD
145 endif
146 libtesseract_native_la_CXXFLAGS += -I$(top_srcdir)/src/ccutil
147 libtesseract_native_la_SOURCES = src/arch/dotproduct.cpp
148
149 if HAVE_AVX
150 libtesseract_avx_la_CXXFLAGS = -mavx
151 libtesseract_avx_la_CXXFLAGS += -I$(top_srcdir)/src/ccutil
152 libtesseract_avx_la_SOURCES = src/arch/dotproductavx.cpp
153 libtesseract_la_LIBADD += libtesseract_avx.la
154 noinst_LTLIBRARIES += libtesseract_avx.la
155 endif
156
157 if HAVE_AVX2
158 libtesseract_avx2_la_CXXFLAGS = -mavx2
159 libtesseract_avx2_la_CXXFLAGS += -I$(top_srcdir)/src/ccutil
160 libtesseract_avx2_la_SOURCES = src/arch/intsimdmatrixavx2.cpp
161 libtesseract_la_LIBADD += libtesseract_avx2.la
162 noinst_LTLIBRARIES += libtesseract_avx2.la
163 endif
164
165 if HAVE_AVX512F
166 libtesseract_avx512_la_CXXFLAGS = -mavx512f
167 libtesseract_avx512_la_CXXFLAGS += -I$(top_srcdir)/src/ccutil
168 libtesseract_avx512_la_SOURCES = src/arch/dotproductavx512.cpp
169 libtesseract_la_LIBADD += libtesseract_avx512.la
170 noinst_LTLIBRARIES += libtesseract_avx512.la
171 endif
172
173 if HAVE_FMA
174 libtesseract_fma_la_CXXFLAGS = -mfma
175 libtesseract_fma_la_CXXFLAGS += -I$(top_srcdir)/src/ccutil
176 libtesseract_fma_la_SOURCES = src/arch/dotproductfma.cpp
177 libtesseract_la_LIBADD += libtesseract_fma.la
178 noinst_LTLIBRARIES += libtesseract_fma.la
179 endif
180
181 if HAVE_SSE4_1
182 libtesseract_sse_la_CXXFLAGS = -msse4.1
183 libtesseract_sse_la_CXXFLAGS += -I$(top_srcdir)/src/ccutil
184 libtesseract_sse_la_SOURCES = src/arch/dotproductsse.cpp src/arch/intsimdmatrixsse.cpp
185 libtesseract_la_LIBADD += libtesseract_sse.la
186 noinst_LTLIBRARIES += libtesseract_sse.la
187 endif
188
189 if HAVE_NEON
190 libtesseract_neon_la_CXXFLAGS = $(NEON_CXXFLAGS)
191 libtesseract_neon_la_CXXFLAGS += -O3
192 if OPENMP_SIMD
193 libtesseract_neon_la_CXXFLAGS += -fopenmp-simd -DOPENMP_SIMD
194 endif
195 libtesseract_neon_la_CXXFLAGS += -I$(top_srcdir)/src/ccutil
196 libtesseract_neon_la_SOURCES = src/arch/intsimdmatrixneon.cpp
197 libtesseract_neon_la_SOURCES += src/arch/dotproductneon.cpp
198 libtesseract_la_LIBADD += libtesseract_neon.la
199 noinst_LTLIBRARIES += libtesseract_neon.la
200 endif
201
202 if HAVE_RVV
203 libtesseract_rvv_la_CXXFLAGS = $(RVV_CXXFLAGS)
204 libtesseract_rvv_la_CXXFLAGS += -O3
205 libtesseract_rvv_la_CXXFLAGS += -I$(top_srcdir)/src/ccutil
206 libtesseract_rvv_la_SOURCES = src/arch/intsimdmatrixrvv.cpp
207 libtesseract_la_LIBADD += libtesseract_rvv.la
208 noinst_LTLIBRARIES += libtesseract_rvv.la
209 endif
210
211 libtesseract_la_SOURCES += src/arch/intsimdmatrix.cpp
212 libtesseract_la_SOURCES += src/arch/simddetect.cpp
213
214 # Rules for src/ccmain.
215
216 noinst_HEADERS += src/ccmain/control.h
217 noinst_HEADERS += src/ccmain/mutableiterator.h
218 noinst_HEADERS += src/ccmain/output.h
219 noinst_HEADERS += src/ccmain/paragraphs.h
220 noinst_HEADERS += src/ccmain/paragraphs_internal.h
221 noinst_HEADERS += src/ccmain/paramsd.h
222 noinst_HEADERS += src/ccmain/pgedit.h
223 noinst_HEADERS += src/ccmain/tesseractclass.h
224 noinst_HEADERS += src/ccmain/tessvars.h
225 noinst_HEADERS += src/ccmain/thresholder.h
226 noinst_HEADERS += src/ccmain/werdit.h
227 if !DISABLED_LEGACY_ENGINE
228 noinst_HEADERS += src/ccmain/docqual.h
229 noinst_HEADERS += src/ccmain/equationdetect.h
230 noinst_HEADERS += src/ccmain/fixspace.h
231 noinst_HEADERS += src/ccmain/reject.h
232 endif
233
234 libtesseract_la_SOURCES += src/ccmain/applybox.cpp
235 libtesseract_la_SOURCES += src/ccmain/control.cpp
236 libtesseract_la_SOURCES += src/ccmain/linerec.cpp
237 libtesseract_la_SOURCES += src/ccmain/ltrresultiterator.cpp
238 libtesseract_la_SOURCES += src/ccmain/mutableiterator.cpp
239 libtesseract_la_SOURCES += src/ccmain/output.cpp
240 libtesseract_la_SOURCES += src/ccmain/pageiterator.cpp
241 libtesseract_la_SOURCES += src/ccmain/pagesegmain.cpp
242 libtesseract_la_SOURCES += src/ccmain/pagewalk.cpp
243 libtesseract_la_SOURCES += src/ccmain/paragraphs.cpp
244 if !GRAPHICS_DISABLED
245 libtesseract_la_SOURCES += src/ccmain/paramsd.cpp
246 libtesseract_la_SOURCES += src/ccmain/pgedit.cpp
247 endif
248 libtesseract_la_SOURCES += src/ccmain/reject.cpp
249 libtesseract_la_SOURCES += src/ccmain/resultiterator.cpp
250 libtesseract_la_SOURCES += src/ccmain/tessedit.cpp
251 libtesseract_la_SOURCES += src/ccmain/tesseractclass.cpp
252 libtesseract_la_SOURCES += src/ccmain/tessvars.cpp
253 libtesseract_la_SOURCES += src/ccmain/thresholder.cpp
254 libtesseract_la_SOURCES += src/ccmain/werdit.cpp
255 if !DISABLED_LEGACY_ENGINE
256 libtesseract_la_SOURCES += src/ccmain/adaptions.cpp
257 libtesseract_la_SOURCES += src/ccmain/docqual.cpp
258 libtesseract_la_SOURCES += src/ccmain/equationdetect.cpp
259 libtesseract_la_SOURCES += src/ccmain/fixspace.cpp
260 libtesseract_la_SOURCES += src/ccmain/fixxht.cpp
261 libtesseract_la_SOURCES += src/ccmain/osdetect.cpp
262 libtesseract_la_SOURCES += src/ccmain/par_control.cpp
263 libtesseract_la_SOURCES += src/ccmain/recogtraining.cpp
264 libtesseract_la_SOURCES += src/ccmain/superscript.cpp
265 libtesseract_la_SOURCES += src/ccmain/tessbox.cpp
266 libtesseract_la_SOURCES += src/ccmain/tfacepp.cpp
267 endif
268
269 # Rules for src/ccstruct.
270
271 noinst_HEADERS += src/ccstruct/blamer.h
272 noinst_HEADERS += src/ccstruct/blobbox.h
273 noinst_HEADERS += src/ccstruct/blobs.h
274 noinst_HEADERS += src/ccstruct/blread.h
275 noinst_HEADERS += src/ccstruct/boxread.h
276 noinst_HEADERS += src/ccstruct/boxword.h
277 noinst_HEADERS += src/ccstruct/ccstruct.h
278 noinst_HEADERS += src/ccstruct/coutln.h
279 noinst_HEADERS += src/ccstruct/crakedge.h
280 noinst_HEADERS += src/ccstruct/debugpixa.h
281 noinst_HEADERS += src/ccstruct/detlinefit.h
282 noinst_HEADERS += src/ccstruct/dppoint.h
283 noinst_HEADERS += src/ccstruct/image.h
284 noinst_HEADERS += src/ccstruct/imagedata.h
285 noinst_HEADERS += src/ccstruct/linlsq.h
286 noinst_HEADERS += src/ccstruct/matrix.h
287 noinst_HEADERS += src/ccstruct/mod128.h
288 noinst_HEADERS += src/ccstruct/normalis.h
289 noinst_HEADERS += src/ccstruct/ocrblock.h
290 noinst_HEADERS += src/ccstruct/ocrpara.h
291 noinst_HEADERS += src/ccstruct/ocrrow.h
292 noinst_HEADERS += src/ccstruct/otsuthr.h
293 noinst_HEADERS += src/ccstruct/pageres.h
294 noinst_HEADERS += src/ccstruct/pdblock.h
295 noinst_HEADERS += src/ccstruct/points.h
296 noinst_HEADERS += src/ccstruct/polyaprx.h
297 noinst_HEADERS += src/ccstruct/polyblk.h
298 noinst_HEADERS += src/ccstruct/quadlsq.h
299 noinst_HEADERS += src/ccstruct/quadratc.h
300 noinst_HEADERS += src/ccstruct/quspline.h
301 noinst_HEADERS += src/ccstruct/ratngs.h
302 noinst_HEADERS += src/ccstruct/rect.h
303 noinst_HEADERS += src/ccstruct/rejctmap.h
304 noinst_HEADERS += src/ccstruct/seam.h
305 noinst_HEADERS += src/ccstruct/split.h
306 noinst_HEADERS += src/ccstruct/statistc.h
307 noinst_HEADERS += src/ccstruct/stepblob.h
308 noinst_HEADERS += src/ccstruct/werd.h
309 if !DISABLED_LEGACY_ENGINE
310 noinst_HEADERS += src/ccstruct/fontinfo.h
311 noinst_HEADERS += src/ccstruct/params_training_featdef.h
312 endif
313
314 libtesseract_la_SOURCES += src/ccstruct/blamer.cpp
315 libtesseract_la_SOURCES += src/ccstruct/blobbox.cpp
316 libtesseract_la_SOURCES += src/ccstruct/blobs.cpp
317 libtesseract_la_SOURCES += src/ccstruct/blread.cpp
318 libtesseract_la_SOURCES += src/ccstruct/boxread.cpp
319 libtesseract_la_SOURCES += src/ccstruct/boxword.cpp
320 libtesseract_la_SOURCES += src/ccstruct/ccstruct.cpp
321 libtesseract_la_SOURCES += src/ccstruct/coutln.cpp
322 libtesseract_la_SOURCES += src/ccstruct/detlinefit.cpp
323 libtesseract_la_SOURCES += src/ccstruct/dppoint.cpp
324 libtesseract_la_SOURCES += src/ccstruct/image.cpp
325 libtesseract_la_SOURCES += src/ccstruct/imagedata.cpp
326 libtesseract_la_SOURCES += src/ccstruct/linlsq.cpp
327 libtesseract_la_SOURCES += src/ccstruct/matrix.cpp
328 libtesseract_la_SOURCES += src/ccstruct/mod128.cpp
329 libtesseract_la_SOURCES += src/ccstruct/normalis.cpp
330 libtesseract_la_SOURCES += src/ccstruct/ocrblock.cpp
331 libtesseract_la_SOURCES += src/ccstruct/ocrpara.cpp
332 libtesseract_la_SOURCES += src/ccstruct/ocrrow.cpp
333 libtesseract_la_SOURCES += src/ccstruct/otsuthr.cpp
334 libtesseract_la_SOURCES += src/ccstruct/pageres.cpp
335 libtesseract_la_SOURCES += src/ccstruct/pdblock.cpp
336 libtesseract_la_SOURCES += src/ccstruct/points.cpp
337 libtesseract_la_SOURCES += src/ccstruct/polyaprx.cpp
338 libtesseract_la_SOURCES += src/ccstruct/polyblk.cpp
339 libtesseract_la_SOURCES += src/ccstruct/quadlsq.cpp
340 libtesseract_la_SOURCES += src/ccstruct/quspline.cpp
341 libtesseract_la_SOURCES += src/ccstruct/ratngs.cpp
342 libtesseract_la_SOURCES += src/ccstruct/rect.cpp
343 libtesseract_la_SOURCES += src/ccstruct/rejctmap.cpp
344 libtesseract_la_SOURCES += src/ccstruct/seam.cpp
345 libtesseract_la_SOURCES += src/ccstruct/split.cpp
346 libtesseract_la_SOURCES += src/ccstruct/statistc.cpp
347 libtesseract_la_SOURCES += src/ccstruct/stepblob.cpp
348 libtesseract_la_SOURCES += src/ccstruct/werd.cpp
349
350 if !DISABLED_LEGACY_ENGINE
351 libtesseract_la_SOURCES += src/ccstruct/fontinfo.cpp
352 libtesseract_la_SOURCES += src/ccstruct/params_training_featdef.cpp
353 endif
354
355 # Rules for src/ccutil
356
357 libtesseract_ccutil_la_CPPFLAGS = $(AM_CPPFLAGS)
358 libtesseract_ccutil_la_CPPFLAGS += $(libarchive_CFLAGS)
359 if !NO_TESSDATA_PREFIX
360 libtesseract_ccutil_la_CPPFLAGS += -DTESSDATA_PREFIX='"@datadir@"'
361 endif
362
363 noinst_HEADERS += src/ccutil/ccutil.h
364 noinst_HEADERS += src/ccutil/clst.h
365 noinst_HEADERS += src/ccutil/elst2.h
366 noinst_HEADERS += src/ccutil/elst.h
367 noinst_HEADERS += src/ccutil/errcode.h
368 noinst_HEADERS += src/ccutil/fileerr.h
369 noinst_HEADERS += src/ccutil/genericheap.h
370 noinst_HEADERS += src/ccutil/genericvector.h
371 noinst_HEADERS += src/ccutil/helpers.h
372 noinst_HEADERS += src/ccutil/host.h
373 noinst_HEADERS += src/ccutil/kdpair.h
374 noinst_HEADERS += src/ccutil/lsterr.h
375 noinst_HEADERS += src/ccutil/object_cache.h
376 noinst_HEADERS += src/ccutil/params.h
377 noinst_HEADERS += src/ccutil/qrsequence.h
378 noinst_HEADERS += src/ccutil/sorthelper.h
379 noinst_HEADERS += src/ccutil/scanutils.h
380 noinst_HEADERS += src/ccutil/serialis.h
381 noinst_HEADERS += src/ccutil/tessdatamanager.h
382 noinst_HEADERS += src/ccutil/tprintf.h
383 noinst_HEADERS += src/ccutil/unicharcompress.h
384 noinst_HEADERS += src/ccutil/unicharmap.h
385 noinst_HEADERS += src/ccutil/unicharset.h
386 noinst_HEADERS += src/ccutil/unicity_table.h
387 if !DISABLED_LEGACY_ENGINE
388 noinst_HEADERS += src/ccutil/ambigs.h
389 noinst_HEADERS += src/ccutil/bitvector.h
390 noinst_HEADERS += src/ccutil/indexmapbidi.h
391 noinst_HEADERS += src/ccutil/universalambigs.h
392 endif
393
394 noinst_LTLIBRARIES += libtesseract_ccutil.la
395
396 libtesseract_ccutil_la_SOURCES = src/ccutil/ccutil.cpp
397 libtesseract_ccutil_la_SOURCES += src/ccutil/clst.cpp
398 libtesseract_ccutil_la_SOURCES += src/ccutil/elst2.cpp
399 libtesseract_ccutil_la_SOURCES += src/ccutil/elst.cpp
400 libtesseract_ccutil_la_SOURCES += src/ccutil/errcode.cpp
401 libtesseract_ccutil_la_SOURCES += src/ccutil/serialis.cpp
402 libtesseract_ccutil_la_SOURCES += src/ccutil/scanutils.cpp
403 libtesseract_ccutil_la_SOURCES += src/ccutil/tessdatamanager.cpp
404 libtesseract_ccutil_la_SOURCES += src/ccutil/tprintf.cpp
405 libtesseract_ccutil_la_SOURCES += src/ccutil/unichar.cpp
406 libtesseract_ccutil_la_SOURCES += src/ccutil/unicharcompress.cpp
407 libtesseract_ccutil_la_SOURCES += src/ccutil/unicharmap.cpp
408 libtesseract_ccutil_la_SOURCES += src/ccutil/unicharset.cpp
409 libtesseract_ccutil_la_SOURCES += src/ccutil/params.cpp
410 if !DISABLED_LEGACY_ENGINE
411 libtesseract_ccutil_la_SOURCES += src/ccutil/ambigs.cpp
412 libtesseract_ccutil_la_SOURCES += src/ccutil/bitvector.cpp
413 libtesseract_ccutil_la_SOURCES += src/ccutil/indexmapbidi.cpp
414 endif
415
416 # Rules for src/classify.
417
418 noinst_HEADERS += src/classify/classify.h
419 if !DISABLED_LEGACY_ENGINE
420 noinst_HEADERS += src/classify/adaptive.h
421 noinst_HEADERS += src/classify/cluster.h
422 noinst_HEADERS += src/classify/clusttool.h
423 noinst_HEADERS += src/classify/featdefs.h
424 noinst_HEADERS += src/classify/float2int.h
425 noinst_HEADERS += src/classify/fpoint.h
426 noinst_HEADERS += src/classify/intfeaturespace.h
427 noinst_HEADERS += src/classify/intfx.h
428 noinst_HEADERS += src/classify/intmatcher.h
429 noinst_HEADERS += src/classify/intproto.h
430 noinst_HEADERS += src/classify/kdtree.h
431 noinst_HEADERS += src/classify/mf.h
432 noinst_HEADERS += src/classify/mfdefs.h
433 noinst_HEADERS += src/classify/mfoutline.h
434 noinst_HEADERS += src/classify/mfx.h
435 noinst_HEADERS += src/classify/normfeat.h
436 noinst_HEADERS += src/classify/normmatch.h
437 noinst_HEADERS += src/classify/ocrfeatures.h
438 noinst_HEADERS += src/classify/outfeat.h
439 noinst_HEADERS += src/classify/picofeat.h
440 noinst_HEADERS += src/classify/protos.h
441 noinst_HEADERS += src/classify/shapeclassifier.h
442 noinst_HEADERS += src/classify/shapetable.h
443 noinst_HEADERS += src/classify/tessclassifier.h
444 noinst_HEADERS += src/classify/trainingsample.h
445 endif
446
447 libtesseract_la_SOURCES += src/classify/classify.cpp
448 if !DISABLED_LEGACY_ENGINE
449 libtesseract_la_SOURCES += src/classify/adaptive.cpp
450 libtesseract_la_SOURCES += src/classify/adaptmatch.cpp
451 libtesseract_la_SOURCES += src/classify/blobclass.cpp
452 libtesseract_la_SOURCES += src/classify/cluster.cpp
453 libtesseract_la_SOURCES += src/classify/clusttool.cpp
454 libtesseract_la_SOURCES += src/classify/cutoffs.cpp
455 libtesseract_la_SOURCES += src/classify/featdefs.cpp
456 libtesseract_la_SOURCES += src/classify/float2int.cpp
457 libtesseract_la_SOURCES += src/classify/fpoint.cpp
458 libtesseract_la_SOURCES += src/classify/intfeaturespace.cpp
459 libtesseract_la_SOURCES += src/classify/intfx.cpp
460 libtesseract_la_SOURCES += src/classify/intmatcher.cpp
461 libtesseract_la_SOURCES += src/classify/intproto.cpp
462 libtesseract_la_SOURCES += src/classify/kdtree.cpp
463 libtesseract_la_SOURCES += src/classify/mf.cpp
464 libtesseract_la_SOURCES += src/classify/mfoutline.cpp
465 libtesseract_la_SOURCES += src/classify/mfx.cpp
466 libtesseract_la_SOURCES += src/classify/normfeat.cpp
467 libtesseract_la_SOURCES += src/classify/normmatch.cpp
468 libtesseract_la_SOURCES += src/classify/ocrfeatures.cpp
469 libtesseract_la_SOURCES += src/classify/outfeat.cpp
470 libtesseract_la_SOURCES += src/classify/picofeat.cpp
471 libtesseract_la_SOURCES += src/classify/protos.cpp
472 libtesseract_la_SOURCES += src/classify/shapeclassifier.cpp
473 libtesseract_la_SOURCES += src/classify/shapetable.cpp
474 libtesseract_la_SOURCES += src/classify/tessclassifier.cpp
475 libtesseract_la_SOURCES += src/classify/trainingsample.cpp
476 endif
477
478 # Rules for src/cutil.
479
480 if !DISABLED_LEGACY_ENGINE
481 noinst_HEADERS += src/cutil/bitvec.h
482 noinst_HEADERS += src/cutil/oldlist.h
483 endif
484
485 if !DISABLED_LEGACY_ENGINE
486 libtesseract_la_SOURCES += src/cutil/oldlist.cpp
487 endif
488
489 # Rules for src/dict.
490
491 noinst_HEADERS += src/dict/dawg.h
492 noinst_HEADERS += src/dict/dawg_cache.h
493 noinst_HEADERS += src/dict/dict.h
494 noinst_HEADERS += src/dict/matchdefs.h
495 noinst_HEADERS += src/dict/stopper.h
496 noinst_HEADERS += src/dict/trie.h
497
498 libtesseract_la_SOURCES += src/dict/context.cpp
499 libtesseract_la_SOURCES += src/dict/dawg.cpp
500 libtesseract_la_SOURCES += src/dict/dawg_cache.cpp
501 libtesseract_la_SOURCES += src/dict/dict.cpp
502 libtesseract_la_SOURCES += src/dict/stopper.cpp
503 libtesseract_la_SOURCES += src/dict/trie.cpp
504 if !DISABLED_LEGACY_ENGINE
505 libtesseract_la_SOURCES += src/dict/hyphen.cpp
506 libtesseract_la_SOURCES += src/dict/permdawg.cpp
507 endif
508
509 # Rules for src/lstm.
510
511 libtesseract_lstm_la_CPPFLAGS = $(AM_CPPFLAGS)
512 libtesseract_lstm_la_CPPFLAGS += -I$(top_srcdir)/src/arch
513 libtesseract_lstm_la_CPPFLAGS += -I$(top_srcdir)/src/ccstruct
514 libtesseract_lstm_la_CPPFLAGS += -I$(top_srcdir)/src/ccutil
515 libtesseract_lstm_la_CPPFLAGS += -I$(top_srcdir)/src/classify
516 libtesseract_lstm_la_CPPFLAGS += -I$(top_srcdir)/src/cutil
517 libtesseract_lstm_la_CPPFLAGS += -I$(top_srcdir)/src/dict
518 libtesseract_lstm_la_CPPFLAGS += -I$(top_srcdir)/src/lstm
519 libtesseract_lstm_la_CPPFLAGS += -I$(top_srcdir)/src/viewer
520 if !NO_TESSDATA_PREFIX
521 libtesseract_lstm_la_CPPFLAGS += -DTESSDATA_PREFIX='"@datadir@"'
522 endif
523
524 noinst_HEADERS += src/lstm/convolve.h
525 noinst_HEADERS += src/lstm/fullyconnected.h
526 noinst_HEADERS += src/lstm/functions.h
527 noinst_HEADERS += src/lstm/input.h
528 noinst_HEADERS += src/lstm/lstm.h
529 noinst_HEADERS += src/lstm/lstmrecognizer.h
530 noinst_HEADERS += src/lstm/maxpool.h
531 noinst_HEADERS += src/lstm/network.h
532 noinst_HEADERS += src/lstm/networkio.h
533 noinst_HEADERS += src/lstm/networkscratch.h
534 noinst_HEADERS += src/lstm/parallel.h
535 noinst_HEADERS += src/lstm/plumbing.h
536 noinst_HEADERS += src/lstm/recodebeam.h
537 noinst_HEADERS += src/lstm/reconfig.h
538 noinst_HEADERS += src/lstm/reversed.h
539 noinst_HEADERS += src/lstm/series.h
540 noinst_HEADERS += src/lstm/static_shape.h
541 noinst_HEADERS += src/lstm/stridemap.h
542 noinst_HEADERS += src/lstm/weightmatrix.h
543
544 noinst_LTLIBRARIES += libtesseract_lstm.la
545
546 libtesseract_lstm_la_SOURCES = src/lstm/convolve.cpp
547 libtesseract_lstm_la_SOURCES += src/lstm/fullyconnected.cpp
548 libtesseract_lstm_la_SOURCES += src/lstm/functions.cpp
549 libtesseract_lstm_la_SOURCES += src/lstm/input.cpp
550 libtesseract_lstm_la_SOURCES += src/lstm/lstm.cpp
551 libtesseract_lstm_la_SOURCES += src/lstm/lstmrecognizer.cpp
552 libtesseract_lstm_la_SOURCES += src/lstm/maxpool.cpp
553 libtesseract_lstm_la_SOURCES += src/lstm/network.cpp
554 libtesseract_lstm_la_SOURCES += src/lstm/networkio.cpp
555 libtesseract_lstm_la_SOURCES += src/lstm/parallel.cpp
556 libtesseract_lstm_la_SOURCES += src/lstm/plumbing.cpp
557 libtesseract_lstm_la_SOURCES += src/lstm/recodebeam.cpp
558 libtesseract_lstm_la_SOURCES += src/lstm/reconfig.cpp
559 libtesseract_lstm_la_SOURCES += src/lstm/reversed.cpp
560 libtesseract_lstm_la_SOURCES += src/lstm/series.cpp
561 libtesseract_lstm_la_SOURCES += src/lstm/stridemap.cpp
562 libtesseract_lstm_la_SOURCES += src/lstm/weightmatrix.cpp
563
564 # Rules for src/textord.
565
566 noinst_HEADERS += src/textord/alignedblob.h
567 noinst_HEADERS += src/textord/baselinedetect.h
568 noinst_HEADERS += src/textord/bbgrid.h
569 noinst_HEADERS += src/textord/blkocc.h
570 noinst_HEADERS += src/textord/blobgrid.h
571 noinst_HEADERS += src/textord/ccnontextdetect.h
572 noinst_HEADERS += src/textord/cjkpitch.h
573 noinst_HEADERS += src/textord/colfind.h
574 noinst_HEADERS += src/textord/colpartition.h
575 noinst_HEADERS += src/textord/colpartitionset.h
576 noinst_HEADERS += src/textord/colpartitiongrid.h
577 noinst_HEADERS += src/textord/devanagari_processing.h
578 noinst_HEADERS += src/textord/drawtord.h
579 noinst_HEADERS += src/textord/edgblob.h
580 noinst_HEADERS += src/textord/edgloop.h
581 noinst_HEADERS += src/textord/fpchop.h
582 noinst_HEADERS += src/textord/gap_map.h
583 noinst_HEADERS += src/textord/imagefind.h
584 noinst_HEADERS += src/textord/linefind.h
585 noinst_HEADERS += src/textord/makerow.h
586 noinst_HEADERS += src/textord/oldbasel.h
587 noinst_HEADERS += src/textord/pithsync.h
588 noinst_HEADERS += src/textord/pitsync1.h
589 noinst_HEADERS += src/textord/scanedg.h
590 noinst_HEADERS += src/textord/sortflts.h
591 noinst_HEADERS += src/textord/strokewidth.h
592 noinst_HEADERS += src/textord/tabfind.h
593 noinst_HEADERS += src/textord/tablefind.h
594 noinst_HEADERS += src/textord/tabvector.h
595 noinst_HEADERS += src/textord/tablerecog.h
596 noinst_HEADERS += src/textord/textlineprojection.h
597 noinst_HEADERS += src/textord/textord.h
598 noinst_HEADERS += src/textord/topitch.h
599 noinst_HEADERS += src/textord/tordmain.h
600 noinst_HEADERS += src/textord/tovars.h
601 noinst_HEADERS += src/textord/underlin.h
602 noinst_HEADERS += src/textord/wordseg.h
603 noinst_HEADERS += src/textord/workingpartset.h
604 if !DISABLED_LEGACY_ENGINE
605 noinst_HEADERS += src/textord/equationdetectbase.h
606 endif
607
608 libtesseract_la_SOURCES += src/textord/alignedblob.cpp
609 libtesseract_la_SOURCES += src/textord/baselinedetect.cpp
610 libtesseract_la_SOURCES += src/textord/bbgrid.cpp
611 libtesseract_la_SOURCES += src/textord/blkocc.cpp
612 libtesseract_la_SOURCES += src/textord/blobgrid.cpp
613 libtesseract_la_SOURCES += src/textord/ccnontextdetect.cpp
614 libtesseract_la_SOURCES += src/textord/cjkpitch.cpp
615 libtesseract_la_SOURCES += src/textord/colfind.cpp
616 libtesseract_la_SOURCES += src/textord/colpartition.cpp
617 libtesseract_la_SOURCES += src/textord/colpartitionset.cpp
618 libtesseract_la_SOURCES += src/textord/colpartitiongrid.cpp
619 libtesseract_la_SOURCES += src/textord/devanagari_processing.cpp
620 libtesseract_la_SOURCES += src/textord/drawtord.cpp
621 libtesseract_la_SOURCES += src/textord/edgblob.cpp
622 libtesseract_la_SOURCES += src/textord/edgloop.cpp
623 libtesseract_la_SOURCES += src/textord/fpchop.cpp
624 libtesseract_la_SOURCES += src/textord/gap_map.cpp
625 libtesseract_la_SOURCES += src/textord/imagefind.cpp
626 libtesseract_la_SOURCES += src/textord/linefind.cpp
627 libtesseract_la_SOURCES += src/textord/makerow.cpp
628 libtesseract_la_SOURCES += src/textord/oldbasel.cpp
629 libtesseract_la_SOURCES += src/textord/pithsync.cpp
630 libtesseract_la_SOURCES += src/textord/pitsync1.cpp
631 libtesseract_la_SOURCES += src/textord/scanedg.cpp
632 libtesseract_la_SOURCES += src/textord/sortflts.cpp
633 libtesseract_la_SOURCES += src/textord/strokewidth.cpp
634 libtesseract_la_SOURCES += src/textord/tabfind.cpp
635 libtesseract_la_SOURCES += src/textord/tablefind.cpp
636 libtesseract_la_SOURCES += src/textord/tabvector.cpp
637 libtesseract_la_SOURCES += src/textord/tablerecog.cpp
638 libtesseract_la_SOURCES += src/textord/textlineprojection.cpp
639 libtesseract_la_SOURCES += src/textord/textord.cpp
640 libtesseract_la_SOURCES += src/textord/topitch.cpp
641 libtesseract_la_SOURCES += src/textord/tordmain.cpp
642 libtesseract_la_SOURCES += src/textord/tospace.cpp
643 libtesseract_la_SOURCES += src/textord/tovars.cpp
644 libtesseract_la_SOURCES += src/textord/underlin.cpp
645 libtesseract_la_SOURCES += src/textord/wordseg.cpp
646 libtesseract_la_SOURCES += src/textord/workingpartset.cpp
647 if !DISABLED_LEGACY_ENGINE
648 libtesseract_la_SOURCES += src/textord/equationdetectbase.cpp
649 endif
650
651 # Rules for src/viewer.
652
653 if !GRAPHICS_DISABLED
654 noinst_HEADERS += src/viewer/scrollview.h
655 noinst_HEADERS += src/viewer/svmnode.h
656 noinst_HEADERS += src/viewer/svutil.h
657
658 libtesseract_la_SOURCES += src/viewer/scrollview.cpp
659 libtesseract_la_SOURCES += src/viewer/svmnode.cpp
660 libtesseract_la_SOURCES += src/viewer/svutil.cpp
661
662 EXTRA_PROGRAMS += svpaint
663 svpaint_CPPFLAGS = $(AM_CPPFLAGS)
664 svpaint_CPPFLAGS += -I$(top_srcdir)/src/ccstruct
665 svpaint_CPPFLAGS += -I$(top_srcdir)/src/viewer
666 svpaint_SOURCES = src/svpaint.cpp
667 svpaint_LDADD = libtesseract.la
668 endif
669
670 # Rules for src/wordrec.
671
672 noinst_HEADERS += src/wordrec/wordrec.h
673 if !DISABLED_LEGACY_ENGINE
674 noinst_HEADERS += src/wordrec/associate.h
675 noinst_HEADERS += src/wordrec/chop.h
676 noinst_HEADERS += src/wordrec/drawfx.h
677 noinst_HEADERS += src/wordrec/findseam.h
678 noinst_HEADERS += src/wordrec/language_model.h
679 noinst_HEADERS += src/wordrec/lm_consistency.h
680 noinst_HEADERS += src/wordrec/lm_pain_points.h
681 noinst_HEADERS += src/wordrec/lm_state.h
682 noinst_HEADERS += src/wordrec/outlines.h
683 noinst_HEADERS += src/wordrec/params_model.h
684 noinst_HEADERS += src/wordrec/plotedges.h
685 noinst_HEADERS += src/wordrec/render.h
686 endif
687
688 libtesseract_la_SOURCES += src/wordrec/tface.cpp
689 libtesseract_la_SOURCES += src/wordrec/wordrec.cpp
690 if !DISABLED_LEGACY_ENGINE
691 libtesseract_la_SOURCES += src/wordrec/associate.cpp
692 libtesseract_la_SOURCES += src/wordrec/chop.cpp
693 libtesseract_la_SOURCES += src/wordrec/chopper.cpp
694 libtesseract_la_SOURCES += src/wordrec/drawfx.cpp
695 libtesseract_la_SOURCES += src/wordrec/findseam.cpp
696 libtesseract_la_SOURCES += src/wordrec/gradechop.cpp
697 libtesseract_la_SOURCES += src/wordrec/language_model.cpp
698 libtesseract_la_SOURCES += src/wordrec/lm_consistency.cpp
699 libtesseract_la_SOURCES += src/wordrec/lm_pain_points.cpp
700 libtesseract_la_SOURCES += src/wordrec/lm_state.cpp
701 libtesseract_la_SOURCES += src/wordrec/outlines.cpp
702 libtesseract_la_SOURCES += src/wordrec/params_model.cpp
703 libtesseract_la_SOURCES += src/wordrec/pieces.cpp
704 if !GRAPHICS_DISABLED
705 libtesseract_la_SOURCES += src/wordrec/plotedges.cpp
706 endif
707 libtesseract_la_SOURCES += src/wordrec/render.cpp
708 libtesseract_la_SOURCES += src/wordrec/segsearch.cpp
709 libtesseract_la_SOURCES += src/wordrec/wordclass.cpp
710 endif
711
712 # Rules for tesseract executable.
713
714 bin_PROGRAMS = tesseract
715 tesseract_SOURCES = src/tesseract.cpp
716 tesseract_CPPFLAGS = $(AM_CPPFLAGS)
717 tesseract_CPPFLAGS += -I$(top_srcdir)/src/arch
718 tesseract_CPPFLAGS += -I$(top_srcdir)/src/ccmain
719 tesseract_CPPFLAGS += -I$(top_srcdir)/src/ccstruct
720 tesseract_CPPFLAGS += -I$(top_srcdir)/src/ccutil
721 tesseract_CPPFLAGS += -I$(top_srcdir)/src/classify
722 tesseract_CPPFLAGS += -I$(top_srcdir)/src/cutil
723 tesseract_CPPFLAGS += -I$(top_srcdir)/src/dict
724 tesseract_CPPFLAGS += -I$(top_srcdir)/src/textord
725 tesseract_CPPFLAGS += -I$(top_srcdir)/src/viewer
726 tesseract_CPPFLAGS += -I$(top_srcdir)/src/wordrec
727
728 tesseract_LDFLAGS = $(OPENMP_CXXFLAGS)
729
730 tesseract_LDADD = libtesseract.la
731 tesseract_LDADD += $(LEPTONICA_LIBS)
732 tesseract_LDADD += $(libarchive_LIBS)
733 tesseract_LDADD += $(libcurl_LIBS)
734
735 if T_WIN
736 tesseract_LDADD += -ltiff
737 tesseract_LDADD += -lws2_32
738 endif
739 if ADD_RT
740 tesseract_LDADD += -lrt
741 endif
742
743 # Rules for training tools.
744
745 if ENABLE_TRAINING
746
747 training: $(trainingtools) | $(PROGRAMS)
748
749 training-install: $(trainingtools)
750 mkdir -p $(DESTDIR)$(bindir)
751 $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install \
752 $(INSTALL) $(INSTALL_STRIP_FLAG) $(trainingtools) $(DESTDIR)$(bindir)
753
754 training-uninstall:
755
756 # Some unit tests use code from training.
757 check: libtesseract_training.la
758
759 # dawg_test runs dawg2wordlist and wordlist2dawg.
760 check: dawg2wordlist wordlist2dawg
761
762 else
763
764 training:
765 @echo "Need to reconfigure project, so there are no errors"
766
767 endif
768
769 CLEANFILES += $(EXTRA_PROGRAMS)
770
771 training_CPPFLAGS = $(AM_CPPFLAGS)
772 training_CPPFLAGS += -DPANGO_ENABLE_ENGINE
773 training_CPPFLAGS += -DTESS_COMMON_TRAINING_API=
774 training_CPPFLAGS += -DTESS_PANGO_TRAINING_API=
775 training_CPPFLAGS += -DTESS_UNICHARSET_TRAINING_API=
776 training_CPPFLAGS += -I$(top_srcdir)/src/training
777 training_CPPFLAGS += -I$(top_srcdir)/src/training/common
778 training_CPPFLAGS += -I$(top_srcdir)/src/training/pango
779 training_CPPFLAGS += -I$(top_srcdir)/src/training/unicharset
780 training_CPPFLAGS += -I$(top_srcdir)/src/api
781 training_CPPFLAGS += -I$(top_srcdir)/src/ccmain
782 training_CPPFLAGS += -I$(top_srcdir)/src/ccutil
783 training_CPPFLAGS += -I$(top_srcdir)/src/ccstruct
784 training_CPPFLAGS += -I$(top_srcdir)/src/lstm
785 training_CPPFLAGS += -I$(top_srcdir)/src/arch
786 training_CPPFLAGS += -I$(top_srcdir)/src/viewer
787 training_CPPFLAGS += -I$(top_srcdir)/src/textord
788 training_CPPFLAGS += -I$(top_srcdir)/src/dict
789 training_CPPFLAGS += -I$(top_srcdir)/src/classify
790 training_CPPFLAGS += -I$(top_srcdir)/src/wordrec
791 training_CPPFLAGS += -I$(top_srcdir)/src/cutil
792 training_CPPFLAGS += $(ICU_UC_CFLAGS) $(ICU_I18N_CFLAGS)
793 training_CPPFLAGS += $(pango_CFLAGS)
794 training_CPPFLAGS += $(cairo_CFLAGS)
795
796 if DISABLED_LEGACY_ENGINE
797 training_CPPFLAGS += -DDISABLED_LEGACY_ENGINE
798 endif
799
800 # TODO: training programs cannot be linked to shared library created
801 # with -fvisibility
802 if VISIBILITY
803 AM_LDFLAGS += -all-static
804 endif
805
806 noinst_HEADERS += src/training/pango/boxchar.h
807 noinst_HEADERS += src/training/common/commandlineflags.h
808 noinst_HEADERS += src/training/common/commontraining.h
809 noinst_HEADERS += src/training/common/ctc.h
810 noinst_HEADERS += src/training/common/networkbuilder.h
811 noinst_HEADERS += src/training/degradeimage.h
812 noinst_HEADERS += src/training/pango/ligature_table.h
813 noinst_HEADERS += src/training/pango/pango_font_info.h
814 noinst_HEADERS += src/training/pango/stringrenderer.h
815 noinst_HEADERS += src/training/pango/tlog.h
816 noinst_HEADERS += src/training/unicharset/icuerrorcode.h
817 noinst_HEADERS += src/training/unicharset/fileio.h
818 noinst_HEADERS += src/training/unicharset/lang_model_helpers.h
819 noinst_HEADERS += src/training/unicharset/lstmtester.h
820 noinst_HEADERS += src/training/unicharset/lstmtrainer.h
821 noinst_HEADERS += src/training/unicharset/normstrngs.h
822 noinst_HEADERS += src/training/unicharset/unicharset_training_utils.h
823 noinst_HEADERS += src/training/unicharset/validate_grapheme.h
824 noinst_HEADERS += src/training/unicharset/validate_indic.h
825 noinst_HEADERS += src/training/unicharset/validate_javanese.h
826 noinst_HEADERS += src/training/unicharset/validate_khmer.h
827 noinst_HEADERS += src/training/unicharset/validate_myanmar.h
828 noinst_HEADERS += src/training/unicharset/validator.h
829 if !DISABLED_LEGACY_ENGINE
830 noinst_HEADERS += src/training/common/errorcounter.h
831 noinst_HEADERS += src/training/common/intfeaturedist.h
832 noinst_HEADERS += src/training/common/intfeaturemap.h
833 noinst_HEADERS += src/training/common/mastertrainer.h
834 noinst_HEADERS += src/training/common/sampleiterator.h
835 noinst_HEADERS += src/training/common/trainingsampleset.h
836 noinst_HEADERS += src/training/mergenf.h
837 endif
838
839 CLEANFILES += libtesseract_training.la
840
841 EXTRA_LTLIBRARIES = libtesseract_training.la
842
843 libtesseract_training_la_CPPFLAGS = $(training_CPPFLAGS)
844 libtesseract_training_la_SOURCES = src/training/pango/boxchar.cpp
845 libtesseract_training_la_SOURCES += src/training/common/commandlineflags.cpp
846 libtesseract_training_la_SOURCES += src/training/common/commontraining.cpp
847 libtesseract_training_la_SOURCES += src/training/common/ctc.cpp
848 libtesseract_training_la_SOURCES += src/training/common/networkbuilder.cpp
849 libtesseract_training_la_SOURCES += src/training/degradeimage.cpp
850 libtesseract_training_la_SOURCES += src/training/pango/ligature_table.cpp
851 libtesseract_training_la_SOURCES += src/training/pango/pango_font_info.cpp
852 libtesseract_training_la_SOURCES += src/training/pango/stringrenderer.cpp
853 libtesseract_training_la_SOURCES += src/training/pango/tlog.cpp
854 libtesseract_training_la_SOURCES += src/training/unicharset/icuerrorcode.cpp
855 libtesseract_training_la_SOURCES += src/training/unicharset/fileio.cpp
856 libtesseract_training_la_SOURCES += src/training/unicharset/lang_model_helpers.cpp
857 libtesseract_training_la_SOURCES += src/training/unicharset/lstmtester.cpp
858 libtesseract_training_la_SOURCES += src/training/unicharset/lstmtrainer.cpp
859 libtesseract_training_la_SOURCES += src/training/unicharset/normstrngs.cpp
860 libtesseract_training_la_SOURCES += src/training/unicharset/unicharset_training_utils.cpp
861 libtesseract_training_la_SOURCES += src/training/unicharset/validate_grapheme.cpp
862 libtesseract_training_la_SOURCES += src/training/unicharset/validate_indic.cpp
863 libtesseract_training_la_SOURCES += src/training/unicharset/validate_javanese.cpp
864 libtesseract_training_la_SOURCES += src/training/unicharset/validate_khmer.cpp
865 libtesseract_training_la_SOURCES += src/training/unicharset/validate_myanmar.cpp
866 libtesseract_training_la_SOURCES += src/training/unicharset/validator.cpp
867 if !DISABLED_LEGACY_ENGINE
868 libtesseract_training_la_SOURCES += src/training/common/errorcounter.cpp
869 libtesseract_training_la_SOURCES += src/training/common/intfeaturedist.cpp
870 libtesseract_training_la_SOURCES += src/training/common/intfeaturemap.cpp
871 libtesseract_training_la_SOURCES += src/training/common/mastertrainer.cpp
872 libtesseract_training_la_SOURCES += src/training/common/sampleiterator.cpp
873 libtesseract_training_la_SOURCES += src/training/common/trainingsampleset.cpp
874 endif
875
876 trainingtools = combine_lang_model$(EXEEXT)
877 trainingtools += combine_tessdata$(EXEEXT)
878 trainingtools += dawg2wordlist$(EXEEXT)
879 trainingtools += lstmeval$(EXEEXT)
880 trainingtools += lstmtraining$(EXEEXT)
881 trainingtools += merge_unicharsets$(EXEEXT)
882 trainingtools += set_unicharset_properties$(EXEEXT)
883 trainingtools += text2image$(EXEEXT)
884 trainingtools += unicharset_extractor$(EXEEXT)
885 trainingtools += wordlist2dawg$(EXEEXT)
886 if !DISABLED_LEGACY_ENGINE
887 trainingtools += ambiguous_words$(EXEEXT)
888 trainingtools += classifier_tester$(EXEEXT)
889 trainingtools += cntraining$(EXEEXT)
890 trainingtools += mftraining$(EXEEXT)
891 trainingtools += shapeclustering$(EXEEXT)
892 endif
893
894 $(trainingtools): libtesseract.la
895
896 EXTRA_PROGRAMS += $(trainingtools)
897
898 extralib = libtesseract.la
899 extralib += $(libarchive_LIBS)
900 extralib += $(LEPTONICA_LIBS)
901 if T_WIN
902 extralib += -lws2_32
903 endif
904
905 if !DISABLED_LEGACY_ENGINE
906 ambiguous_words_CPPFLAGS = $(training_CPPFLAGS)
907 ambiguous_words_SOURCES = src/training/ambiguous_words.cpp
908 ambiguous_words_LDADD = libtesseract_training.la
909 ambiguous_words_LDADD += $(extralib)
910
911 classifier_tester_CPPFLAGS = $(training_CPPFLAGS)
912 classifier_tester_SOURCES = src/training/classifier_tester.cpp
913 classifier_tester_LDADD = libtesseract_training.la
914 classifier_tester_LDADD += $(extralib)
915
916 cntraining_CPPFLAGS = $(training_CPPFLAGS)
917 cntraining_SOURCES = src/training/cntraining.cpp
918 cntraining_LDADD = libtesseract_training.la
919 cntraining_LDADD += $(extralib)
920
921 mftraining_CPPFLAGS = $(training_CPPFLAGS)
922 mftraining_SOURCES = src/training/mftraining.cpp src/training/mergenf.cpp
923 mftraining_LDADD = libtesseract_training.la
924 mftraining_LDADD += $(ICU_UC_LIBS)
925 mftraining_LDADD += $(extralib)
926
927 shapeclustering_CPPFLAGS = $(training_CPPFLAGS)
928 shapeclustering_SOURCES = src/training/shapeclustering.cpp
929 shapeclustering_LDADD = libtesseract_training.la
930 shapeclustering_LDADD += $(extralib)
931 endif
932
933 combine_lang_model_CPPFLAGS = $(training_CPPFLAGS)
934 combine_lang_model_SOURCES = src/training/combine_lang_model.cpp
935 combine_lang_model_LDADD = libtesseract_training.la
936 combine_lang_model_LDADD += $(ICU_I18N_LIBS) $(ICU_UC_LIBS)
937 combine_lang_model_LDADD += $(extralib)
938
939 combine_tessdata_CPPFLAGS = $(training_CPPFLAGS)
940 combine_tessdata_SOURCES = src/training/combine_tessdata.cpp
941 combine_tessdata_LDADD = $(extralib)
942
943 dawg2wordlist_CPPFLAGS = $(training_CPPFLAGS)
944 dawg2wordlist_SOURCES = src/training/dawg2wordlist.cpp
945 dawg2wordlist_LDADD = $(extralib)
946
947 lstmeval_CPPFLAGS = $(training_CPPFLAGS)
948 lstmeval_SOURCES = src/training/lstmeval.cpp
949 lstmeval_LDADD = libtesseract_training.la
950 lstmeval_LDADD += $(ICU_UC_LIBS)
951 lstmeval_LDADD += $(extralib)
952
953 lstmtraining_CPPFLAGS = $(training_CPPFLAGS)
954 lstmtraining_SOURCES = src/training/lstmtraining.cpp
955 lstmtraining_LDADD = libtesseract_training.la
956 lstmtraining_LDADD += $(ICU_I18N_LIBS) $(ICU_UC_LIBS)
957 lstmtraining_LDADD += $(extralib)
958
959 merge_unicharsets_CPPFLAGS = $(training_CPPFLAGS)
960 merge_unicharsets_SOURCES = src/training/merge_unicharsets.cpp
961 merge_unicharsets_LDADD = $(extralib)
962
963 set_unicharset_properties_CPPFLAGS = $(training_CPPFLAGS)
964 set_unicharset_properties_SOURCES = src/training/set_unicharset_properties.cpp
965 set_unicharset_properties_LDADD = libtesseract_training.la
966 set_unicharset_properties_LDADD += $(ICU_I18N_LIBS) $(ICU_UC_LIBS)
967 set_unicharset_properties_LDADD += $(extralib)
968
969 text2image_CPPFLAGS = $(training_CPPFLAGS)
970 text2image_SOURCES = src/training/text2image.cpp
971 text2image_LDADD = libtesseract_training.la
972 text2image_LDADD += $(ICU_I18N_LIBS) $(ICU_UC_LIBS)
973 text2image_LDADD += $(extralib)
974 text2image_LDADD += $(ICU_UC_LIBS) $(cairo_LIBS)
975 text2image_LDADD += $(pango_LIBS) $(pangocairo_LIBS) $(pangoft2_LIBS)
976
977 unicharset_extractor_CPPFLAGS = $(training_CPPFLAGS)
978 unicharset_extractor_SOURCES = src/training/unicharset_extractor.cpp
979 unicharset_extractor_LDADD = libtesseract_training.la
980 unicharset_extractor_LDADD += $(ICU_I18N_LIBS) $(ICU_UC_LIBS)
981 unicharset_extractor_LDADD += $(extralib)
982
983 wordlist2dawg_CPPFLAGS = $(training_CPPFLAGS)
984 wordlist2dawg_SOURCES = src/training/wordlist2dawg.cpp
985 wordlist2dawg_LDADD = $(extralib)
986
987 # fuzzer-api is used for fuzzing tests.
988 # They are run by OSS-Fuzz https://oss-fuzz.com/, but can also be run locally.
989 # Note: -fsanitize=fuzzer currently requires the clang++ compiler.
990
991 # LIB_FUZZING_ENGINE can be overridden by the caller.
992 # This is used by OSS-Fuzz.
993 LIB_FUZZING_ENGINE ?= -fsanitize=fuzzer
994
995 fuzzer-api: libtesseract.la
996 fuzzer-api: unittest/fuzzers/fuzzer-api.cpp
997 $(CXX) $(CXXFLAGS) -g $(LIB_FUZZING_ENGINE) \
998 -I $(top_srcdir)/include \
999 -I $(builddir)/include \
1000 -I $(top_srcdir)/src/ccmain \
1001 -I $(top_srcdir)/src/ccstruct \
1002 -I $(top_srcdir)/src/ccutil \
1003 $(LEPTONICA_CFLAGS) \
1004 $(OPENMP_CXXFLAGS) \
1005 $< \
1006 $(builddir)/.libs/libtesseract.a \
1007 $(LEPTONICA_LIBS) \
1008 $(libarchive_LIBS) \
1009 $(libcurl_LIBS) \
1010 -o $@
1011
1012 fuzzer-api-512x256: libtesseract.la
1013 fuzzer-api-512x256: unittest/fuzzers/fuzzer-api.cpp
1014 $(CXX) $(CXXFLAGS) -g $(LIB_FUZZING_ENGINE) \
1015 -DTESSERACT_FUZZER_WIDTH=512 \
1016 -DTESSERACT_FUZZER_HEIGHT=256 \
1017 -I $(top_srcdir)/include \
1018 -I $(builddir)/include \
1019 -I $(top_srcdir)/src/ccmain \
1020 -I $(top_srcdir)/src/ccstruct \
1021 -I $(top_srcdir)/src/ccutil \
1022 $(LEPTONICA_CFLAGS) \
1023 $(OPENMP_CXXFLAGS) \
1024 $< \
1025 $(builddir)/.libs/libtesseract.a \
1026 $(LEPTONICA_LIBS) \
1027 $(libarchive_LIBS) \
1028 $(libcurl_LIBS) \
1029 -o $@
1030
1031 CLEANFILES += fuzzer-api fuzzer-api-512x256
1032
1033 if ASCIIDOC
1034
1035 man_MANS = doc/combine_lang_model.1
1036 man_MANS += doc/combine_tessdata.1
1037 man_MANS += doc/dawg2wordlist.1
1038 man_MANS += doc/lstmeval.1
1039 man_MANS += doc/lstmtraining.1
1040 man_MANS += doc/merge_unicharsets.1
1041 man_MANS += doc/set_unicharset_properties.1
1042 man_MANS += doc/tesseract.1
1043 man_MANS += doc/text2image.1
1044 man_MANS += doc/unicharset.5
1045 man_MANS += doc/unicharset_extractor.1
1046 man_MANS += doc/wordlist2dawg.1
1047
1048 if !DISABLED_LEGACY_ENGINE
1049 man_MANS += doc/ambiguous_words.1
1050 man_MANS += doc/classifier_tester.1
1051 man_MANS += doc/cntraining.1
1052 man_MANS += doc/mftraining.1
1053 man_MANS += doc/shapeclustering.1
1054 man_MANS += doc/unicharambigs.5
1055 endif
1056
1057 man_xslt = http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl
1058
1059 EXTRA_DIST += $(man_MANS) doc/Doxyfile
1060
1061 html: ${man_MANS:%=%.html}
1062 pdf: ${man_MANS:%=%.pdf}
1063
1064 SUFFIXES = .asc .html .pdf
1065
1066 .asc:
1067 if HAVE_XML_CATALOG_FILES
1068 asciidoc -b docbook -d manpage -o - $< | \
1069 XML_CATALOG_FILES=$(XML_CATALOG_FILES) xsltproc --nonet -o $@ $(man_xslt) -
1070 else
1071 asciidoc -b docbook -d manpage -o - $< | \
1072 xsltproc --nonet -o $@ $(man_xslt) -
1073 endif
1074
1075 .asc.html:
1076 asciidoc -b html5 -o $@ $<
1077
1078 .asc.pdf:
1079 asciidoc -b docbook -d manpage -o $*.dbk $<
1080 docbook2pdf -o doc $*.dbk
1081
1082 MAINTAINERCLEANFILES = $(man_MANS) Doxyfile
1083
1084 endif
1085
1086 # Absolute path of directory 'langdata'.
1087 LANGDATA_DIR=$(shell cd $(top_srcdir) && cd .. && pwd)/langdata_lstm
1088
1089 # Absolute path of directory 'tessdata' with traineddata files
1090 # (must be on same level as top source directory).
1091 TESSDATA_DIR=$(shell cd $(top_srcdir) && cd .. && pwd)/tessdata
1092
1093 # Absolute path of directory 'testing' with test images and ground truth texts
1094 # (using submodule test).
1095 TESTING_DIR=$(shell cd $(top_srcdir) && pwd)/test/testing
1096 # Absolute path of directory 'testdata' with test unicharset etc.
1097 # (using submodule test).
1098 TESTDATA_DIR=$(shell cd $(top_srcdir) && pwd)/test/testdata
1099
1100 # Suppress some memory leaks reported by LeakSanitizer.
1101 export LSAN_OPTIONS=suppressions=$(top_srcdir)/unittest/tesseract_leaksanitizer.supp
1102
1103 unittest_CPPFLAGS = $(AM_CPPFLAGS)
1104 unittest_CPPFLAGS += -DTESSBIN_DIR="\"$(abs_top_builddir)\""
1105 unittest_CPPFLAGS += -DLANGDATA_DIR="\"$(LANGDATA_DIR)\""
1106 unittest_CPPFLAGS += -DTESSDATA_DIR="\"$(TESSDATA_DIR)\""
1107 unittest_CPPFLAGS += -DTESTING_DIR="\"$(TESTING_DIR)\""
1108 unittest_CPPFLAGS += -DTESTDATA_DIR="\"$(TESTDATA_DIR)\""
1109 unittest_CPPFLAGS += -DPANGO_ENABLE_ENGINE
1110 if DISABLED_LEGACY_ENGINE
1111 unittest_CPPFLAGS += -DDISABLED_LEGACY_ENGINE
1112 endif # DISABLED_LEGACY_ENGINE
1113 unittest_CPPFLAGS += -DTESS_COMMON_TRAINING_API=
1114 unittest_CPPFLAGS += -DTESS_PANGO_TRAINING_API=
1115 unittest_CPPFLAGS += -DTESS_UNICHARSET_TRAINING_API=
1116 unittest_CPPFLAGS += -I$(top_srcdir)/src/arch
1117 unittest_CPPFLAGS += -I$(top_srcdir)/src/ccmain
1118 unittest_CPPFLAGS += -I$(top_srcdir)/src/ccstruct
1119 unittest_CPPFLAGS += -I$(top_srcdir)/src/ccutil
1120 unittest_CPPFLAGS += -I$(top_srcdir)/src/classify
1121 unittest_CPPFLAGS += -I$(top_srcdir)/src/cutil
1122 unittest_CPPFLAGS += -I$(top_srcdir)/src/dict
1123 unittest_CPPFLAGS += -I$(top_srcdir)/src/display
1124 unittest_CPPFLAGS += -I$(top_srcdir)/src/lstm
1125 unittest_CPPFLAGS += -I$(top_srcdir)/src/textord
1126 unittest_CPPFLAGS += -I$(top_srcdir)/unittest/base
1127 unittest_CPPFLAGS += -I$(top_srcdir)/unittest/util
1128 unittest_CPPFLAGS += $(LEPTONICA_CFLAGS)
1129 if ENABLE_TRAINING
1130 unittest_CPPFLAGS += -I$(top_srcdir)/src/training
1131 unittest_CPPFLAGS += -I$(top_srcdir)/src/training/common
1132 unittest_CPPFLAGS += -I$(top_srcdir)/src/training/pango
1133 unittest_CPPFLAGS += -I$(top_srcdir)/src/training/unicharset
1134 unittest_CPPFLAGS += $(pangocairo_CFLAGS)
1135 endif # ENABLE_TRAINING
1136 unittest_CPPFLAGS += -I$(top_srcdir)/src/viewer
1137 unittest_CPPFLAGS += -I$(top_srcdir)/src/wordrec
1138 unittest_CPPFLAGS += -I$(top_srcdir)/unittest
1139
1140 # Build googletest:
1141 check_LTLIBRARIES = libgtest.la libgtest_main.la libgmock.la libgmock_main.la
1142 libgtest_la_SOURCES = unittest/third_party/googletest/googletest/src/gtest-all.cc
1143 libgtest_la_CPPFLAGS = -I$(top_srcdir)/unittest/third_party/googletest/googletest/include
1144 libgtest_la_CPPFLAGS += -I$(top_srcdir)/unittest/third_party/googletest/googletest
1145 libgtest_la_CPPFLAGS += -pthread
1146 libgtest_main_la_SOURCES = unittest/third_party/googletest/googletest/src/gtest_main.cc
1147 libgtest_main_la_CPPFLAGS = $(libgtest_la_CPPFLAGS)
1148
1149 GMOCK_INCLUDES = -I$(top_srcdir)/unittest/third_party/googletest/googlemock/include \
1150 -I$(top_srcdir)/unittest/third_party/googletest/googlemock \
1151 -I$(top_srcdir)/unittest/third_party/googletest/googletest/include \
1152 -I$(top_srcdir)/unittest/third_party/googletest/googletest
1153
1154 libgmock_la_SOURCES = unittest/third_party/googletest/googlemock/src/gmock-all.cc
1155 libgmock_la_CPPFLAGS = $(GMOCK_INCLUDES) \
1156 -pthread
1157 libgmock_main_la_SOURCES = unittest/third_party/googletest/googlemock/src/gmock_main.cc
1158 libgmock_main_la_CPPFLAGS = $(GMOCK_INCLUDES) \
1159 -pthread
1160
1161 # Build unittests
1162 GTEST_LIBS = libgtest.la libgtest_main.la -lpthread
1163 GMOCK_LIBS = libgmock.la libgmock_main.la
1164 TESS_LIBS = $(GTEST_LIBS)
1165 TESS_LIBS += libtesseract.la $(libarchive_LIBS)
1166 TRAINING_LIBS = libtesseract_training.la
1167 TRAINING_LIBS += $(TESS_LIBS)
1168 unittest_CPPFLAGS += -isystem $(top_srcdir)/unittest/third_party/googletest/googletest/include
1169 unittest_CPPFLAGS += -isystem $(top_srcdir)/unittest/third_party/googletest/googlemock/include
1170
1171 check_PROGRAMS = apiexample_test
1172 if ENABLE_TRAINING
1173 if !DISABLED_LEGACY_ENGINE
1174 check_PROGRAMS += applybox_test
1175 endif # !DISABLED_LEGACY_ENGINE
1176 check_PROGRAMS += baseapi_test
1177 check_PROGRAMS += baseapi_thread_test
1178 if !DISABLED_LEGACY_ENGINE
1179 check_PROGRAMS += bitvector_test
1180 endif # !DISABLED_LEGACY_ENGINE
1181 endif # ENABLE_TRAINING
1182 check_PROGRAMS += cleanapi_test
1183 check_PROGRAMS += colpartition_test
1184 if ENABLE_TRAINING
1185 check_PROGRAMS += commandlineflags_test
1186 check_PROGRAMS += dawg_test
1187 endif # ENABLE_TRAINING
1188 check_PROGRAMS += denorm_test
1189 if !DISABLED_LEGACY_ENGINE
1190 check_PROGRAMS += equationdetect_test
1191 endif # !DISABLED_LEGACY_ENGINE
1192 check_PROGRAMS += fileio_test
1193 check_PROGRAMS += heap_test
1194 check_PROGRAMS += imagedata_test
1195 if !DISABLED_LEGACY_ENGINE
1196 check_PROGRAMS += indexmapbidi_test
1197 check_PROGRAMS += intfeaturemap_test
1198 endif # !DISABLED_LEGACY_ENGINE
1199 check_PROGRAMS += intsimdmatrix_test
1200 check_PROGRAMS += lang_model_test
1201 check_PROGRAMS += layout_test
1202 check_PROGRAMS += ligature_table_test
1203 check_PROGRAMS += linlsq_test
1204 check_PROGRAMS += list_test
1205 if ENABLE_TRAINING
1206 check_PROGRAMS += lstm_recode_test
1207 check_PROGRAMS += lstm_squashed_test
1208 check_PROGRAMS += lstm_test
1209 check_PROGRAMS += lstmtrainer_test
1210 endif # ENABLE_TRAINING
1211 check_PROGRAMS += loadlang_test
1212 if !DISABLED_LEGACY_ENGINE
1213 check_PROGRAMS += mastertrainer_test
1214 endif # !DISABLED_LEGACY_ENGINE
1215 check_PROGRAMS += matrix_test
1216 check_PROGRAMS += networkio_test
1217 if ENABLE_TRAINING
1218 check_PROGRAMS += normstrngs_test
1219 endif # ENABLE_TRAINING
1220 check_PROGRAMS += nthitem_test
1221 if !DISABLED_LEGACY_ENGINE
1222 check_PROGRAMS += osd_test
1223 endif # !DISABLED_LEGACY_ENGINE
1224 check_PROGRAMS += pagesegmode_test
1225 if ENABLE_TRAINING
1226 check_PROGRAMS += pango_font_info_test
1227 endif # ENABLE_TRAINING
1228 check_PROGRAMS += paragraphs_test
1229 if !DISABLED_LEGACY_ENGINE
1230 check_PROGRAMS += params_model_test
1231 endif # !DISABLED_LEGACY_ENGINE
1232 check_PROGRAMS += progress_test
1233 check_PROGRAMS += qrsequence_test
1234 check_PROGRAMS += recodebeam_test
1235 check_PROGRAMS += rect_test
1236 check_PROGRAMS += resultiterator_test
1237 check_PROGRAMS += scanutils_test
1238 if !DISABLED_LEGACY_ENGINE
1239 check_PROGRAMS += shapetable_test
1240 endif # !DISABLED_LEGACY_ENGINE
1241 check_PROGRAMS += stats_test
1242 check_PROGRAMS += stridemap_test
1243 check_PROGRAMS += stringrenderer_test
1244 check_PROGRAMS += tablefind_test
1245 check_PROGRAMS += tablerecog_test
1246 check_PROGRAMS += tabvector_test
1247 check_PROGRAMS += tatweel_test
1248 if !DISABLED_LEGACY_ENGINE
1249 check_PROGRAMS += textlineprojection_test
1250 endif # !DISABLED_LEGACY_ENGINE
1251 check_PROGRAMS += tfile_test
1252 if ENABLE_TRAINING
1253 check_PROGRAMS += unichar_test
1254 check_PROGRAMS += unicharcompress_test
1255 check_PROGRAMS += unicharset_test
1256 check_PROGRAMS += validate_grapheme_test
1257 check_PROGRAMS += validate_indic_test
1258 check_PROGRAMS += validate_khmer_test
1259 check_PROGRAMS += validate_myanmar_test
1260 check_PROGRAMS += validator_test
1261 endif # ENABLE_TRAINING
1262
1263 check_PROGRAMS: libtesseract.la libtesseract_training.la
1264
1265 TESTS = $(check_PROGRAMS)
1266
1267 # List of source files needed to build the executable:
1268
1269 apiexample_test_SOURCES = unittest/apiexample_test.cc
1270 apiexample_test_CPPFLAGS = $(unittest_CPPFLAGS)
1271 apiexample_test_LDFLAGS = $(LEPTONICA_LIBS)
1272 apiexample_test_LDADD = $(TESS_LIBS) $(LEPTONICA_LIBS)
1273
1274 if !DISABLED_LEGACY_ENGINE
1275 applybox_test_SOURCES = unittest/applybox_test.cc
1276 applybox_test_CPPFLAGS = $(unittest_CPPFLAGS)
1277 applybox_test_LDADD = $(TRAINING_LIBS) $(LEPTONICA_LIBS)
1278 endif # !DISABLED_LEGACY_ENGINE
1279
1280 baseapi_test_SOURCES = unittest/baseapi_test.cc
1281 baseapi_test_CPPFLAGS = $(unittest_CPPFLAGS)
1282 baseapi_test_LDADD = $(TRAINING_LIBS) $(LEPTONICA_LIBS)
1283
1284 baseapi_thread_test_SOURCES = unittest/baseapi_thread_test.cc
1285 baseapi_thread_test_CPPFLAGS = $(unittest_CPPFLAGS)
1286 baseapi_thread_test_LDADD = $(TESS_LIBS) $(LEPTONICA_LIBS)
1287
1288 if !DISABLED_LEGACY_ENGINE
1289 bitvector_test_SOURCES = unittest/bitvector_test.cc
1290 bitvector_test_CPPFLAGS = $(unittest_CPPFLAGS)
1291 bitvector_test_LDADD = $(TRAINING_LIBS)
1292 endif # !DISABLED_LEGACY_ENGINE
1293
1294 cleanapi_test_SOURCES = unittest/cleanapi_test.cc
1295 cleanapi_test_CPPFLAGS = $(unittest_CPPFLAGS)
1296 cleanapi_test_LDADD = $(TESS_LIBS)
1297
1298 colpartition_test_SOURCES = unittest/colpartition_test.cc
1299 colpartition_test_CPPFLAGS = $(unittest_CPPFLAGS)
1300 colpartition_test_LDADD = $(TESS_LIBS)
1301
1302 commandlineflags_test_SOURCES = unittest/commandlineflags_test.cc
1303 commandlineflags_test_CPPFLAGS = $(unittest_CPPFLAGS)
1304 commandlineflags_test_LDADD = $(TRAINING_LIBS) $(ICU_UC_LIBS)
1305
1306 dawg_test_SOURCES = unittest/dawg_test.cc
1307 dawg_test_CPPFLAGS = $(unittest_CPPFLAGS)
1308 dawg_test_LDADD = $(TRAINING_LIBS)
1309
1310 denorm_test_SOURCES = unittest/denorm_test.cc
1311 denorm_test_CPPFLAGS = $(unittest_CPPFLAGS)
1312 denorm_test_LDADD = $(TESS_LIBS)
1313
1314 if !DISABLED_LEGACY_ENGINE
1315 equationdetect_test_SOURCES = unittest/equationdetect_test.cc
1316 equationdetect_test_CPPFLAGS = $(unittest_CPPFLAGS)
1317 equationdetect_test_LDADD = $(TESS_LIBS) $(LEPTONICA_LIBS)
1318 endif # !DISABLED_LEGACY_ENGINE
1319
1320 fileio_test_SOURCES = unittest/fileio_test.cc
1321 fileio_test_CPPFLAGS = $(unittest_CPPFLAGS)
1322 fileio_test_LDADD = $(TRAINING_LIBS)
1323
1324 heap_test_SOURCES = unittest/heap_test.cc
1325 heap_test_CPPFLAGS = $(unittest_CPPFLAGS)
1326 heap_test_LDADD = $(TESS_LIBS)
1327
1328 imagedata_test_SOURCES = unittest/imagedata_test.cc
1329 imagedata_test_CPPFLAGS = $(unittest_CPPFLAGS)
1330 imagedata_test_LDADD = $(TRAINING_LIBS)
1331
1332 if !DISABLED_LEGACY_ENGINE
1333 indexmapbidi_test_SOURCES = unittest/indexmapbidi_test.cc
1334 indexmapbidi_test_CPPFLAGS = $(unittest_CPPFLAGS)
1335 indexmapbidi_test_LDADD = $(TRAINING_LIBS)
1336 endif # !DISABLED_LEGACY_ENGINE
1337
1338 if !DISABLED_LEGACY_ENGINE
1339 intfeaturemap_test_SOURCES = unittest/intfeaturemap_test.cc
1340 intfeaturemap_test_CPPFLAGS = $(unittest_CPPFLAGS)
1341 intfeaturemap_test_LDADD = $(TRAINING_LIBS)
1342 endif # !DISABLED_LEGACY_ENGINE
1343
1344 intsimdmatrix_test_SOURCES = unittest/intsimdmatrix_test.cc
1345 intsimdmatrix_test_CPPFLAGS = $(unittest_CPPFLAGS)
1346 if HAVE_AVX2
1347 intsimdmatrix_test_CPPFLAGS += -DHAVE_AVX2
1348 endif
1349 if HAVE_SSE4_1
1350 intsimdmatrix_test_CPPFLAGS += -DHAVE_SSE4_1
1351 endif
1352 intsimdmatrix_test_LDADD = $(TESS_LIBS)
1353
1354 lang_model_test_SOURCES = unittest/lang_model_test.cc
1355 lang_model_test_CPPFLAGS = $(unittest_CPPFLAGS)
1356 lang_model_test_LDADD = $(TRAINING_LIBS) $(ICU_I18N_LIBS) $(ICU_UC_LIBS)
1357
1358 layout_test_SOURCES = unittest/layout_test.cc
1359 layout_test_CPPFLAGS = $(unittest_CPPFLAGS)
1360 layout_test_LDADD = $(TRAINING_LIBS) $(LEPTONICA_LIBS)
1361
1362 ligature_table_test_SOURCES = unittest/ligature_table_test.cc
1363 ligature_table_test_CPPFLAGS = $(unittest_CPPFLAGS)
1364 ligature_table_test_LDADD = $(TRAINING_LIBS) $(LEPTONICA_LIBS)
1365 ligature_table_test_LDADD += $(ICU_I18N_LIBS) $(ICU_UC_LIBS)
1366 ligature_table_test_LDADD += $(pangocairo_LIBS) $(pangoft2_LIBS)
1367 ligature_table_test_LDADD += $(cairo_LIBS) $(pango_LIBS)
1368
1369 linlsq_test_SOURCES = unittest/linlsq_test.cc
1370 linlsq_test_CPPFLAGS = $(unittest_CPPFLAGS)
1371 linlsq_test_LDADD = $(TESS_LIBS)
1372
1373 list_test_SOURCES = unittest/list_test.cc
1374 list_test_CPPFLAGS = $(unittest_CPPFLAGS)
1375 list_test_LDADD = $(TESS_LIBS)
1376
1377 loadlang_test_SOURCES = unittest/loadlang_test.cc
1378 loadlang_test_CPPFLAGS = $(unittest_CPPFLAGS)
1379 loadlang_test_LDADD = $(TESS_LIBS) $(LEPTONICA_LIBS)
1380
1381 lstm_recode_test_SOURCES = unittest/lstm_recode_test.cc
1382 lstm_recode_test_CPPFLAGS = $(unittest_CPPFLAGS)
1383 lstm_recode_test_LDADD = $(TRAINING_LIBS)
1384
1385 lstm_squashed_test_SOURCES = unittest/lstm_squashed_test.cc
1386 lstm_squashed_test_CPPFLAGS = $(unittest_CPPFLAGS)
1387 lstm_squashed_test_LDADD = $(TRAINING_LIBS)
1388
1389 lstm_test_SOURCES = unittest/lstm_test.cc
1390 lstm_test_CPPFLAGS = $(unittest_CPPFLAGS)
1391 lstm_test_LDADD = $(TRAINING_LIBS)
1392
1393 lstmtrainer_test_SOURCES = unittest/lstmtrainer_test.cc
1394 lstmtrainer_test_CPPFLAGS = $(unittest_CPPFLAGS)
1395 lstmtrainer_test_LDADD = $(TRAINING_LIBS) $(LEPTONICA_LIBS)
1396
1397 if !DISABLED_LEGACY_ENGINE
1398 mastertrainer_test_SOURCES = unittest/mastertrainer_test.cc
1399 mastertrainer_test_CPPFLAGS = $(unittest_CPPFLAGS)
1400 mastertrainer_test_LDADD = $(TRAINING_LIBS) $(LEPTONICA_LIBS)
1401 endif # !DISABLED_LEGACY_ENGINE
1402
1403 matrix_test_SOURCES = unittest/matrix_test.cc
1404 matrix_test_CPPFLAGS = $(unittest_CPPFLAGS)
1405 matrix_test_LDADD = $(TESS_LIBS)
1406
1407 networkio_test_SOURCES = unittest/networkio_test.cc
1408 networkio_test_CPPFLAGS = $(unittest_CPPFLAGS)
1409 networkio_test_LDADD = $(TESS_LIBS)
1410
1411 normstrngs_test_SOURCES = unittest/normstrngs_test.cc
1412 normstrngs_test_CPPFLAGS = $(unittest_CPPFLAGS)
1413 normstrngs_test_LDADD = $(TRAINING_LIBS) $(ICU_I18N_LIBS) $(ICU_UC_LIBS)
1414
1415 nthitem_test_SOURCES = unittest/nthitem_test.cc
1416 nthitem_test_CPPFLAGS = $(unittest_CPPFLAGS)
1417 nthitem_test_LDADD = $(TESS_LIBS)
1418
1419 if !DISABLED_LEGACY_ENGINE
1420 osd_test_SOURCES = unittest/osd_test.cc
1421 osd_test_CPPFLAGS = $(unittest_CPPFLAGS)
1422 osd_test_LDADD = $(TESS_LIBS) $(LEPTONICA_LIBS)
1423 endif # !DISABLED_LEGACY_ENGINE
1424
1425 pagesegmode_test_SOURCES = unittest/pagesegmode_test.cc
1426 pagesegmode_test_CPPFLAGS = $(unittest_CPPFLAGS)
1427 pagesegmode_test_LDADD = $(TRAINING_LIBS) $(LEPTONICA_LIBS)
1428
1429 pango_font_info_test_SOURCES = unittest/pango_font_info_test.cc
1430 pango_font_info_test_CPPFLAGS = $(unittest_CPPFLAGS)
1431 pango_font_info_test_LDADD = $(TRAINING_LIBS) $(LEPTONICA_LIBS)
1432 pango_font_info_test_LDADD += $(ICU_I18N_LIBS)
1433 pango_font_info_test_LDADD += $(pangocairo_LIBS)
1434 pango_font_info_test_LDADD += $(pangoft2_LIBS)
1435
1436 paragraphs_test_SOURCES = unittest/paragraphs_test.cc
1437 paragraphs_test_CPPFLAGS = $(unittest_CPPFLAGS)
1438 paragraphs_test_LDADD = $(TESS_LIBS)
1439
1440 if !DISABLED_LEGACY_ENGINE
1441 params_model_test_SOURCES = unittest/params_model_test.cc
1442 params_model_test_CPPFLAGS = $(unittest_CPPFLAGS)
1443 params_model_test_LDADD = $(TRAINING_LIBS)
1444 endif # !DISABLED_LEGACY_ENGINE
1445
1446 progress_test_SOURCES = unittest/progress_test.cc
1447 progress_test_CPPFLAGS = $(unittest_CPPFLAGS)
1448 progress_test_LDFLAGS = $(LEPTONICA_LIBS)
1449 progress_test_LDADD = $(GTEST_LIBS) $(GMOCK_LIBS) $(TESS_LIBS) $(LEPTONICA_LIBS)
1450
1451 qrsequence_test_SOURCES = unittest/qrsequence_test.cc
1452 qrsequence_test_CPPFLAGS = $(unittest_CPPFLAGS)
1453 qrsequence_test_LDADD = $(TESS_LIBS)
1454
1455 recodebeam_test_SOURCES = unittest/recodebeam_test.cc
1456 recodebeam_test_CPPFLAGS = $(unittest_CPPFLAGS)
1457 recodebeam_test_LDADD = $(TRAINING_LIBS) $(ICU_I18N_LIBS) $(ICU_UC_LIBS)
1458
1459 rect_test_SOURCES = unittest/rect_test.cc
1460 rect_test_CPPFLAGS = $(unittest_CPPFLAGS)
1461 rect_test_LDADD = $(TESS_LIBS)
1462
1463 resultiterator_test_SOURCES = unittest/resultiterator_test.cc
1464 resultiterator_test_CPPFLAGS = $(unittest_CPPFLAGS)
1465 resultiterator_test_LDADD = $(TRAINING_LIBS)
1466 resultiterator_test_LDADD += $(LEPTONICA_LIBS) $(ICU_I18N_LIBS) $(ICU_UC_LIBS)
1467
1468 scanutils_test_SOURCES = unittest/scanutils_test.cc
1469 scanutils_test_CPPFLAGS = $(unittest_CPPFLAGS)
1470 scanutils_test_LDADD = $(TRAINING_LIBS)
1471
1472 if !DISABLED_LEGACY_ENGINE
1473 shapetable_test_SOURCES = unittest/shapetable_test.cc
1474 shapetable_test_CPPFLAGS = $(unittest_CPPFLAGS)
1475 shapetable_test_LDADD = $(TRAINING_LIBS)
1476 endif # !DISABLED_LEGACY_ENGINE
1477
1478 stats_test_SOURCES = unittest/stats_test.cc
1479 stats_test_CPPFLAGS = $(unittest_CPPFLAGS)
1480 stats_test_LDADD = $(TESS_LIBS)
1481
1482 stridemap_test_SOURCES = unittest/stridemap_test.cc
1483 stridemap_test_CPPFLAGS = $(unittest_CPPFLAGS)
1484 stridemap_test_LDADD = $(TESS_LIBS)
1485
1486 stringrenderer_test_SOURCES = unittest/stringrenderer_test.cc
1487 stringrenderer_test_CPPFLAGS = $(unittest_CPPFLAGS)
1488 stringrenderer_test_LDADD = $(TRAINING_LIBS) $(LEPTONICA_LIBS)
1489 stringrenderer_test_LDADD += $(ICU_I18N_LIBS) $(ICU_UC_LIBS)
1490 stringrenderer_test_LDADD += $(pangocairo_LIBS) $(pangoft2_LIBS)
1491 stringrenderer_test_LDADD += $(cairo_LIBS) $(pango_LIBS)
1492
1493 tablefind_test_SOURCES = unittest/tablefind_test.cc
1494 tablefind_test_CPPFLAGS = $(unittest_CPPFLAGS)
1495 tablefind_test_LDADD = $(TESS_LIBS)
1496
1497 tablerecog_test_SOURCES = unittest/tablerecog_test.cc
1498 tablerecog_test_CPPFLAGS = $(unittest_CPPFLAGS)
1499 tablerecog_test_LDADD = $(TESS_LIBS)
1500
1501 tabvector_test_SOURCES = unittest/tabvector_test.cc
1502 tabvector_test_CPPFLAGS = $(unittest_CPPFLAGS)
1503 tabvector_test_LDADD = $(TESS_LIBS)
1504
1505 tatweel_test_SOURCES = unittest/tatweel_test.cc
1506 tatweel_test_SOURCES += unittest/third_party/utf/rune.c
1507 tatweel_test_SOURCES += unittest/util/utf8/unicodetext.cc
1508 tatweel_test_SOURCES += unittest/util/utf8/unilib.cc
1509 tatweel_test_CPPFLAGS = $(unittest_CPPFLAGS)
1510 tatweel_test_LDADD = $(TRAINING_LIBS)
1511
1512 textlineprojection_test_SOURCES = unittest/textlineprojection_test.cc
1513 textlineprojection_test_CPPFLAGS = $(unittest_CPPFLAGS)
1514 textlineprojection_test_LDADD = $(TRAINING_LIBS) $(LEPTONICA_LIBS)
1515
1516 tfile_test_SOURCES = unittest/tfile_test.cc
1517 tfile_test_CPPFLAGS = $(unittest_CPPFLAGS)
1518 tfile_test_LDADD = $(TESS_LIBS)
1519
1520 unichar_test_SOURCES = unittest/unichar_test.cc
1521 unichar_test_CPPFLAGS = $(unittest_CPPFLAGS)
1522 unichar_test_LDADD = $(TRAINING_LIBS) $(ICU_UC_LIBS)
1523
1524 unicharcompress_test_SOURCES = unittest/unicharcompress_test.cc
1525 unicharcompress_test_CPPFLAGS = $(unittest_CPPFLAGS)
1526 unicharcompress_test_LDADD = $(TRAINING_LIBS) $(ICU_UC_LIBS)
1527
1528 unicharset_test_SOURCES = unittest/unicharset_test.cc
1529 unicharset_test_CPPFLAGS = $(unittest_CPPFLAGS)
1530 unicharset_test_LDADD = $(TRAINING_LIBS) $(ICU_UC_LIBS)
1531
1532 validate_grapheme_test_SOURCES = unittest/validate_grapheme_test.cc
1533 validate_grapheme_test_CPPFLAGS = $(unittest_CPPFLAGS)
1534 validate_grapheme_test_LDADD = $(TRAINING_LIBS) $(ICU_I18N_LIBS) $(ICU_UC_LIBS)
1535
1536 validate_indic_test_SOURCES = unittest/validate_indic_test.cc
1537 validate_indic_test_CPPFLAGS = $(unittest_CPPFLAGS)
1538 validate_indic_test_LDADD = $(TRAINING_LIBS) $(ICU_I18N_LIBS) $(ICU_UC_LIBS)
1539
1540 validate_khmer_test_SOURCES = unittest/validate_khmer_test.cc
1541 validate_khmer_test_CPPFLAGS = $(unittest_CPPFLAGS)
1542 validate_khmer_test_LDADD = $(TRAINING_LIBS) $(ICU_I18N_LIBS) $(ICU_UC_LIBS)
1543
1544 validate_myanmar_test_SOURCES = unittest/validate_myanmar_test.cc
1545 validate_myanmar_test_CPPFLAGS = $(unittest_CPPFLAGS)
1546 validate_myanmar_test_LDADD = $(TRAINING_LIBS) $(ICU_I18N_LIBS) $(ICU_UC_LIBS)
1547
1548 validator_test_SOURCES = unittest/validator_test.cc
1549 validator_test_CPPFLAGS = $(unittest_CPPFLAGS)
1550 validator_test_LDADD = $(TRAINING_LIBS) $(ICU_UC_LIBS)
1551
1552 # for windows
1553 if T_WIN
1554 apiexample_test_LDADD += -lws2_32
1555 intsimdmatrix_test_LDADD += -lws2_32
1556 matrix_test_LDADD += -lws2_32
1557 if !DISABLED_LEGACY_ENGINE
1558 osd_test_LDADD += -lws2_32
1559 endif # !DISABLED_LEGACY_ENGINE
1560 loadlang_test_LDADD += -lws2_32
1561 endif
1562
1563 EXTRA_apiexample_test_DEPENDENCIES = $(abs_top_builddir)/test/testing/phototest.tif
1564 EXTRA_apiexample_test_DEPENDENCIES += $(abs_top_builddir)/test/testing/phototest.txt
1565
1566 $(abs_top_builddir)/test/testing/phototest.tif:
1567 mkdir -p $(top_builddir)/test/testing
1568 ln -s $(TESTING_DIR)/phototest.tif $(top_builddir)/test/testing/phototest.tif
1569
1570 $(abs_top_builddir)/test/testing/phototest.txt:
1571 mkdir -p $(top_builddir)/test/testing
1572 ln -s $(TESTING_DIR)/phototest.txt $(top_builddir)/test/testing/phototest.txt
1573
1574 # Some tests require a local tmp directory.
1575
1576 $(check_PROGRAMS): | tmp
1577
1578 tmp:
1579 mkdir -p tmp
1580
1581 # Some tests require a well defined set of the following font files.
1582
1583 fonts = ae_Arab.ttf
1584 fonts += Arial_Bold_Italic.ttf
1585 fonts += DejaVuSans-ExtraLight.ttf
1586 fonts += Lohit-Hindi.ttf
1587 fonts += Times_New_Roman.ttf
1588 fonts += UnBatang.ttf
1589 fonts += Verdana.ttf
1590
1591 # These tests depend on installed model files and fonts:
1592 #
1593 # apiexample_test baseapi_test lang_model_test layout_test
1594 # ligature_table_test loadlang_test lstm_recode_test lstm_squashed_test
1595 # lstm_test lstmtrainer_test mastertrainer_test osd_test
1596 # pagesegmode_test pango_font_info_test progress_test
1597 # recodebeam_test resultiterator_test stringrenderer_test
1598 # textlineprojection_test unicharcompress_test
1599 #
1600 # Instead of fine-tuned dependencies the following lines
1601 # simply require those dependencies for all tests.
1602 # That can be improved if necessary.
1603
1604 $(check_PROGRAMS): | $(LANGDATA_DIR)
1605 $(check_PROGRAMS): | $(TESSDATA_DIR)
1606 $(check_PROGRAMS): | $(TESSDATA_BEST_DIR)
1607 $(check_PROGRAMS): | $(TESSDATA_FAST_DIR)
1608 $(check_PROGRAMS): | $(fonts:%=$(TESTING_DIR)/%)
1609
1610 $(LANGDATA_DIR) $(TESSDATA_DIR) $(TESSDATA_BEST_DIR) $(TESSDATA_FAST_DIR):
1611 @echo "Some unit tests require $@."
1612 @echo "It can be installed manually by running this command:"
1613 @echo " git clone https://github.com/tesseract-ocr/$$(basename $@).git $@"
1614 @exit 1
1615
1616 $(TESTING_DIR)/Arial_Bold_Italic.ttf:
1617 curl -sSL -o Arial.exe https://sourceforge.net/projects/corefonts/files/the%20fonts/final/arial32.exe/download
1618 cabextract -F Arialbi.TTF -q Arial.exe
1619 rm Arial.exe
1620 mv Arialbi.TTF $@
1621
1622 $(TESTING_DIR)/DejaVuSans-ExtraLight.ttf:
1623 curl -sSL http://sourceforge.net/projects/dejavu/files/dejavu/2.37/dejavu-fonts-ttf-2.37.tar.bz2 | \
1624 tar -xjO dejavu-fonts-ttf-2.37/ttf/DejaVuSans-ExtraLight.ttf >$@
1625
1626 $(TESTING_DIR)/Lohit-Hindi.ttf:
1627 curl -sSL https://releases.pagure.org/lohit/lohit-hindi-ttf-2.4.3.tar.gz | \
1628 tar -xzO lohit-hindi-ttf-2.4.3/Lohit-Hindi.ttf >$@
1629
1630 $(TESTING_DIR)/Times_New_Roman.ttf:
1631 curl -sSL -o Times.exe https://sourceforge.net/projects/corefonts/files/the%20fonts/final/times32.exe/download
1632 cabextract -F Times.TTF -q Times.exe
1633 rm Times.exe
1634 mv Times.TTF $@
1635
1636 $(TESTING_DIR)/UnBatang.ttf:
1637 curl -sSL -o $@ https://salsa.debian.org/fonts-team/fonts-unfonts-core/-/raw/master/UnBatang.ttf
1638
1639 $(TESTING_DIR)/Verdana.ttf:
1640 curl -sSL -o Verdana.exe https://sourceforge.net/projects/corefonts/files/the%20fonts/final/verdan32.exe/download
1641 cabextract -F Verdana.TTF -q Verdana.exe
1642 rm Verdana.exe
1643 mv Verdana.TTF $@
1644
1645 $(TESTING_DIR)/ae_Arab.ttf:
1646 curl -sSL -o $@ https://salsa.debian.org/fonts-team/fonts-arabeyes/-/raw/master/ae_Arab.ttf