# -*- mode: python; -*-

# Description:
#   tesseract build file.

licenses(['notice'])  # Apache 2.0

#-----------------------------------------------------------------------------
# LIBRARIES

cc_library(name = "scrollview_lib",
          srcs = [ "viewer/scrollview.cpp",
                   "viewer/svutil.cpp",
                   "viewer/svmnode.cpp" ],
          deps = [ "//third_party/leptonica",
                   ],
          includes = [ "third_party/leptonica/includes" ],
          copts = [ "-DHAVE_LIBLEPT",
                    "-DSCROLLVIEW_PATH=/home/build/static/projects/ocr" ]
          )

cc_library(name = "tesseract_cc_util",
           srcs = [ "ccutil/basedir.cpp",
                   "ccutil/bits16.cpp",
                   "ccutil/boxread.cpp",
                   "ccutil/clst.cpp",
                   "ccutil/debugwin.cpp",
                   "ccutil/elst.cpp",
                   "ccutil/elst2.cpp",
                   "ccutil/errcode.cpp",
                   "ccutil/tessopt.cpp",
                   "ccutil/globaloc.cpp",
                   "ccutil/hashfn.cpp",
                   "ccutil/mainblk.cpp",
                   "ccutil/memblk.cpp",
                   "ccutil/memry.cpp",
                   "ccutil/ocrshell.cpp",
                   "ccutil/serialis.cpp",
                   "ccutil/strngs.cpp",
                   "ccutil/tprintf.cpp",
                   "ccutil/unichar.cpp",
                   "ccutil/unicharset.cpp",
                   "ccutil/unicharmap.cpp",
                   "ccutil/varable.cpp",
                   "ccutil/ccutil.cpp" ],
           deps = [  ],
           includes = [ "ccutil"
           ])

cc_library(name = "tesseract_c_util",
           srcs = [ "cutil/tessarray.cpp",
                   "cutil/bitvec.cpp",
                   "cutil/danerror.cpp",
                   "cutil/debug.cpp",
                   "cutil/efio.cpp",
                   "cutil/emalloc.cpp",
                   "cutil/freelist.cpp",
                   "cutil/globals.cpp",
                   "cutil/listio.cpp",
                   "cutil/oldheap.cpp",
                   "cutil/oldlist.cpp",
                   "cutil/structures.cpp",
                   "cutil/tordvars.cpp",
                   "cutil/cutil.cpp",
                   "cutil/variables.cpp",
                   "cutil/cutil_class.cpp" ],
          deps = [ "tesseract_cc_util" ],
           includes = [ "cutil",
                        "ccutil"
           ])

cc_library(name = "tesseract_dict",
           srcs = [ "dict/choices.cpp",
                   "dict/context.cpp",
                   "dict/conversion.cpp",
                   "dict/dawg.cpp",
                   "dict/dict.cpp",
                   "dict/hyphen.cpp",
                   "dict/permdawg.cpp",
                   "dict/permnum.cpp",
                   "dict/permngram.cpp",
                   "dict/permute.cpp",
                   "dict/states.cpp",
                   "dict/stopper.cpp",
                   "dict/reduce.cpp",
                   "dict/makedawg.cpp",
                   "dict/lookdawg.cpp",
                   "dict/trie.cpp",
                    "dict/wordfst.cpp",
                    "dict/patternfst.cpp",
                    "dict/fstmodel.cpp" ],
           deps = [ "tesseract_c_util",
                   "tesseract_cc_struct",
                   "tesseract_cc_util",
                    "//third_party/libidn:idn",
                    "//third_party/icu:icu",
                    "//i18n/utf8",
                    "//nlp/fst/lib" ],
           includes = [ "cutil",
                        "ccutil",
                        "ccstruct",
                        "dict"
           ])

cc_library(name = "tesseract_aspirin",
           srcs = [ "aspirin/bpsim.cpp",
                   "aspirin/bpsupport.cpp",
                   "aspirin/nmatch.cpp",
                   "aspirin/vanilla.cpp" ],
           deps = [ "tesseract_c_util",
                    "tesseract_cc_util" ],
           includes = [ "aspirin",
                        "ccutil",
                        "cutil" ],
           # license with restrictions on commercial use, see LICENSE file
           licenses = [ "by_exception_only" ],
           )

cc_library(name = "tesseract_image",
           srcs = ["image/image.cpp",
                   "image/imgbmp.cpp",
                   "image/imgio.cpp",
                   "image/imgs.cpp",
                   "image/imgtiff.cpp",
                   "image/bitstrm.cpp",
                   "image/svshowim.cpp",
                  ],
           deps = [ "tesseract_cc_util",
                    "scrollview_lib",
                    "//third_party/leptonica" ],
           includes = [ "ccutil",
                        "image",
                        "viewer",
                        "third_party/leptonica/includes"
                        ],
           copts = [ "-DHAVE_LIBLEPT" ]
           )

cc_library(name = "tesseract_cc_struct",
           srcs = [ "ccstruct/blobbox.cpp",
                   "ccstruct/blobs.cpp",
                   "ccstruct/blread.cpp",
                   "ccstruct/callcpp.cpp",
                   "ccstruct/ccstruct.cpp",
                   "ccstruct/coutln.cpp",
                   "ccstruct/genblob.cpp",
                   "ccstruct/labls.cpp",
                   "ccstruct/linlsq.cpp",
                   "ccstruct/lmedsq.cpp",
                   "ccstruct/mod128.cpp",
                   "ccstruct/normalis.cpp",
                   "ccstruct/ocrblock.cpp",
                   "ccstruct/ocrrow.cpp",
                   "ccstruct/pageblk.cpp",
                   "ccstruct/pageres.cpp",
                   "ccstruct/pdblock.cpp",
                   "ccstruct/points.cpp",
                   "ccstruct/polyaprx.cpp",
                   "ccstruct/polyblk.cpp",
                   "ccstruct/polyblob.cpp",
                   "ccstruct/polyvert.cpp",
                   "ccstruct/poutline.cpp",
                   "ccstruct/quadlsq.cpp",
                   "ccstruct/quadratc.cpp",
                   "ccstruct/quspline.cpp",
                   "ccstruct/ratngs.cpp",
                   "ccstruct/rect.cpp",
                   "ccstruct/rejctmap.cpp",
                   "ccstruct/rwpoly.cpp",
                   "ccstruct/statistc.cpp",
                   "ccstruct/stepblob.cpp",
                   "ccstruct/txtregn.cpp",
                   "ccstruct/vecfuncs.cpp",
                   "ccstruct/werd.cpp" ],
          deps = [ "tesseract_image",
                   "tesseract_c_util",
                   "tesseract_cc_util" ],
          includes = [ "ccstruct",
                       "ccutil",
                       "cutil",
                       "image",
                       "viewer",
                     ] )

cc_library(name = "tesseract_classify",
           srcs = [ "classify/adaptive.cpp",
                   "classify/adaptmatch.cpp",
                   "classify/baseline.cpp",
                   "classify/blobclass.cpp",
                   "classify/chartoname.cpp",
                   "classify/classify.cpp",
                   "classify/cluster.cpp",
                   "classify/clusttool.cpp",
                   "classify/cutoffs.cpp",
                   "classify/extract.cpp",
                   "classify/featdefs.cpp",
                   "classify/flexfx.cpp",
                   "classify/float2int.cpp",
                   "classify/fpoint.cpp",
                   "classify/fxdefs.cpp",
                   "classify/hideedge.cpp",
                   "classify/intfx.cpp",
                   "classify/intmatcher.cpp",
                   "classify/intproto.cpp",
                   "classify/kdtree.cpp",
                   "classify/mf.cpp",
                   "classify/mfdefs.cpp",
                   "classify/mfoutline.cpp",
                   "classify/mfx.cpp",
                   "classify/normfeat.cpp",
                   "classify/normmatch.cpp",
                   "classify/ocrfeatures.cpp",
                   "classify/outfeat.cpp",
                   "classify/picofeat.cpp",
                   "classify/protos.cpp",
                   "classify/sigmenu.cpp",
                   "classify/speckle.cpp",
                   "classify/xform2d.cpp" ],
          deps = [ "tesseract_cc_struct",
                   "tesseract_dict",
                   "tesseract_c_util",
                   "tesseract_cc_util" ],
           includes = [ "cutil",
                        "classify",
                        "ccutil",
                        "ccstruct",
                        "dict"
           ])

cc_library(name = "tesseract_textord",
          srcs = [ "textord/blkocc.cpp",
                   "textord/drawedg.cpp",
                   "textord/drawtord.cpp",
                   "textord/edgblob.cpp",
                   "textord/edgloop.cpp",
                   "textord/fpchop.cpp",
                   "textord/gap_map.cpp",
                   "textord/makerow.cpp",
                   "textord/oldbasel.cpp",
                   "textord/pithsync.cpp",
                   "textord/pitsync1.cpp",
                   "textord/scanedg.cpp",
                   "textord/sortflts.cpp",
                   "textord/topitch.cpp",
                   "textord/tordmain.cpp",
                   "textord/tospace.cpp",
                   "textord/tovars.cpp",
                   "textord/underlin.cpp",
                   "textord/wordseg.cpp" ],
          deps = [ "tesseract_cc_struct",
                   "tesseract_image",
                   "tesseract_cc_util",
                   "tesseract_pageseg" ],
          includes = [ "ccstruct",
                       "wordrec",
                       "ccutil",
                       "dict",
                       "classify",
                       "image",
                       "viewer",
                       "pageseg"
                     ] )

cc_library(name = "tesseract_wordrec",
          srcs = [ "wordrec/associate.cpp",
                   "wordrec/badwords.cpp",
                   "wordrec/bestfirst.cpp",
                   "wordrec/chop.cpp",
                   "wordrec/chopper.cpp",
                   "wordrec/closed.cpp",
                   "wordrec/djmenus.cpp",
                   "wordrec/drawfx.cpp",
                   "wordrec/findseam.cpp",
                   "wordrec/gradechop.cpp",
                   "wordrec/heuristic.cpp",
                   "wordrec/makechop.cpp",
                   "wordrec/matchtab.cpp",
                   "wordrec/matrix.cpp",
                   "wordrec/metrics.cpp",
                   "wordrec/mfvars.cpp",
                   "wordrec/msmenus.cpp",
                   "wordrec/olutil.cpp",
                   "wordrec/outlines.cpp",
                   "wordrec/pieces.cpp",
                   "wordrec/plotedges.cpp",
                   "wordrec/plotseg.cpp",
                   "wordrec/render.cpp",
                   "wordrec/seam.cpp",
                   "wordrec/split.cpp",
                   "wordrec/tally.cpp",
                   "wordrec/tessinit.cpp",
                   "wordrec/tface.cpp",
                   "wordrec/wordclass.cpp",
                   "wordrec/wordrec.cpp" ],
          deps = [ "tesseract_cc_struct",
                   "tesseract_classify",
                   "tesseract_image",
                   "tesseract_dict",
                   "tesseract_c_util",
                   "tesseract_cc_util" ],
          includes = [ "ccstruct",
                       "ccutil",
                       "cutil",
                       "cstruct",
                       "classify",
                       "image",
                       "dict",
                       "viewer",
                     ] )

cc_library(name = "tesseract_pageseg",
          srcs = [ "pageseg/pageseg.cpp",
                   "pageseg/leptonica_pageseg.cpp",
                   "pageseg/leptonica_pageseg_interface.cpp" ],
          deps = [ "tesseract_image",
                   "//third_party/leptonica" ],
          includes = [ "ccstruct",
                       "ccutil",
                       "ccmain",
                       "image",
                       "textord",
                       "viewer",
                       "third_party/leptonica/includes" ],
          copts = [ "-DHAVE_LIBLEPT" ] )

cc_library(name = "tesseract_main",
           srcs = [ "ccmain/tessedit.cpp",
                    "ccmain/adaptions.cpp",
                    "ccmain/applybox.cpp",
                    "ccmain/baseapi.cpp",
                    "ccmain/blobcmp.cpp",
                    "ccmain/callnet.cpp",
                    "ccmain/charcut.cpp",
                    "ccmain/charsample.cpp",
                    "ccmain/control.cpp",
                    "ccmain/docqual.cpp",
                    "ccmain/expandblob.cpp",
                    "ccmain/fixspace.cpp",
                    "ccmain/fixxht.cpp",
                    "ccmain/imgscale.cpp",
                    "ccmain/matmatch.cpp",
                    "ccmain/osdetect.cpp",
                    "ccmain/output.cpp",
                    "ccmain/otsuthr.cpp",
                    "ccmain/pagewalk.cpp",
                    "ccmain/paircmp.cpp",
                    "ccmain/pgedit.cpp",
                    "ccmain/reject.cpp",
                    "ccmain/scaleimg.cpp",
                    "ccmain/tessbox.cpp",
                    "ccmain/tesseractclass.cpp",
                    "ccmain/tessvars.cpp",
                    "ccmain/thresholder.cpp",
                    "ccmain/tfacepp.cpp",
                    "ccmain/tstruct.cpp",
                    "ccmain/varabled.cpp",
                    "ccmain/werdit.cpp" ],
           deps = [ "tesseract_wordrec",
                    "tesseract_textord",
                    "tesseract_cc_struct",
                    "tesseract_classify",
                    "tesseract_image",
                    "tesseract_aspirin",
                    "tesseract_dict",
                    "tesseract_c_util",
                    "tesseract_cc_util",
                    "//third_party/tiff",
                    "//third_party/leptonica",
                    "scrollview_lib" ],
           includes = [ "ccutil",
                        "ccstruct",
                        "image",
                        "viewer",
                        "dict",
                        "classify",
                        "wordrec",
                        "cutil",
                        "textord",
                        "aspirin",
                        "ccmain",
                        "third_party/tiff",
                        "third_party/leptonica/includes"
                        ],
           defines = [ "HAVE_LIBTIFF", "HAVE_LIBLEPT" ]
#                     copts = [ "-DHAVE_LIBTIFF", "-DHAVE_LIBLEPT" ]
           )

cc_library(name = "tesseract_training",
          srcs = [ "training/name2char.cpp",
                   "training/commontraining.cpp",
                   "training/mergenf.cpp",
                 ],
          deps = [ "tesseract_textord",
                   "tesseract_c_util",
                   "tesseract_cc_util" ],
          includes = [ "cutil",
                       "ccutil",
                       "dict",
                       "training",
                       "classify"
                     ] )

#-----------------------------------------------------------------------------

# BINARIES

cc_binary(name = "tesseract",
          srcs = [ "ccmain/tesseractmain.cpp" ],
          deps = [ "tesseract_main",
                   "//third_party/tiff" ],
          includes = [ "ccutil",
                       "ccstruct",
                       "image",
                       "viewer",
                       "dict",
                       "classify",
                       "wordrec",
                       "cutil",
                       "textord",
                       "aspirin",
                       "ccmain"
                     ],
         copts = [ "-DHAVE_LIBTIFF" ]
         )

cc_binary(name = "cntraining",
          srcs = [ "training/cntraining.cpp" ],
          deps = [ "tesseract_training",
                   "tesseract_classify" ],
          includes = [ "ccutil",
                       "cutil",
                       "viewer",
                       "dict",
                       "classify",
                     ] )

cc_binary(name = "mftraining",
          srcs = [ "training/mftraining.cpp",
                 ],
          deps = [ "tesseract_training",
                   "tesseract_classify" ],
          includes = [ "ccutil",
                       "cutil",
                       "viewer",
                       "dict",
                       "classify",
                     ] )

cc_binary(name = "svpaint",
          srcs = [ "viewer/svpaint.cpp"],
          deps = [ "scrollview_lib"],
         )

cc_binary(name = "unicharset_extractor",
          srcs = [ "training/unicharset_extractor.cpp"],
          deps = [ "tesseract_cc_util"],
          includes = [ "ccutil"
                     ] )

cc_binary(name = "wordlist2dawg",
          srcs = [ "training/wordlist2dawg.cpp"],
          deps = [ "tesseract_dict",
                   "tesseract_classify",
                   "tesseract_cc_util",
                   "tesseract_c_util"],
          includes = [ "ccutil",
                       "cutil",
                       "dict",
                       "classify"
                     ] )

#-----------------------------------------------------------------------------
# Data

# export configuration data for Blaze compliance
exports_files(["tessdata"])

#-----------------------------------------------------------------------------
# UNITTESTS
